From ed3476b79f8aa9ac1e8a5fa821b28daf01c75c28 Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Fri, 2 Oct 2015 21:57:52 +0000 Subject: [PATCH] [elf2] Add STB_GNU_UNIQUE support. llvm-svn: 249193 --- lld/ELF/InputFiles.cpp | 1 + lld/test/elf2/gnu-unique.s | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 lld/test/elf2/gnu-unique.s diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index 7e3e1bbbb8a7..3ca448174208 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -181,6 +181,7 @@ SymbolBody *elf2::ObjectFile::createSymbolBody(StringRef StringTable, error("unexpected binding"); case STB_GLOBAL: case STB_WEAK: + case STB_GNU_UNIQUE: return new (Alloc) DefinedRegular(Name, *Sym, *Sections[SecIndex]); } } diff --git a/lld/test/elf2/gnu-unique.s b/lld/test/elf2/gnu-unique.s new file mode 100644 index 000000000000..49496d60cc10 --- /dev/null +++ b/lld/test/elf2/gnu-unique.s @@ -0,0 +1,24 @@ +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t +// RUN: lld -flavor gnu2 %t -shared -o %tout.so +// RUN: llvm-readobj -t -dyn-symbols %tout.so | FileCheck %s +// REQUIRES: x86 + +// Check that STB_GNU_UNIQUE is treated as a global and ends up in the dynamic +// symbol table as STB_GNU_UNIQUE. + +.global _start +.text +_start: + +.data +.type symb, @gnu_unique_object +symb: + +# CHECK: Name: symb@ +# CHECK-NEXT: Value: +# CHECK-NEXT: Size: 0 +# CHECK-NEXT: Binding: Unique +# CHECK-NEXT: Type: Object +# CHECK-NEXT: Other: 0 +# CHECK-NEXT: Section: .data +# CHECK-NEXT: }