aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2020-04-21 15:16:21 +0100
committerAndreas K. Hüttel <dilfridge@gentoo.org>2020-05-08 20:49:45 +0300
commite2ff22b2d88b437f14d1c35b92a1816f0088f52f (patch)
tree93b65c95bcd4e1e945b784aa469fc9d9f2bbeafa
parentArm: Fix LSB of GOT for Thumb2 only PLT. (diff)
downloadbinutils-gdb-e2ff22b2d88b437f14d1c35b92a1816f0088f52f.tar.gz
binutils-gdb-e2ff22b2d88b437f14d1c35b92a1816f0088f52f.tar.bz2
binutils-gdb-e2ff22b2d88b437f14d1c35b92a1816f0088f52f.zip
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. (cherry picked from commit c36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717) (cherry picked from commit 9f57ab49b32bc14c0ff3834876a185af0a4c6e6b)
-rw-r--r--bfd/ChangeLog9
-rw-r--r--bfd/compress.c3
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/testsuite/gas/arm/pr24753.d7
-rw-r--r--gas/testsuite/gas/arm/pr24753.s12
5 files changed, 40 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1b57d6b071..ca87f744a3 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2020-04-21 Tamar Christina <tamar.christina@arm.com>
+
+ Backport from mainline.
+ 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-08 Tamar Christina <tamar.christina@arm.com>
Backport from mainline.
diff --git a/bfd/compress.c b/bfd/compress.c
index ce6bb2beae..728ba39dfb 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. */
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4ad599ae79..3ebb0aa53e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2020-04-21 Tamar Christina <tamar.christina@arm.com>
+
+ Backport from mainline.
+ 2020-04-21 Tamar Christina <tamar.christina@arm.com>
+
+ PR binutils/24753
+ * testsuite/gas/arm/pr24753.d: New test.
+ * testsuite/gas/arm/pr24753.s: New test.
+
2020-03-13 Andre Vieira <andre.simoesdiasvieira@arm.com>
Backport from mainline.
diff --git a/gas/testsuite/gas/arm/pr24753.d b/gas/testsuite/gas/arm/pr24753.d
new file mode 100644
index 0000000000..01990d1ff5
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr24753.d
@@ -0,0 +1,7 @@
+#skip: *-*-pe *-*-wince *-*-vxworks
+#objdump: -d
+#name: PR24753: Don't error on sections with no content size mismatch with file
+
+.*: +file format .*arm.*
+
+#...
diff --git a/gas/testsuite/gas/arm/pr24753.s b/gas/testsuite/gas/arm/pr24753.s
new file mode 100644
index 0000000000..5ba33fd29c
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr24753.s
@@ -0,0 +1,12 @@
+.text
+.global _start
+_start:
+ nop
+
+.section .text2, "ax", %progbits
+_func:
+ nop
+
+.bss
+.fill 0x8000
+