Fix seg-fault in linker when applying relocs to a corrupt binary.

PR ld/20911
	* ldctor.c (ldctor_build_sets): Produce alternative error message
	if the reloc was being applied to a special section.
This commit is contained in:
Nick Clifton 2016-12-02 15:03:05 +00:00
parent 233c8c27eb
commit fe6fae0790
2 changed files with 15 additions and 4 deletions

View File

@ -1,5 +1,9 @@
2016-12-02 Nick Clifton <nickc@redhat.com>
PR ld/20911
* ldctor.c (ldctor_build_sets): Produce alternative error message
if the reloc was being applied to a special section.
PR ld/20912
* emultempl/elf32.em (_place_orphan): Test for ELF format of the
orphan before looking for the SHF_EXCLUDE flag.

View File

@ -290,10 +290,17 @@ ldctor_build_sets (void)
p->reloc);
if (howto == NULL)
{
einfo (_("%P%X: %s does not support reloc %s for set %s\n"),
bfd_get_target (p->elements->section->owner),
bfd_get_reloc_code_name (p->reloc),
p->h->root.string);
/* See PR 20911 for a reproducer. */
if (p->elements->section->owner == NULL)
einfo (_("%P%X: Special section %s does not support reloc %s for set %s\n"),
bfd_get_section_name (link_info.output_bfd, p->elements->section),
bfd_get_reloc_code_name (p->reloc),
p->h->root.string);
else
einfo (_("%P%X: %s does not support reloc %s for set %s\n"),
bfd_get_target (p->elements->section->owner),
bfd_get_reloc_code_name (p->reloc),
p->h->root.string);
continue;
}
}