diff options
Diffstat (limited to 'lldb/source/Symbol/Symtab.cpp')
-rw-r--r-- | lldb/source/Symbol/Symtab.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/lldb/source/Symbol/Symtab.cpp b/lldb/source/Symbol/Symtab.cpp index 31db57289fd..b20504addec 100644 --- a/lldb/source/Symbol/Symtab.cpp +++ b/lldb/source/Symbol/Symtab.cpp @@ -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 (addr_t file_addr, const uint32_t* index 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 (addr_t file_addr) 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; } |