* [PATCH] PR ld/21401: x86-64: Handle undefined IFUNC symbol with -z now
@ 2017-04-19 16:58 H.J. Lu
0 siblings, 0 replies; only message in thread
From: H.J. Lu @ 2017-04-19 16:58 UTC (permalink / raw)
To: binutils
Since undefined IFUNC symbol is treated as normal FUNC symbol, don't
abort on undefined IFUNC symbol in the second PLT.
I am checking in this patch.
H.J.
---
bfd/
PR ld/21401
* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Don't abort
on on undefined IFUNC symbol in the second PLT.
ld/
PR ld/21401
* testsuite/ld-ifunc/ifunc.exp: Add a libtest-2-now.so test with
-z now.
---
bfd/elf64-x86-64.c | 2 +-
ld/testsuite/ld-ifunc/ifunc.exp | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index bf10893..746b847 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -6013,7 +6013,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
got_offset = h->got.offset;
if (got_offset == (bfd_vma) -1
- || h->type == STT_GNU_IFUNC
+ || (h->type == STT_GNU_IFUNC && h->def_regular)
|| plt == NULL
|| got == NULL)
abort ();
diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
index ffff2f1..13d50a5 100644
--- a/ld/testsuite/ld-ifunc/ifunc.exp
+++ b/ld/testsuite/ld-ifunc/ifunc.exp
@@ -234,6 +234,10 @@ if ![ld_link $ld "tmpdir/libtest-2.so" "-shared tmpdir/test-2.o"] {
fail "Could not link libtest-2.so"
set fails [expr $fails + 1]
}
+if ![ld_link $ld "tmpdir/libtest-2-now.so" "-shared -z now tmpdir/test-2.o"] {
+ fail "Could not link libtest-2-now.so"
+ set fails [expr $fails + 1]
+}
if { $fails == 0 } {
pass "Building ifunc binaries"
@@ -306,6 +310,10 @@ if {[contains_ifunc_symbol tmpdir/libtest-2.so] != 0} {
fail "libtest-2.so contains IFUNC symbols"
set fails [expr $fails + 1]
}
+if {[contains_ifunc_symbol tmpdir/libtest-2-now.so] != 0} {
+ fail "libtest-2-now.so contains IFUNC symbols"
+ set fails [expr $fails + 1]
+}
# The linked ifunc using executables and shared libraries should contain
# a dynamic reloc referencing the IFUNC symbol. (Even the static
--
2.9.3
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-04-19 16:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-19 16:58 [PATCH] PR ld/21401: x86-64: Handle undefined IFUNC symbol with -z now H.J. Lu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).