summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
diff options
context:
space:
mode:
authorKonrad Kleine <kkleine@redhat.com>2019-09-11 14:33:37 +0000
committerKonrad Kleine <kkleine@redhat.com>2019-09-11 14:33:37 +0000
commit2f3884ca1d8953a6ac811c0e722f13ef397454b7 (patch)
tree31b599206e591b20bb63989b6262502f85b07d64 /lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
parentd44c4a71df9d6294c944542598ec1085cd4d5add (diff)
downloadbcm5719-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.cpp26
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
OpenPOWER on IntegriCloud