Browse Source

x86-64: Limit PIC check to shared library build

When building an executable, undefined symbols are error and undefined
weak symbols are resolved to zero.  We only need to check PIC for
building a shared library.

bfd/

	PR ld/21782
	* elf64-x86-64.c (elf_x86_64_relocate_section): Limit PIC check
	to shared library.

ld/

	PR ld/21782
	* testsuite/ld-x86-64/pie3-nacl.d: New file.
	* testsuite/ld-x86-64/pie3.d: Likewise.
	* testsuite/ld-x86-64/pie3.s: Likewise.
	* testsuite/ld-x86-64/x86-64.exp: Run pie3 and pie3-nacl.
gdb-8.1-branch
H.J. Lu 9 years ago
parent
commit
c5bb8910e8
  1. 4
      bfd/elf64-x86-64.c
  2. 14
      ld/testsuite/ld-x86-64/pie3-nacl.d
  3. 13
      ld/testsuite/ld-x86-64/pie3.d
  4. 5
      ld/testsuite/ld-x86-64/pie3.s
  5. 2
      ld/testsuite/ld-x86-64/x86-64.exp

4
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

14
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

13
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

5
ld/testsuite/ld-x86-64/pie3.s

@ -0,0 +1,5 @@
.text
.global _start
.weak foo
_start:
leaq foo(%rip), %rax

2
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"

Loading…
Cancel
Save