[lld] r265202 - Don't create a PLT when we optimize out the plt use.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 1 16:36:57 PDT 2016


Author: rafael
Date: Fri Apr  1 18:36:56 2016
New Revision: 265202

URL: http://llvm.org/viewvc/llvm-project?rev=265202&view=rev
Log:
Don't create a PLT when we optimize out the plt use.

Added:
    lld/trunk/test/ELF/tls-opt-no-plt.s
Modified:
    lld/trunk/ELF/Writer.cpp

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=265202&r1=265201&r2=265202&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Fri Apr  1 18:36:56 2016
@@ -302,7 +302,7 @@ static unsigned handleTlsRelocation(uint
       return 1;
     }
     if (!Body.isPreemptible())
-      return 1;
+      return 2;
     if (!Body.isInGot()) {
       Out<ELFT>::Got->addEntry(Body);
       Out<ELFT>::RelaDyn->addReloc(

Added: lld/trunk/test/ELF/tls-opt-no-plt.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/tls-opt-no-plt.s?rev=265202&view=auto
==============================================================================
--- lld/trunk/test/ELF/tls-opt-no-plt.s (added)
+++ lld/trunk/test/ELF/tls-opt-no-plt.s Fri Apr  1 18:36:56 2016
@@ -0,0 +1,24 @@
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/tls-opt-gdie.s -o %t2.o
+// RUN: ld.lld %t2.o -o %t2.so -shared
+// RUN: ld.lld %t.o %t2.so -o %t.exe
+// RUN: llvm-readobj -s %t.exe | FileCheck %s
+
+// CHECK-NOT: .plt
+
+        .global _start
+_start:
+        data16
+        leaq    foo at TLSGD(%rip), %rdi
+        data16
+        data16
+        rex64
+        callq   __tls_get_addr at PLT
+
+
+        .type   foo, at object
+        .section        .tdata,"awT", at progbits
+        .globl  foo
+        .align  8
+foo:
+        .long   42




More information about the llvm-commits mailing list