diff options
author | Konrad Kleine <kkleine@redhat.com> | 2019-09-11 14:33:37 +0000 |
---|---|---|
committer | Konrad Kleine <kkleine@redhat.com> | 2019-09-11 14:33:37 +0000 |
commit | 2f3884ca1d8953a6ac811c0e722f13ef397454b7 (patch) | |
tree | 31b599206e591b20bb63989b6262502f85b07d64 /lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | |
parent | d44c4a71df9d6294c944542598ec1085cd4d5add (diff) | |
download | bcm5719-llvm-2f3884ca1d8953a6ac811c0e722f13ef397454b7.tar.gz bcm5719-llvm-2f3884ca1d8953a6ac811c0e722f13ef397454b7.zip |
Revert "[LLDB][ELF] Load both, .symtab and .dynsym sections"
This reverts commit 3a4781bbf4f39a25562b4c61c9a9ab2483a96b41.
llvm-svn: 371625
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp index 20e26f033d1..e507f0e4d74 100644 --- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -2647,31 +2647,21 @@ Symtab *ObjectFileELF::GetSymtab() { // smaller version of the symtab that only contains global symbols. The // information found in the dynsym is therefore also found in the symtab, // while the reverse is not necessarily true. - // One exception to the above rule is when we have minidebuginfo embedded - // into a compressed .gnu_debugdata section. This section contains a .symtab - // from which all symbols already contained in the .dynsym are stripped. Section *symtab = section_list->FindSectionByType(eSectionTypeELFSymbolTable, true).get(); + if (!symtab) { + // The symtab section is non-allocable and can be stripped, so if it + // doesn't exist then use the dynsym section which should always be + // there. + symtab = + section_list->FindSectionByType(eSectionTypeELFDynamicSymbols, true) + .get(); + } if (symtab) { m_symtab_up.reset(new Symtab(symtab->GetObjectFile())); symbol_id += ParseSymbolTable(m_symtab_up.get(), symbol_id, symtab); } - // The symtab section is non-allocable and can be stripped, while the dynsym - // section which should always be always be there. If both exist we load - // both to support the minidebuginfo case. Otherwise we just load the dynsym - // section. - Section *dynsym = - section_list->FindSectionByType(eSectionTypeELFDynamicSymbols, true) - .get(); - if (dynsym) { - if (!m_symtab_up) { - auto sec = symtab ? symtab : dynsym; - m_symtab_up.reset(new Symtab(sec->GetObjectFile())); - } - symbol_id += ParseSymbolTable(m_symtab_up.get(), symbol_id, dynsym); - } - // DT_JMPREL // If present, this entry's d_ptr member holds the address of // relocation |