PR ld/13621
authorRichard Henderson <rth@redhat.com>
Mon, 13 Feb 2012 18:08:51 +0000 (18:08 +0000)
committerRichard Henderson <rth@redhat.com>
Mon, 13 Feb 2012 18:08:51 +0000 (18:08 +0000)
bfd/
* linker.c (fix_syms): Force symbols outside any section into
bfd_abs_section_ptr.
ld/testsuite/
* ld-elf/warn2.d: Expect ABS section for Foo.
* ld-elf/zerosize1.d, zerosize1.s: New test.

bfd/ChangeLog
bfd/linker.c
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/warn2.d

index 490120baa548bfa1069997a35224a196556dd55f..0a53fad026b255d5242581b4edbcb69e3a837b88 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-13  Richard Henderson  <rth@redhat.com>
+
+       PR ld/13621
+       * linker.c (fix_syms): Force symbols outside any section into
+       bfd_abs_section_ptr.
+
 2012-02-13  Alan Modra  <amodra@gmail.com>
 
        * elf32-m68hc1x.c (elf32_m68hc11_merge_symbol_attribute): New function.
index c51c5df93b4f21ccd5cee4149f090869bc3c9701..04044743f263bc7207eecd89dba17de9cd27f4ed 100644 (file)
@@ -3208,6 +3208,12 @@ fix_syms (struct bfd_link_hash_entry *h, void *data)
                op = op1;
            }
 
+         /* Refuse to choose a section for which we are out of bounds.  */
+         /* ??? This may make most of the above moot.  */
+         if (h->u.def.value < op->vma
+             || h->u.def.value > op->vma + op->size)
+           op = bfd_abs_section_ptr;
+
          h->u.def.value -= op->vma;
          h->u.def.section = op;
        }
index f1c82a066a6428d6ecc4278c0ac0e472560018ef..f118153e3f3adf37de633993c342f8b0cfff8b41 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-13  Richard Henderson  <rth@redhat.com>
+
+       PR ld/13621
+       * ld-elf/warn2.d: Expect ABS section for Foo.
+       * ld-elf/zerosize1.d, zerosize1.s: New test.
+
 2012-02-13  Alan Modra  <amodra@gmail.com>
 
        * ld-m68hc11/m68hc11.exp: Run for m68hc11-*-* and m68hc12-*-*.
index 95b7ef499981cd53f3102d206f3cb1276e2c7346..a9c05f954115dc865e7def6e32cb0731846d3f61 100644 (file)
@@ -13,5 +13,5 @@
 # construct and that the symbol still appears as expected.
 
 #...
- +[0-9]+: +[0-9a-f]+ +20 +OBJECT +GLOBAL +DEFAULT +[1-9] Foo
+ +[0-9]+: +[0-9a-f]+ +20 +OBJECT +GLOBAL +DEFAULT +ABS Foo
 #pass