diff --git a/llvm/test/tools/llvm-objdump/ELF/symbol-table.test b/llvm/test/tools/llvm-objdump/ELF/symbol-table.test --- a/llvm/test/tools/llvm-objdump/ELF/symbol-table.test +++ b/llvm/test/tools/llvm-objdump/ELF/symbol-table.test @@ -25,7 +25,7 @@ # CHECK-NEXT:0000000000000000 *UND* 0000000000000000 reserve # CHECK-NEXT:0000000000000000 g *ABS* 0000000000000000 abs # CHECK-NEXT:0000000000000000 *COM* 0000000000000000 common2 -# CHECK-NEXT:0000000000000000 g O .data 0000000000000000 gnu_unique +# CHECK-NEXT:0000000000000000 u O .data 0000000000000000 gnu_unique # CHECK-NEXT:0000000000000000 g .data 0000000000000000 invalid_binding # CHECK-NEXT:0000000000000000 g .data 0000000000000000 STB_HIOS # CHECK-NEXT:0000000000000000 g .data 0000000000000000 STB_LOPROC diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1903,6 +1903,8 @@ if (auto *ELF = dyn_cast(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' : ' ';