Use bfd_is_abs_section to check discarded input section
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 27 Aug 2014 14:59:48 +0000 (07:59 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 27 Aug 2014 14:59:48 +0000 (07:59 -0700)
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.

bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c
ld/testsuite/ChangeLog
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr17306a.s [new file with mode: 0644]
ld/testsuite/ld-i386/pr17306b.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr17306a.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr17306b.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp

index 3f81ba4..bba079f 100644 (file)
@@ -1,5 +1,12 @@
 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>
+
        PR ld/17313
        * elflink.c (elf_link_add_object_symbols): Don't attach dynamic
        sections to input from ld --just-symbols.
index 7c4b4bb..a00d47c 100644 (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.  */
   if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC)
       || sec->reloc_count == 0
-      || discarded_section (sec))
+      || bfd_is_abs_section (sec->output_section))
     return TRUE;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
index f71291e..9d18a54 100644 (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.  */
   if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC)
       || sec->reloc_count == 0
-      || discarded_section (sec))
+      || bfd_is_abs_section (sec->output_section))
     return TRUE;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
index a7bde81..51355ef 100644 (file)
@@ -1,5 +1,16 @@
 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>
+
        PR ld/17313
        * ld-i386/i386.exp (i386tests): Add tests for PR ld/17313.
        * ld-x86-64/x86-64.exp (x86_64tests): Likewise.
index 875c816..30be98a 100644 (file)
@@ -187,6 +187,10 @@ set i386tests {
      "--32" {zero.s} {} ""}
     {"PR ld/17313 (2)" "-melf_i386 -shared --just-symbols=tmpdir/zero.o" ""
      "--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,
diff --git a/ld/testsuite/ld-i386/pr17306a.s b/ld/testsuite/ld-i386/pr17306a.s
new file mode 100644 (file)
index 0000000..fe2d49c
--- /dev/null
@@ -0,0 +1,9 @@
+       .data
+       .globl foo
+foo:
+       .long -1
+       .text
+       .globl  _start
+       .type   _start, @function
+_start:
+       pushl   foo@GOT(%ebx)
diff --git a/ld/testsuite/ld-i386/pr17306b.s b/ld/testsuite/ld-i386/pr17306b.s
new file mode 100644 (file)
index 0000000..2f84e52
--- /dev/null
@@ -0,0 +1,2 @@
+       .text
+       movl    foo@GOT(%ebx), %eax
diff --git a/ld/testsuite/ld-x86-64/pr17306a.s b/ld/testsuite/ld-x86-64/pr17306a.s
new file mode 100644 (file)
index 0000000..a2ee48d
--- /dev/null
@@ -0,0 +1,9 @@
+       .data
+       .globl foo
+foo:
+       .quad -1
+       .text
+       .globl  _start
+       .type   _start, @function
+_start:
+       pushq   foo@GOTPCREL(%rip)
diff --git a/ld/testsuite/ld-x86-64/pr17306b.s b/ld/testsuite/ld-x86-64/pr17306b.s
new file mode 100644 (file)
index 0000000..c63bd2a
--- /dev/null
@@ -0,0 +1,2 @@
+       .text
+       movq    foo@GOTPCREL(%rip), %rax
index a9af367..54786a7 100644 (file)
@@ -140,6 +140,10 @@ set x86_64tests {
      "--64" {dummy.s} {} ""}
     {"PR ld/17313 (2)" "-melf_x86_64 -shared --just-symbols=tmpdir/dummy.o" ""
      "--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,