[lld] r281494 - [ELF] Do not adjust TLS symbol value when produce relocatable object
Simon Atanasyan via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 14 09:26:19 PDT 2016
Author: atanasyan
Date: Wed Sep 14 11:26:19 2016
New Revision: 281494
URL: http://llvm.org/viewvc/llvm-project?rev=281494&view=rev
Log:
[ELF] Do not adjust TLS symbol value when produce relocatable object
When the linker generates a relocatable object there is no TLS program
header and we should not adjust TLS symbols value.
Added:
lld/trunk/test/ELF/tls-relocatable.s
Modified:
lld/trunk/ELF/Symbols.cpp
Modified: lld/trunk/ELF/Symbols.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=281494&r1=281493&r2=281494&view=diff
==============================================================================
--- lld/trunk/ELF/Symbols.cpp (original)
+++ lld/trunk/ELF/Symbols.cpp Wed Sep 14 11:26:19 2016
@@ -59,7 +59,7 @@ static typename ELFT::uint getSymVA(cons
Addend = 0;
}
uintX_t VA = (SC->OutSec ? SC->OutSec->getVA() : 0) + SC->getOffset(Offset);
- if (D.isTls())
+ if (D.isTls() && !Config->Relocatable)
return VA - Out<ELFT>::TlsPhdr->p_vaddr;
return VA;
}
Added: lld/trunk/test/ELF/tls-relocatable.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/tls-relocatable.s?rev=281494&view=auto
==============================================================================
--- lld/trunk/test/ELF/tls-relocatable.s (added)
+++ lld/trunk/test/ELF/tls-relocatable.s Wed Sep 14 11:26:19 2016
@@ -0,0 +1,21 @@
+// REQUIRES: x86
+// RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %s -o %t.o
+// RUN: ld.lld %t.o -r -o %tr.o
+// RUN: ld.lld %tr.o -shared -o %t1
+// RUN: llvm-readobj -t %t1 | FileCheck %s
+
+// CHECK: Symbol {
+// CHECK: Name: tls0
+// CHECK-NEXT: Value: 0x0
+// CHECK-NEXT: Size: 0
+// CHECK-NEXT: Binding: Global
+// CHECK-NEXT: Type: TLS
+// CHECK-NEXT: Other: 0
+// CHECK-NEXT: Section: .tdata
+// CHECK-NEXT: }
+
+.type tls0, at object
+.section .tdata,"awT", at progbits
+.globl tls0
+tls0:
+ .long 0
More information about the llvm-commits
mailing list