aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2021-01-08 21:38:39 -0800
committerH.J. Lu <hjl.tools@gmail.com>2021-01-08 21:38:51 -0800
commitb1b29aa51a6a67d5e35391ad31a80765839d6eb4 (patch)
tree385666f3042415bebce50f6e6285b34b9bb40975 /bfd
parentaae7fcb8d755a2eb3f32a3f945a4e8f30cf5c5e2 (diff)
downloadgdb-b1b29aa51a6a67d5e35391ad31a80765839d6eb4.zip
gdb-b1b29aa51a6a67d5e35391ad31a80765839d6eb4.tar.gz
gdb-b1b29aa51a6a67d5e35391ad31a80765839d6eb4.tar.bz2
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.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elflink.c8
2 files changed, 15 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index baf6af9..86fec90 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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>
* configure: Regenerate.
diff --git a/bfd/elflink.c b/bfd/elflink.c
index a7c952b..acc959d 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;
}