[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