diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 784d66805d63aa..f29282ff705a80 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -224,6 +224,7 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { case MCSA_ELF_TypeGnuUniqueObject: Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_OBJECT)); Symbol->setBinding(ELF::STB_GNU_UNIQUE); + getAssembler().getWriter().markGnuAbi(); break; case MCSA_Global: diff --git a/llvm/test/MC/ELF/gnu-type.s b/llvm/test/MC/ELF/gnu-type.s index 19029e48ee9679..9494b7dac58ffb 100644 --- a/llvm/test/MC/ELF/gnu-type.s +++ b/llvm/test/MC/ELF/gnu-type.s @@ -29,10 +29,3 @@ .type string_type, "function" // CHECK: .type string_type,@function - - .type special gnu_unique_object -// CHECK: .type special,@gnu_unique_object - - .type comma_special, gnu_unique_object -// CHECK: .type comma_special,@gnu_unique_object - diff --git a/llvm/test/MC/ELF/gnu-unique.s b/llvm/test/MC/ELF/gnu-unique.s new file mode 100644 index 00000000000000..8948b33b9afbd1 --- /dev/null +++ b/llvm/test/MC/ELF/gnu-unique.s @@ -0,0 +1,13 @@ +# RUN: llvm-mc -triple=x86_64 %s | FileCheck %s --check-prefix=ASM +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s | llvm-readelf -h -s - | FileCheck %s --check-prefix=OBJ + +# ASM: .type unique,@gnu_unique_object + +# OBJ: OS/ABI: UNIX - GNU +# OBJ: Type Bind Vis Ndx Name +# OBJ: OBJECT UNIQUE DEFAULT [[#]] unique + +.data +.globl unique +.type unique, @gnu_unique_object +unique: