Use bfd_is_abs_section to check discarded input section

bfd/

	PR ld/17306
	* elf32-i386.c (elf_i386_convert_mov_to_lea): Use bfd_is_abs_section
	to check discarded input section.
	* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.

ld/testsuite/

	PR ld/17306
	* ld-i386/i386.exp (i386tests): Add tests for PR ld/17306.
	* ld-x86-64/x86-64.exp (x86_64tests): Likewise.

	* ld-i386/pr17306a.s: New file.
	* ld-i386/pr17306b.s: Likewise.
	* ld-x86-64/pr17306a.s: Likewise.
	* ld-x86-64/pr17306b.s: Likewise.
This commit is contained in:
H.J. Lu 2014-08-27 07:59:48 -07:00
parent 29a9f53e85
commit c8831961f9
10 changed files with 50 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2014-08-27 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17306
* elf32-i386.c (elf_i386_convert_mov_to_lea): Use bfd_is_abs_section
to check discarded input section.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.
2014-08-27 H.J. Lu <hongjiu.lu@intel.com> 2014-08-27 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17313 PR ld/17313

View File

@ -2533,7 +2533,7 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec,
/* Nothing to do if there are no codes, no relocations or no output. */ /* Nothing to do if there are no codes, no relocations or no output. */
if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC) if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC)
|| sec->reloc_count == 0 || sec->reloc_count == 0
|| discarded_section (sec)) || bfd_is_abs_section (sec->output_section))
return TRUE; return TRUE;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr; symtab_hdr = &elf_tdata (abfd)->symtab_hdr;

View File

@ -2777,7 +2777,7 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec,
/* Nothing to do if there are no codes, no relocations or no output. */ /* Nothing to do if there are no codes, no relocations or no output. */
if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC) if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC)
|| sec->reloc_count == 0 || sec->reloc_count == 0
|| discarded_section (sec)) || bfd_is_abs_section (sec->output_section))
return TRUE; return TRUE;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr; symtab_hdr = &elf_tdata (abfd)->symtab_hdr;

View File

@ -1,3 +1,14 @@
2014-08-27 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17306
* ld-i386/i386.exp (i386tests): Add tests for PR ld/17306.
* ld-x86-64/x86-64.exp (x86_64tests): Likewise.
* ld-i386/pr17306a.s: New file.
* ld-i386/pr17306b.s: Likewise.
* ld-x86-64/pr17306a.s: Likewise.
* ld-x86-64/pr17306b.s: Likewise.
2014-08-27 H.J. Lu <hongjiu.lu@intel.com> 2014-08-27 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17313 PR ld/17313

View File

@ -187,6 +187,10 @@ set i386tests {
"--32" {zero.s} {} ""} "--32" {zero.s} {} ""}
{"PR ld/17313 (2)" "-melf_i386 -shared --just-symbols=tmpdir/zero.o" "" {"PR ld/17313 (2)" "-melf_i386 -shared --just-symbols=tmpdir/zero.o" ""
"--32" {lea1.s} {} "libpr17313.so"} "--32" {lea1.s} {} "libpr17313.so"}
{"PR ld/17306 (1)" "-melf_i386" ""
"--32" {pr17306b.s} {} ""}
{"PR ld/17306 (2)" "-melf_i386 -shared -Bsymbolic --just-symbols=tmpdir/pr17306b.o" ""
"--32" {pr17306a.s} {} "libpr17306.so"}
} }
# So as to avoid rewriting every last test case here in a nacl variant, # So as to avoid rewriting every last test case here in a nacl variant,

View File

@ -0,0 +1,9 @@
.data
.globl foo
foo:
.long -1
.text
.globl _start
.type _start, @function
_start:
pushl foo@GOT(%ebx)

View File

@ -0,0 +1,2 @@
.text
movl foo@GOT(%ebx), %eax

View File

@ -0,0 +1,9 @@
.data
.globl foo
foo:
.quad -1
.text
.globl _start
.type _start, @function
_start:
pushq foo@GOTPCREL(%rip)

View File

@ -0,0 +1,2 @@
.text
movq foo@GOTPCREL(%rip), %rax

View File

@ -140,6 +140,10 @@ set x86_64tests {
"--64" {dummy.s} {} ""} "--64" {dummy.s} {} ""}
{"PR ld/17313 (2)" "-melf_x86_64 -shared --just-symbols=tmpdir/dummy.o" "" {"PR ld/17313 (2)" "-melf_x86_64 -shared --just-symbols=tmpdir/dummy.o" ""
"--64" {lea1.s} {} "libpr17313.so"} "--64" {lea1.s} {} "libpr17313.so"}
{"PR ld/17306 (1)" "-melf_x86_64" ""
"--64" {pr17306b.s} {} ""}
{"PR ld/17306 (2)" "-melf_x86_64 -shared -Bsymbolic --just-symbols=tmpdir/pr17306b.o" ""
"--64" {pr17306a.s} {} "libpr17306.so"}
} }
# So as to avoid rewriting every last test case here in a nacl variant, # So as to avoid rewriting every last test case here in a nacl variant,