summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-nm/llvm-nm.cpp
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2019-12-21 21:53:22 -0800
committerFangrui Song <maskray@google.com>2019-12-25 09:47:53 -0800
commitba1cdba4c48cfee5e400e103af8353f4901ecb9a (patch)
tree5ff6f3bca211351d7d2a9942b8cd0fa8a6da3861 /llvm/tools/llvm-nm/llvm-nm.cpp
parentaff6c9db9a96b763a03bde729894d3e1dcfb0be5 (diff)
downloadbcm5719-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.cpp13
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);
}
OpenPOWER on IntegriCloud