[binutils-gdb] BFD: Exclude sections with no content from compress check.

Tamar Christina tnfchris@sourceware.org
Tue Apr 21 14:18:34 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717

commit c36876fe5b5bac1c404ab2ca82bfbfb2ed9a2717
Author: Tamar Christina <tamar.christina@arm.com>
Date:   Tue Apr 21 15:16:21 2020 +0100

    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.

Diff:
---
 bfd/ChangeLog                   |  6 ++++++
 bfd/compress.c                  |  3 +++
 gas/ChangeLog                   |  6 ++++++
 gas/testsuite/gas/arm/pr24753.d |  7 +++++++
 gas/testsuite/gas/arm/pr24753.s | 12 ++++++++++++
 5 files changed, 34 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8bc7ee979d8..07124149523 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 ce6bb2beaee..728ba39dfbf 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 3185bdcf366..757263330c7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+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-04-21  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR gas/23840
diff --git a/gas/testsuite/gas/arm/pr24753.d b/gas/testsuite/gas/arm/pr24753.d
new file mode 100644
index 00000000000..01990d1ff51
--- /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 00000000000..5ba33fd29c7
--- /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
+


More information about the Binutils-cvs mailing list