mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-18 14:53:32 +08:00
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.
This commit is contained in:
parent
1d550c828c
commit
c5bb8910e8
@ -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
Normal file
14
ld/testsuite/ld-x86-64/pie3-nacl.d
Normal file
@ -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
Normal file
13
ld/testsuite/ld-x86-64/pie3.d
Normal file
@ -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
Normal file
5
ld/testsuite/ld-x86-64/pie3.s
Normal file
@ -0,0 +1,5 @@
|
||||
.text
|
||||
.global _start
|
||||
.weak foo
|
||||
_start:
|
||||
leaq foo(%rip), %rax
|
@ -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…
Reference in New Issue
Block a user