elf: Verify section size for mixed ordered/unordered inputs

When fixing up SHF_LINK_ORDER, issue a fatal error if the output section
size is increased.  Otherwise, bfd_set_section_contents will fail later
when attempting to write contents past the end of the output section.

	PR ld/26256
	PR ld/27160
	* elflink.c (elf_fixup_link_order): Verify that fixing up
	SHF_LINK_ORDER doesn't increase the output section size.
This commit is contained in:
H.J. Lu
2021-01-08 21:38:39 -08:00
parent aae7fcb8d7
commit b1b29aa51a
2 changed files with 15 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2021-01-08 H.J. Lu <hongjiu.lu@intel.com>
PR ld/26256
PR ld/27160
* elflink.c (elf_fixup_link_order): Verify that fixing up
SHF_LINK_ORDER doesn't increase the output section size.
2021-01-09 Alan Modra <amodra@gmail.com> 2021-01-09 Alan Modra <amodra@gmail.com>
* configure: Regenerate. * configure: Regenerate.

View File

@ -12039,6 +12039,14 @@ elf_fixup_link_order (struct bfd_link_info *info, bfd *abfd, asection *o)
offset = sections[n]->offset + sections[n]->size; offset = sections[n]->offset + sections[n]->size;
free (sections); free (sections);
/* Verify that fixing up SHF_LINK_ORDER doesn't increase the section
size. */
if (offset > o->size)
info->callbacks->einfo
(_("%F%P: %pA has ordered sections with incompatible alignments\n"),
o);
return TRUE; return TRUE;
} }