[Lldb-commits] [lldb] r258043 - Revert "Unconditionally accept symbol sizes from elf"

Tamas Berghammer via lldb-commits lldb-commits at lists.llvm.org
Mon Jan 18 03:49:26 PST 2016


Author: tberghammer
Date: Mon Jan 18 05:49:18 2016
New Revision: 258043

URL: http://llvm.org/viewvc/llvm-project?rev=258043&view=rev
Log:
Revert "Unconditionally accept symbol sizes from elf"

It causes issues for i386 when compiling with gcc-4.9.2

This reverts commit e248214a3eab8e244095f97d1996c991cb988cc4.

Modified:
    lldb/trunk/include/lldb/Symbol/Symbol.h
    lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
    lldb/trunk/source/Symbol/Symbol.cpp
    lldb/trunk/source/Symbol/Symtab.cpp

Modified: lldb/trunk/include/lldb/Symbol/Symbol.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/Symbol.h?rev=258043&r1=258042&r2=258043&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/Symbol.h (original)
+++ lldb/trunk/include/lldb/Symbol/Symbol.h Mon Jan 18 05:49:18 2016
@@ -383,9 +383,6 @@ public:
                     bool prefer_file_cache,
                     Stream &strm);
 
-    bool
-    ContainsFileAddress (lldb::addr_t file_addr) const;
-
 protected:
     // This is the internal guts of ResolveReExportedSymbol, it assumes reexport_name is not null, and that module_spec
     // is valid.  We track the modules we've already seen to make sure we don't get caught in a cycle.

Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp?rev=258043&r1=258042&r2=258043&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (original)
+++ lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp Mon Jan 18 05:49:18 2016
@@ -2295,7 +2295,7 @@ ObjectFileELF::ParseSymbols (Symtab *sym
                 symbol_section_sp,  // Section in which this symbol is defined or null.
                 symbol_value,       // Offset in section or symbol value.
                 symbol.st_size),    // Size in bytes of this symbol.
-            true,                   // Symbol size is valid
+            symbol.st_size != 0,    // Size is valid if it is not 0
             has_suffix,             // Contains linker annotations?
             flags);                 // Symbol flags.
         symtab->AddSymbol(dc_symbol);
@@ -2304,9 +2304,7 @@ ObjectFileELF::ParseSymbols (Symtab *sym
 }
 
 unsigned
-ObjectFileELF::ParseSymbolTable(Symtab *symbol_table,
-                                user_id_t start_id,
-                                lldb_private::Section *symtab)
+ObjectFileELF::ParseSymbolTable(Symtab *symbol_table, user_id_t start_id, lldb_private::Section *symtab)
 {
     if (symtab->GetObjectFile() != this)
     {

Modified: lldb/trunk/source/Symbol/Symbol.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Symbol.cpp?rev=258043&r1=258042&r2=258043&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/Symbol.cpp (original)
+++ lldb/trunk/source/Symbol/Symbol.cpp Mon Jan 18 05:49:18 2016
@@ -737,10 +737,3 @@ Symbol::GetDisassembly (const ExecutionC
     }
     return false;
 }
-
-bool
-Symbol::ContainsFileAddress (lldb::addr_t file_addr) const
-{
-    return m_addr_range.ContainsFileAddress(file_addr);
-}
-

Modified: lldb/trunk/source/Symbol/Symtab.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Symtab.cpp?rev=258043&r1=258042&r2=258043&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/Symtab.cpp (original)
+++ lldb/trunk/source/Symbol/Symtab.cpp Mon Jan 18 05:49:18 2016
@@ -971,11 +971,9 @@ Symtab::InitAddressIndexes()
                     if (end_section_file_addr > symbol_file_addr)
                     {
                         Symbol &symbol = m_symbols[entry.data];
-                        if (!symbol.GetByteSizeIsValid())
-                        {
-                            symbol.SetByteSize(end_section_file_addr - symbol_file_addr);
-                            symbol.SetSizeIsSynthesized(true);
-                        }
+
+                        symbol.SetByteSize(end_section_file_addr - symbol_file_addr);
+                        symbol.SetSizeIsSynthesized(true);
                     }
                 }
             }
@@ -1041,15 +1039,18 @@ Symtab::FindSymbolContainingFileAddress
             return info.match_symbol;
         }
 
-        if (!info.match_symbol->GetByteSizeIsValid())
+        const size_t symbol_byte_size = info.match_symbol->GetByteSize();
+        
+        if (symbol_byte_size == 0)
         {
-            // The matched symbol dosn't have a valid byte size so lets just go with that match...
+            // We weren't able to find the size of the symbol so lets just go 
+            // with that match we found in our search...
             return info.match_symbol;
         }
 
         // We were able to figure out a symbol size so lets make sure our 
         // offset puts "file_addr" in the symbol's address range.
-        if (info.match_offset < info.match_symbol->GetByteSize())
+        if (info.match_offset < symbol_byte_size)
             return info.match_symbol;
     }
     return nullptr;
@@ -1065,11 +1066,7 @@ Symtab::FindSymbolContainingFileAddress
 
     const FileRangeToIndexMap::Entry *entry = m_file_addr_to_index.FindEntryThatContains(file_addr);
     if (entry)
-    {
-        Symbol* symbol = SymbolAtIndex(entry->data);
-        if (symbol->ContainsFileAddress(file_addr))
-            return symbol;
-    }
+        return SymbolAtIndex(entry->data);
     return nullptr;
 }
 




More information about the lldb-commits mailing list