[PATCH] elf: Verify section size for mixed ordered/unordered inputs

H.J. Lu hjl.tools@gmail.com
Fri Jan 8 14:20:44 GMT 2021


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
	* elflink.c (elf_fixup_link_order): Verify that fixing up
	SHF_LINK_ORDER doesn't increase the output section size.
---
 bfd/elflink.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/bfd/elflink.c b/bfd/elflink.c
index a7c952b6fc1..acc959d526a 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -12039,6 +12039,14 @@ elf_fixup_link_order (struct bfd_link_info *info, bfd *abfd, asection *o)
       offset = sections[n]->offset + sections[n]->size;
 
   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;
 }
 
-- 
2.29.2



More information about the Binutils mailing list