[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 21:11:48 PDT 2017


smeenai updated this revision to Diff 109855.
smeenai added a comment.

Simplify test


https://reviews.llvm.org/D36350

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


Index: test/ELF/gnu-ifunc-dynsym.s
===================================================================
--- /dev/null
+++ 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-DAG: __rela_iplt_start
+// CHECK-DAG: __rela_iplt_end
+
+.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: ELF/Writer.cpp
===================================================================
--- ELF/Writer.cpp
+++ 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.109855.patch
Type: text/x-patch
Size: 1132 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170805/78879506/attachment.bin>


More information about the llvm-commits mailing list