[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