diff options
author | Fangrui Song <maskray@google.com> | 2019-12-21 21:53:22 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-12-25 09:47:53 -0800 |
commit | ba1cdba4c48cfee5e400e103af8353f4901ecb9a (patch) | |
tree | 5ff6f3bca211351d7d2a9942b8cd0fa8a6da3861 /llvm/tools/llvm-nm/llvm-nm.cpp | |
parent | aff6c9db9a96b763a03bde729894d3e1dcfb0be5 (diff) | |
download | bcm5719-llvm-ba1cdba4c48cfee5e400e103af8353f4901ecb9a.tar.gz bcm5719-llvm-ba1cdba4c48cfee5e400e103af8353f4901ecb9a.zip |
[llvm-nm] Display STT_GNU_IFUNC as 'i'
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D71803
Diffstat (limited to 'llvm/tools/llvm-nm/llvm-nm.cpp')
-rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index ee55722dc13..107d62b1f2b 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -1133,15 +1133,18 @@ static char getNMSectionTagAndName(SymbolicFile &Obj, basic_symbol_iterator I, Ret = getSymbolNMTypeChar(*MachO, I); else if (WasmObjectFile *Wasm = dyn_cast<WasmObjectFile>(&Obj)) Ret = getSymbolNMTypeChar(*Wasm, I); - else - Ret = getSymbolNMTypeChar(cast<ELFObjectFileBase>(Obj), I); + else if (ELFObjectFileBase *ELF = dyn_cast<ELFObjectFileBase>(&Obj)) { + if (ELFSymbolRef(*I).getELFType() == ELF::STT_GNU_IFUNC) + return 'i'; + Ret = getSymbolNMTypeChar(*ELF, I); + if (ELFSymbolRef(*I).getBinding() == ELF::STB_GNU_UNIQUE) + return Ret; + } else + llvm_unreachable("unknown binary format"); if (!(Symflags & object::SymbolRef::SF_Global)) return Ret; - if (Obj.isELF() && ELFSymbolRef(*I).getBinding() == ELF::STB_GNU_UNIQUE) - return Ret; - return toupper(Ret); } |