summaryrefslogtreecommitdiffstats
path: root/lldb/source/Symbol/Symtab.cpp
diff options
context:
space:
mode:
authorMatt Kopec <Matt.Kopec@intel.com>2013-04-22 17:02:04 +0000
committerMatt Kopec <Matt.Kopec@intel.com>2013-04-22 17:02:04 +0000
commit5e6a5d6ce5a82625c1def4caf30363a183149863 (patch)
tree7281e5b18acefeb34dc8e42dd34d9c9d9362d153 /lldb/source/Symbol/Symtab.cpp
parentf6675c3d3eed394dd3b5de788ed1fe1d55917e6b (diff)
downloadbcm5719-llvm-5e6a5d6ce5a82625c1def4caf30363a183149863.tar.gz
bcm5719-llvm-5e6a5d6ce5a82625c1def4caf30363a183149863.zip
Fix for expression/breakpoint setting of gnu indirect functions.
Do this until we are able to resolve these symbols to their actual implementations without needing runtime support. llvm-svn: 180029
Diffstat (limited to 'lldb/source/Symbol/Symtab.cpp')
-rw-r--r--lldb/source/Symbol/Symtab.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/lldb/source/Symbol/Symtab.cpp b/lldb/source/Symbol/Symtab.cpp
index 3d91b507dbd..3f407b92665 100644
--- a/lldb/source/Symbol/Symtab.cpp
+++ b/lldb/source/Symbol/Symtab.cpp
@@ -1125,7 +1125,31 @@ Symtab::FindFunctionSymbols (const ConstString &name,
if (name_type_mask & (eFunctionNameTypeBase | eFunctionNameTypeFull))
{
- FindAllSymbolsWithNameAndType (name, eSymbolTypeCode, symbol_indexes);
+ std::vector<uint32_t> temp_symbol_indexes;
+ FindAllSymbolsWithNameAndType (name, eSymbolTypeAny, temp_symbol_indexes);
+
+ unsigned temp_symbol_indexes_size = temp_symbol_indexes.size();
+ if (temp_symbol_indexes_size > 0)
+ {
+ Mutex::Locker locker (m_mutex);
+ for (unsigned i = 0; i < temp_symbol_indexes_size; i++)
+ {
+ SymbolContext sym_ctx;
+ sym_ctx.symbol = SymbolAtIndex (temp_symbol_indexes[i]);
+ if (sym_ctx.symbol)
+ {
+ switch (sym_ctx.symbol->GetType())
+ {
+ case eSymbolTypeCode:
+ case eSymbolTypeResolver:
+ symbol_indexes.push_back(temp_symbol_indexes[i]);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
}
if (name_type_mask & eFunctionNameTypeBase)
OpenPOWER on IntegriCloud