aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/elf64-x86-64.c4
-rw-r--r--ld/testsuite/ld-x86-64/pie3-nacl.d14
-rw-r--r--ld/testsuite/ld-x86-64/pie3.d13
-rw-r--r--ld/testsuite/ld-x86-64/pie3.s5
-rw-r--r--ld/testsuite/ld-x86-64/x86-64.exp2
5 files changed, 35 insertions, 3 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 79bc9fb..3658df4 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -4968,9 +4968,7 @@ do_ifunc_pointer:
&& ((bfd_link_executable (info)
&& h->root.type == bfd_link_hash_undefweak
&& !resolved_to_zero)
- || (bfd_link_pic (info)
- && !(bfd_link_pie (info)
- && h->root.type == bfd_link_hash_undefined))))
+ || bfd_link_dll (info)))
{
bfd_boolean fail = FALSE;
bfd_boolean branch
diff --git a/ld/testsuite/ld-x86-64/pie3-nacl.d b/ld/testsuite/ld-x86-64/pie3-nacl.d
new file mode 100644
index 0000000..59f5e3e
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pie3-nacl.d
@@ -0,0 +1,14 @@
+#source: pie3.s
+#as: --64
+#ld: -pie -melf_x86_64
+#objdump: -dw
+#target: x86_64-*-nacl*
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +0: 48 8d 05 f9 ff ff ff lea -0x7\(%rip\),%rax # 0 <_start>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pie3.d b/ld/testsuite/ld-x86-64/pie3.d
new file mode 100644
index 0000000..a200deb
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pie3.d
@@ -0,0 +1,13 @@
+#as: --64
+#ld: -pie -melf_x86_64
+#objdump: -dw
+#notarget: x86_64-*-nacl*
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+191 <_start>:
+ +191: 48 8d 05 68 fe ff ff lea -0x198\(%rip\),%rax # 0 <_start-0x191>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pie3.s b/ld/testsuite/ld-x86-64/pie3.s
new file mode 100644
index 0000000..72914d9
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pie3.s
@@ -0,0 +1,5 @@
+ .text
+ .global _start
+ .weak foo
+_start:
+ leaq foo(%rip), %rax
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 9b83e1c..c582582 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -310,6 +310,8 @@ run_dump_test "pr14207"
run_dump_test "gotplt1"
run_dump_test "pie1"
run_dump_test "pie2"
+run_dump_test "pie3"
+run_dump_test "pie3-nacl"
run_dump_test "pic1"
run_dump_test "largecomm-1a"
run_dump_test "largecomm-1b"