diff options
| author | Matt Kopec <Matt.Kopec@intel.com> | 2013-04-22 17:02:04 +0000 |
|---|---|---|
| committer | Matt Kopec <Matt.Kopec@intel.com> | 2013-04-22 17:02:04 +0000 |
| commit | 5e6a5d6ce5a82625c1def4caf30363a183149863 (patch) | |
| tree | 7281e5b18acefeb34dc8e42dd34d9c9d9362d153 /lldb/source/Symbol/Symtab.cpp | |
| parent | f6675c3d3eed394dd3b5de788ed1fe1d55917e6b (diff) | |
| download | bcm5719-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.cpp | 26 |
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) |

