[PATCH] D36350: [lld] Allow rel iplt symbols with dynamic symbol table

Shoaib Meenai via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 4 22:03:24 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL310168: [lld] Allow rel iplt symbols with dynamic symbol table (authored by smeenai).

Repository:
  rL LLVM

https://reviews.llvm.org/D36350

Files:
  lld/trunk/ELF/Writer.cpp
  lld/trunk/test/ELF/gnu-ifunc-dynsym.s


Index: lld/trunk/test/ELF/gnu-ifunc-dynsym.s
===================================================================
--- lld/trunk/test/ELF/gnu-ifunc-dynsym.s
+++ lld/trunk/test/ELF/gnu-ifunc-dynsym.s
@@ -0,0 +1,19 @@
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+// RUN: ld.lld -static -export-dynamic %t.o -o %tout
+// RUN: llvm-nm -U %tout | FileCheck %s
+// REQUIRES: x86
+
+// CHECK: __rela_iplt_end
+// CHECK: __rela_iplt_start
+
+.text
+.type foo STT_GNU_IFUNC
+.globl foo
+foo:
+ ret
+
+.globl _start
+_start:
+ call foo
+ movl $__rela_iplt_start,%edx
+ movl $__rela_iplt_end,%edx
Index: lld/trunk/ELF/Writer.cpp
===================================================================
--- lld/trunk/ELF/Writer.cpp
+++ lld/trunk/ELF/Writer.cpp
@@ -774,7 +774,7 @@
 // need these symbols, since IRELATIVE relocs are resolved through GOT
 // and PLT. For details, see http://www.airs.com/blog/archives/403.
 template <class ELFT> void Writer<ELFT>::addRelIpltSymbols() {
-  if (InX::DynSymTab)
+  if (!Config->Static)
     return;
   StringRef S = Config->IsRela ? "__rela_iplt_start" : "__rel_iplt_start";
   addOptionalRegular<ELFT>(S, In<ELFT>::RelaIplt, 0, STV_HIDDEN, STB_WEAK);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36350.109858.patch
Type: text/x-patch
Size: 1202 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170805/48f8ae06/attachment-0001.bin>


More information about the llvm-commits mailing list