aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
diff options
context:
space:
mode:
authorGeorge Wright <wrightgeorge@google.com>2022-09-13 22:20:54 +0000
committerDavid Blaikie <dblaikie@gmail.com>2022-09-13 22:30:51 +0000
commit13f1bc41888e7d6555c532ba5fa925b9fe3e6b2f (patch)
tree27b81d8d08e38728037bd4dec30bafa84d35d89b /llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
parent78865050620e6b6b90be7e868ffe5d5e67159856 (diff)
downloadllvm-13f1bc41888e7d6555c532ba5fa925b9fe3e6b2f.zip
llvm-13f1bc41888e7d6555c532ba5fa925b9fe3e6b2f.tar.gz
llvm-13f1bc41888e7d6555c532ba5fa925b9fe3e6b2f.tar.bz2
Don't populate the symbol table with symbols that don't belong to a section with the flag SHF_ALLOC
When populating the symbol table for an ELF object file, don't insert any symbols that come from ELF sections which don't have runtime allocated memory (typically debugging symbols). Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D133795
Diffstat (limited to 'llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp')
-rw-r--r--llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
index d8ee926..5c65742 100644
--- a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
+++ b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
@@ -168,6 +168,11 @@ Error SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol,
return SymbolTypeOrErr.takeError();
SymbolRef::Type SymbolType = *SymbolTypeOrErr;
if (Obj.isELF()) {
+ // Ignore any symbols coming from sections that don't have runtime
+ // allocated memory.
+ if ((elf_section_iterator(*Sec)->getFlags() & ELF::SHF_ALLOC) == 0)
+ return Error::success();
+
// Allow function and data symbols. Additionally allow STT_NONE, which are
// common for functions defined in assembly.
uint8_t Type = ELFSymbolRef(Symbol).getELFType();