bfd/ChangeLog:
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.
This commit is contained in:
parent
88e5939496
commit
730035f7af
8 changed files with 71 additions and 10 deletions
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
14
ld/ChangeLog
14
ld/ChangeLog
|
@ -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*.
|
||||
|
|
|
@ -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__)} :
|
||||
{
|
||||
|
|
|
@ -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__)} :
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
#...
|
||||
|
|
|
@ -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.
|
||||
#...
|
||||
|
|
Loading…
Reference in a new issue