diff options
author | Fangrui Song <i@maskray.me> | 2020-03-06 18:51:39 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2020-03-13 08:02:36 -0700 |
commit | e799405e5368033d602f531fcebb81229471cec0 (patch) | |
tree | 36d42e52ba2647c464f7f0cbbca5cd9f6becad89 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | 0bd3da5bfaeee377d4a009887aa20f0ab81c80ea (diff) | |
download | llvm-e799405e5368033d602f531fcebb81229471cec0.zip llvm-e799405e5368033d602f531fcebb81229471cec0.tar.gz llvm-e799405e5368033d602f531fcebb81229471cec0.tar.bz2 |
[llvm-objdump] --syms: print 'i' for STT_GNU_IFUNC
Reviewed By: grimar, Higuoxing, jhenderson
Differential Revision: https://reviews.llvm.org/D75793
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index fb3cdfb..e249442 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1899,6 +1899,11 @@ void printSymbolTable(const ObjectFile *O, StringRef ArchiveName, char GlobLoc = ' '; if ((Section != O->section_end() || Absolute) && !Weak) GlobLoc = Global ? 'g' : 'l'; + char IFunc = ' '; + if (auto *ELF = dyn_cast<ELFObjectFileBase>(O)) { + if (ELFSymbolRef(*I).getELFType() == ELF::STT_GNU_IFUNC) + IFunc = 'i'; + } char Debug = (Type == SymbolRef::ST_Debug || Type == SymbolRef::ST_File) ? 'd' : ' '; char FileFunc = ' '; @@ -1917,7 +1922,7 @@ void printSymbolTable(const ObjectFile *O, StringRef ArchiveName, << (Weak ? 'w' : ' ') // Weak? << ' ' // Constructor. Not supported yet. << ' ' // Warning. Not supported yet. - << ' ' // Indirect reference to another symbol. + << IFunc << Debug // Debugging (d) or dynamic (D) symbol. << FileFunc // Name of function (F), file (f) or object (O). << ' '; |