diff options
author | Fangrui Song <maskray@google.com> | 2020-03-06 21:00:15 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2020-03-13 08:04:09 -0700 |
commit | 7b74b0d4e54239de928b42b334446b39faf05144 (patch) | |
tree | 362eeeb586578ee55a962e5ce416d287a56b5f8e /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | e799405e5368033d602f531fcebb81229471cec0 (diff) | |
download | llvm-7b74b0d4e54239de928b42b334446b39faf05144.zip llvm-7b74b0d4e54239de928b42b334446b39faf05144.tar.gz llvm-7b74b0d4e54239de928b42b334446b39faf05144.tar.bz2 |
[llvm-objdump] --syms: print 'u' for STB_GNU_UNIQUE
GCC when configured with --enable-gnu-unique (default on glibc>=2.11)
emits STB_GNU_UNIQUE for certain objects which are otherwise emitted as
STT_OBJECT, such as an inline function's static local variable or its
guard variable, and a static data member of a template.
Clang does not implement -fgnu-unique.
Implementing it as a binding is strange and the feature itself is
considered by some as a misfeature.
Reviewed By: grimar, jhenderson
Differential Revision: https://reviews.llvm.org/D75797
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index e249442..4aad0b9 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1903,6 +1903,8 @@ void printSymbolTable(const ObjectFile *O, StringRef ArchiveName, if (auto *ELF = dyn_cast<ELFObjectFileBase>(O)) { if (ELFSymbolRef(*I).getELFType() == ELF::STT_GNU_IFUNC) IFunc = 'i'; + if (ELFSymbolRef(*I).getBinding() == ELF::STB_GNU_UNIQUE) + GlobLoc = 'u'; } char Debug = (Type == SymbolRef::ST_Debug || Type == SymbolRef::ST_File) ? 'd' : ' '; |