83 lines
2.6 KiB
Diff
83 lines
2.6 KiB
Diff
From 9f57ab49b32bc14c0ff3834876a185af0a4c6e6b Mon Sep 17 00:00:00 2001
|
|
From: Tamar Christina <tamar.christina@arm.com>
|
|
Date: Tue, 21 Apr 2020 15:16:21 +0100
|
|
Subject: [PATCH] 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)
|
|
---
|
|
bfd/compress.c | 3 +++
|
|
gas/testsuite/gas/arm/pr24753.d | 7 +++++++
|
|
gas/testsuite/gas/arm/pr24753.s | 12 ++++++++++++
|
|
3 files changed, 24 insertions(+)
|
|
create mode 100644 gas/testsuite/gas/arm/pr24753.d
|
|
create mode 100644 gas/testsuite/gas/arm/pr24753.s
|
|
|
|
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. */
|
|
diff --git a/gas/testsuite/gas/arm/pr24753.d b/gas/testsuite/gas/arm/pr24753.d
|
|
new file mode 100644
|
|
index 0000000..01990d1
|
|
--- /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 0000000..5ba33fd
|
|
--- /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
|
|
+
|
|
--
|
|
1.8.3.1
|
|
|