From 059f3fb8fbfbf7462b9812f4ef95945f3084f12f Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Sat, 2 Apr 2016 00:19:22 +0000 Subject: [PATCH] Don't create a plt when LD access is optimized. llvm-svn: 265203 --- lld/ELF/Writer.cpp | 2 +- lld/test/ELF/tls-opt-no-plt.s | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 81c7bd360014..9e366a0b2cbd 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -279,7 +279,7 @@ static unsigned handleTlsRelocation(uint32_t Type, SymbolBody &Body, InputSectionBase &C, RelT &RI) { if (Target->pointsToLocalDynamicGotEntry(Type)) { if (Target->canRelaxTls(Type, nullptr)) - return 1; + return 2; if (Out::Got->addTlsIndex()) Out::RelaDyn->addReloc({Target->TlsModuleIndexRel, DynamicReloc::Off_LTlsIndex, diff --git a/lld/test/ELF/tls-opt-no-plt.s b/lld/test/ELF/tls-opt-no-plt.s index c0ec9ab35bf4..53655d0934d5 100644 --- a/lld/test/ELF/tls-opt-no-plt.s +++ b/lld/test/ELF/tls-opt-no-plt.s @@ -15,6 +15,16 @@ _start: rex64 callq __tls_get_addr@PLT + leaq bar@TLSLD(%rip), %rdi + callq __tls_get_addr@PLT + leaq bar@DTPOFF(%rax), %rax + + .type bar,@object + .section .tdata,"awT",@progbits + .align 8 +bar: + .long 42 + .type foo,@object .section .tdata,"awT",@progbits