diff options
| author | Jordan Rupprecht <rupprecht@google.com> | 2019-05-24 04:02:05 +0000 |
|---|---|---|
| committer | Jordan Rupprecht <rupprecht@google.com> | 2019-05-24 04:02:05 +0000 |
| commit | 01d6173667f77722a31070fd186a50d3b3740207 (patch) | |
| tree | 6e6b175645b46b5ffea41048fe76cdcbee6cd209 /llvm/tools/llvm-nm/llvm-nm.cpp | |
| parent | a38ddc36fdc7a18795e067cb68ec770f3fc5a982 (diff) | |
| download | bcm5719-llvm-01d6173667f77722a31070fd186a50d3b3740207.tar.gz bcm5719-llvm-01d6173667f77722a31070fd186a50d3b3740207.zip | |
[llvm-nm] Fix Bug 41353 - unique symbols printed as D instead of u
Summary:
https://bugs.llvm.org/show_bug.cgi?id=41353
I'm new to LLVM and C++ so please do not hesitate to iterate with me on this fix.
Patch by Mike Pozulp!
Reviewers: rupprecht, zbrid, grimar, jhenderson
Reviewed By: rupprecht, jhenderson
Subscribers: jhenderson, chrisjackson, MaskRay, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61117
llvm-svn: 361595
Diffstat (limited to 'llvm/tools/llvm-nm/llvm-nm.cpp')
| -rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index f21978d50cc..871ca638d9d 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -894,6 +894,9 @@ static char getSymbolNMTypeChar(ELFObjectFileBase &Obj, return '?'; } + if (SymI->getBinding() == ELF::STB_GNU_UNIQUE) + return 'u'; + elf_section_iterator SecI = *SecIOrErr; if (SecI != Obj.section_end()) { uint32_t Type = SecI->getType(); @@ -1119,10 +1122,13 @@ static char getNMSectionTagAndName(SymbolicFile &Obj, basic_symbol_iterator I, else Ret = getSymbolNMTypeChar(cast<ELFObjectFileBase>(Obj), I); - if (Symflags & object::SymbolRef::SF_Global) - Ret = toupper(Ret); + if (!(Symflags & object::SymbolRef::SF_Global)) + return Ret; + + if (Obj.isELF() && ELFSymbolRef(*I).getBinding() == ELF::STB_GNU_UNIQUE) + return Ret; - return Ret; + return toupper(Ret); } // getNsectForSegSect() is used to implement the Mach-O "-s segname sectname" |

