[PATCH] D30441: Fix wrong TLS symbol values.

Rui Ueyama via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 27 19:49:39 PST 2017


ruiu created this revision.

I do not fully understand why we had these values in the tests, but
the new value matches what ld.bfd and ld.gold set, so I guess that
was just a mistake.


https://reviews.llvm.org/D30441

Files:
  lld/ELF/SyntheticSections.cpp
  lld/test/ELF/gc-debuginfo-tls.s
  lld/test/ELF/mips-tls-64.s
  lld/test/ELF/mips-tls-hilo.s
  lld/test/ELF/mips-tls.s


Index: lld/test/ELF/mips-tls.s
===================================================================
--- lld/test/ELF/mips-tls.s
+++ lld/test/ELF/mips-tls.s
@@ -27,7 +27,7 @@
 # DIS-NEXT:  30020 00000000 00000001 00000000 00000001
 # DIS-NEXT:  30030 ffff8004 ffff9004
 
-# DIS: 00040000 l       .tdata          00000000 loc
+# DIS: 00000001 l       .tdata          00000000 loc
 # DIS: 00000004 g       .tdata          00000000 bar
 # DIS: 00000000 g       *UND*           00000000 foo
 
Index: lld/test/ELF/mips-tls-hilo.s
===================================================================
--- lld/test/ELF/mips-tls-hilo.s
+++ lld/test/ELF/mips-tls-hilo.s
@@ -21,7 +21,7 @@
 # DIS-NEXT:    2000c:   24 62 90 00   addiu   $2, $3, -28672
 #                       %lo(loc0 - .tdata - 0x7000) --^
 
-# DIS: 00040000 l       .tdata          00000000 loc0
+# DIS: 00000000 l       .tdata          00000000 loc0
 
 # CHECK:      Relocations [
 # CHECK-NEXT: ]
Index: lld/test/ELF/mips-tls-64.s
===================================================================
--- lld/test/ELF/mips-tls-64.s
+++ lld/test/ELF/mips-tls-64.s
@@ -29,7 +29,7 @@
 # DIS-NEXT:  30040 00000000 00000000 00000000 00000001
 # DIS-NEXT:  30050 ffffffff ffff8004 ffffffff ffff9004
 
-# DIS: 0000000000040000 l       .tdata          00000000 loc
+# DIS: 0000000000000000 l       .tdata          00000000 loc
 # DIS: 0000000000000004 g       .tdata          00000000 bar
 # DIS: 0000000000000000 g       *UND*           00000000 foo
 
Index: lld/test/ELF/gc-debuginfo-tls.s
===================================================================
--- lld/test/ELF/gc-debuginfo-tls.s
+++ lld/test/ELF/gc-debuginfo-tls.s
@@ -6,7 +6,7 @@
 
 # NOGC: Symbol {
 # NOGC:   Name: (0)
-# NOGC:   Value: 0x1000
+# NOGC:   Value: 0x0
 # NOGC:   Size: 0
 # NOGC:   Binding: Local
 # NOGC:   Type: TLS
Index: lld/ELF/SyntheticSections.cpp
===================================================================
--- lld/ELF/SyntheticSections.cpp
+++ lld/ELF/SyntheticSections.cpp
@@ -1389,14 +1389,6 @@
 
     if (const OutputSection *OutSec = getOutputSection(Body)) {
       ESym->st_shndx = OutSec->SectionIndex;
-
-      // This piece of code should go away as it doesn't make sense,
-      // but we want to keep it tentatively because some tests for TLS
-      // variable depends on this. We should fix the test and remove
-      // this code.
-      if (Body->isLocal())
-        if (auto *DS = dyn_cast<DefinedRegular<ELFT>>(Body))
-          ESym->st_value = OutSec->Addr + DS->Section->getOffset(*DS);
     } else if (isa<DefinedRegular<ELFT>>(Body)) {
       ESym->st_shndx = SHN_ABS;
     } else if (isa<DefinedCommon>(Body)) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30441.89964.patch
Type: text/x-patch
Size: 2683 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170228/5746ca01/attachment.bin>


More information about the llvm-commits mailing list