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; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits