aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2020-04-21 15:16:21 +0100
committerTamar Christina <tamar.christina@arm.com>2020-04-21 15:17:18 +0100
commitc36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717 (patch)
tree4b3429655b130049683dd52267c000d246f408c5 /bfd
parent39a7b38fac0e6e90baa3d661a271377db3ba1765 (diff)
downloadbinutils-c36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717.zip
binutils-c36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717.tar.gz
binutils-c36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717.tar.bz2
BFD: Exclude sections with no content from compress check.
The check in bfd_get_full_section_contents is trying to check that we don't allocate more space for a section than the size of the section is on disk. Previously we excluded linker created sections since they didn't have a size on disk. However we also need to exclude sections with no content as well such as the BSS section. Space for these would not have been allocated by the assembler and so the check would incorrectly fail. bfd/ChangeLog: PR binutils/24753 * compress.c (bfd_get_full_section_contents): Exclude sections with no content. gas/ChangeLog: PR binutils/24753 * testsuite/gas/arm/pr24753.d: New test. * testsuite/gas/arm/pr24753.s: New test.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/compress.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8bc7ee9..0712414 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-04-21 Tamar Christina <tamar.christina@arm.com>
+
+ PR binutils/24753
+ * compress.c (bfd_get_full_section_contents): Exclude sections with no
+ content.
+
2020-04-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/25849
diff --git a/bfd/compress.c b/bfd/compress.c
index ce6bb2b..728ba39 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -255,6 +255,9 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
/* PR 24753: Linker created sections can be larger than
the file size, eg if they are being used to hold stubs. */
&& (bfd_section_flags (sec) & SEC_LINKER_CREATED) == 0
+ /* PR 24753: Sections which have no content should also be
+ excluded as they contain no size on disk. */
+ && (bfd_section_flags (sec) & SEC_HAS_CONTENTS) != 0
/* The MMO file format supports its own special compression
technique, but it uses COMPRESS_SECTION_NONE when loading
a section's contents. */