bfd/ChangeLog:
authorDave Korn <dave.korn@artimi.com>
Sat, 7 May 2011 14:29:10 +0000 (14:29 +0000)
committerDave Korn <dave.korn@artimi.com>
Sat, 7 May 2011 14:29:10 +0000 (14:29 +0000)
PR ld/12365
* cofflink.c (bfd_coff_link_input_bfd): Check for and warn about
references to symbols defined in discarded sections.

ld/ChangeLog:

PR ld/12365
* scripttempl/pe.sc (__rt_psrelocs_start): New symbol definition.
(__rt_psrelocs_end): Likewise.
(__rt_psrelocs_size): Likewise difference between the above.
(__RUNTIME_PSEUDO_RELOC_LIST_END__): Move outside .rdata section
immediately after end of pseudo-reloc data.
(___RUNTIME_PSEUDO_RELOC_LIST_END___): Likewise.
(__RUNTIME_PSEUDO_RELOC_LIST__): Move outside .rdata section and
calculate backward from list end.
(___RUNTIME_PSEUDO_RELOC_LIST___): Likewise.
* scripttempl/pep.sc: Likewise.

ld/testsuite/ChangeLog:

PR ld/12365
* ld-plugin/plugin-7.d: Allow underscore in error message.
* ld-plugin/plugin-8.d: Likewise.

bfd/ChangeLog
bfd/cofflink.c
ld/ChangeLog
ld/scripttempl/pe.sc
ld/scripttempl/pep.sc
ld/testsuite/ChangeLog
ld/testsuite/ld-plugin/plugin-7.d
ld/testsuite/ld-plugin/plugin-8.d

index 10255dab6cd27691ddcc8fd403d757c86a86a89c..b8c2cf4b0d753f11e0dc470e75c36f48851fc019 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-07  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       PR ld/12365
+       * cofflink.c (bfd_coff_link_input_bfd): Check for and warn about
+       references to symbols defined in discarded sections.
+
 2011-05-07  Dave Korn  <dave.korn.cygwin@gmail.com>
 
        PR ld/12365
index 33de7fe3cc8aa97a99e35fa7d56bc061b41ea3eb..fdfab1de48f74109e875ae2aae39dc54aa9a184f 100644 (file)
@@ -2365,6 +2365,35 @@ _bfd_coff_link_input_bfd (struct coff_final_link_info *finfo, bfd *input_bfd)
          if (internal_relocs == NULL)
            return FALSE;
 
+         /* Run through the relocs looking for relocs against symbols
+            coming from discarded sections and complain about them.  */
+         irel = internal_relocs;
+         for (; irel < &internal_relocs[o->reloc_count]; irel++)
+           {
+             struct coff_link_hash_entry *h;
+             asection *ps = NULL;
+             long symndx = irel->r_symndx;
+             if (symndx < 0)
+               continue;
+             h = obj_coff_sym_hashes (input_bfd)[symndx];
+             if (h == NULL)
+               continue;
+             while (h->root.type == bfd_link_hash_indirect
+                    || h->root.type == bfd_link_hash_warning)
+               h = (struct coff_link_hash_entry *) h->root.u.i.link;
+             if (h->root.type == bfd_link_hash_defined
+                 || h->root.type == bfd_link_hash_defweak)
+               ps = h->root.u.def.section;
+             if (ps == NULL)
+               continue;
+             /* Complain if definition comes from an excluded section.  */
+             if (ps->flags & SEC_EXCLUDE)
+               (*finfo->info->callbacks->einfo)
+                 (_("%X`%s' referenced in section `%A' of %B: "
+                    "defined in discarded section `%A' of %B\n"),
+                  h->root.root.string, o, input_bfd, ps, ps->owner);
+           }
+
          /* Call processor specific code to relocate the section
              contents.  */
          if (! bfd_coff_relocate_section (output_bfd, finfo->info,
index 7368c5ca9e9396739570ac567db83c32e3538476..b2fe365b83ccda4bcd8a38a9a1a4e0b2dacc07b4 100644 (file)
@@ -1,3 +1,17 @@
+2011-05-07  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       PR ld/12365
+       * scripttempl/pe.sc (__rt_psrelocs_start): New symbol definition.
+       (__rt_psrelocs_end): Likewise.
+       (__rt_psrelocs_size): Likewise difference between the above.
+       (__RUNTIME_PSEUDO_RELOC_LIST_END__): Move outside .rdata section
+       immediately after end of pseudo-reloc data.
+       (___RUNTIME_PSEUDO_RELOC_LIST_END___): Likewise.
+       (__RUNTIME_PSEUDO_RELOC_LIST__): Move outside .rdata section and
+       calculate backward from list end.
+       (___RUNTIME_PSEUDO_RELOC_LIST___): Likewise.
+       * scripttempl/pep.sc: Likewise.
+
 2011-05-06  Tristan Gingold  <gingold@adacore.com>
 
        * scripttempl/alphavms.sc (CODE): Add *$CODE*.
index a82d08c7b599c40a906531f3ec229d3d3ea266dd..126c1d4b199bd789cd6e3be8c9401663d19b1218 100644 (file)
@@ -106,12 +106,15 @@ SECTIONS
   .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
   {
     ${R_RDATA}
-    ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;}
-    ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;}
+    ${RELOCATING+__rt_psrelocs_start = .;}
     *(.rdata_runtime_pseudo_reloc)
-    ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
-    ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+    ${RELOCATING+__rt_psrelocs_end = .;}
   }
+  ${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
+  ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+  ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+  ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
+  ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
 
   .eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
   {
index b8315c53f9ac4f709c20a17d6ebd498821b56b9c..a3e0cf375309fa0548bc8d11855dc123b292972b 100644 (file)
@@ -107,12 +107,15 @@ SECTIONS
   .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
   {
     ${R_RDATA}
-    ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;}
-    ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;}
+    ${RELOCATING+__rt_psrelocs_start = .;}
     *(.rdata_runtime_pseudo_reloc)
-    ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
-    ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+    ${RELOCATING+__rt_psrelocs_end = .;}
   }
+  ${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
+  ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+  ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+  ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
+  ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
 
   .eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
   {
index c312749986e9bee47c0195ece9969c5a8d794ba5..02581cccb6afc218e114d7f40f222ecdd3584771 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-07  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       PR ld/12365
+       * ld-plugin/plugin-7.d: Allow underscore in error message.
+       * ld-plugin/plugin-8.d: Likewise.
+
 2011-05-07  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/12730
index 04f41392ca64b49199214701e144b7f14681ea18..4d0b9d7d91fe18a41fa9e6ec27d98afe0ce7cedb 100644 (file)
@@ -26,6 +26,6 @@ hook called: claim_file tmpdir/func.o \[@0/.* CLAIMED
 hook called: claim_file tmpdir/text.o \[@0/.* not claimed
 #...
 hook called: all symbols read.
-`func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
+`_?func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
 hook called: cleanup.
 #...
index 003537c94f465048858b196f29c15311512b2a92..a589f01efc6bf4325b84b74124e20dac933b8226 100644 (file)
@@ -30,6 +30,6 @@ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
 hook called: all symbols read.
 Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
 Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
-`func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
+`_?func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
 hook called: cleanup.
 #...