[Lldb-commits] [lldb] r180029 - Fix for expression/breakpoint setting of gnu indirect functions.

Matt Kopec Matt.Kopec at intel.com
Mon Apr 22 10:02:05 PDT 2013


Author: mkopec
Date: Mon Apr 22 12:02:04 2013
New Revision: 180029

URL: http://llvm.org/viewvc/llvm-project?rev=180029&view=rev
Log:
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.

Modified:
    lldb/trunk/source/Symbol/Symtab.cpp

Modified: lldb/trunk/source/Symbol/Symtab.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Symtab.cpp?rev=180029&r1=180028&r2=180029&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/Symtab.cpp (original)
+++ lldb/trunk/source/Symbol/Symtab.cpp Mon Apr 22 12:02:04 2013
@@ -1125,7 +1125,31 @@ Symtab::FindFunctionSymbols (const Const
 
     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)





More information about the lldb-commits mailing list