Don't complain about -fPIC for undefined symbol
When building executable, undefined symbol is a fatal error. We don't complain about -fPIC if the symbol is undefined. bfd/ PR ld/17847 * elf64-x86-64.c (elf_x86_64_relocate_section): Don't complain about -fPIC if the symbol is undefined when building executable. ld/testsuite/ PR ld/17847 * ld-x86-64/pie1.d: New file. * ld-x86-64/pie1.s: Likwise. * ld-x86-64/x86-64.exp: Run pie1.
This commit is contained in:
parent
d221e7efd6
commit
6333bc0dd6
@ -1,3 +1,9 @@
|
||||
2015-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/17847
|
||||
* elf64-x86-64.c (elf_x86_64_relocate_section): Don't complain
|
||||
about -fPIC if the symbol is undefined when building executable.
|
||||
|
||||
2015-01-15 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR binutils/17512
|
||||
|
@ -4063,10 +4063,14 @@ elf_x86_64_relocate_section (bfd *output_bfd,
|
||||
case R_X86_64_PC16:
|
||||
case R_X86_64_PC32:
|
||||
case R_X86_64_PC32_BND:
|
||||
/* Don't complain about -fPIC if the symbol is undefined when
|
||||
building executable. */
|
||||
if (info->shared
|
||||
&& (input_section->flags & SEC_ALLOC) != 0
|
||||
&& (input_section->flags & SEC_READONLY) != 0
|
||||
&& h != NULL)
|
||||
&& h != NULL
|
||||
&& !(info->executable
|
||||
&& h->root.type == bfd_link_hash_undefined))
|
||||
{
|
||||
bfd_boolean fail = FALSE;
|
||||
bfd_boolean branch
|
||||
@ -4140,11 +4144,14 @@ direct:
|
||||
break;
|
||||
|
||||
/* Don't copy a pc-relative relocation into the output file
|
||||
if the symbol needs copy reloc. */
|
||||
if the symbol needs copy reloc or the symbol is undefined
|
||||
when building executable. */
|
||||
if ((info->shared
|
||||
&& !(info->executable
|
||||
&& h != NULL
|
||||
&& (h->needs_copy || eh->needs_copy)
|
||||
&& (h->needs_copy
|
||||
|| eh->needs_copy
|
||||
|| h->root.type == bfd_link_hash_undefined)
|
||||
&& IS_X86_64_PCREL_TYPE (r_type))
|
||||
&& (h == NULL
|
||||
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
||||
|
@ -1,3 +1,10 @@
|
||||
2015-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/17847
|
||||
* ld-x86-64/pie1.d: New file.
|
||||
* ld-x86-64/pie1.s: Likwise.
|
||||
* ld-x86-64/x86-64.exp: Run pie1.
|
||||
|
||||
2015-01-13 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||
|
||||
* ld-aarch64/aarch64-elf.exp: Added relocs-257-symbolic-func test.
|
||||
|
9
ld/testsuite/ld-x86-64/pie1.d
Normal file
9
ld/testsuite/ld-x86-64/pie1.d
Normal file
@ -0,0 +1,9 @@
|
||||
#name: PIE with undefined symbol
|
||||
#as: --64
|
||||
#ld: -pie -melf_x86_64 --noinhibit-exec
|
||||
#readelf: -s --wide
|
||||
#warning: \A[^\n]*\.o[^\n]*In function `_start':\n[^\n]*: undefined reference to `foo'\Z
|
||||
|
||||
#...
|
||||
+[0-9]+: +[0-9a-f]+ +0 +NOTYPE +GLOBAL +DEFAULT +UND foo
|
||||
#pass
|
4
ld/testsuite/ld-x86-64/pie1.s
Normal file
4
ld/testsuite/ld-x86-64/pie1.s
Normal file
@ -0,0 +1,4 @@
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
movl foo(%rip), %eax
|
@ -228,6 +228,7 @@ run_dump_test "pr12570b"
|
||||
run_dump_test "pr14215"
|
||||
run_dump_test "pr14207"
|
||||
run_dump_test "gotplt1"
|
||||
run_dump_test "pie1"
|
||||
|
||||
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user