summaryrefslogtreecommitdiffstats
path: root/lldb/source/Symbol/Symtab.cpp
diff options
context:
space:
mode:
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