From: H.J. Lu <hjl@sourceware.org>
To: bfd-cvs@sourceware.org
Subject: [binutils-gdb] ELF: Don't warn an empty PT_LOAD with the program headers
Date: Mon, 5 Jun 2023 15:24:28 +0000 (GMT) [thread overview]
Message-ID: <20230605152428.14704388200C@sourceware.org> (raw)
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3f60b98298fd77dec3a9182797c9dd6d7796bcaf
commit 3f60b98298fd77dec3a9182797c9dd6d7796bcaf
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Jun 2 11:54:21 2023 -0700
ELF: Don't warn an empty PT_LOAD with the program headers
When rewriting the program headers, don't warn an empty PT_LOAD with the
program headers.
bfd/
PR binutils/30508
* elf.c (rewrite_elf_program_header): Don't warn if an empty
PT_LOAD contains the program headers.
ld/
PR binutils/30508
* testsuite/ld-elf/pr30508.d: New file.
* testsuite/ld-elf/pr30508.s: Likewise.
Diff:
---
bfd/elf.c | 2 ++
ld/testsuite/ld-elf/pr30508.d | 13 +++++++++++++
ld/testsuite/ld-elf/pr30508.s | 14 ++++++++++++++
3 files changed, 29 insertions(+)
diff --git a/bfd/elf.c b/bfd/elf.c
index 94954a8fbb9..81eb3ef71fa 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7210,10 +7210,12 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd, bfd_vma maxpagesize)
no sections, but ordinary, loadable segments should contain
something. They are allowed by the ELF spec however, so only
a warning is produced.
+ Don't warn if an empty PT_LOAD contains the program headers.
There is however the valid use case of embedded systems which
have segments with p_filesz of 0 and a p_memsz > 0 to initialize
flash memory with zeros. No warning is shown for that case. */
if (segment->p_type == PT_LOAD
+ && !map->includes_phdrs
&& (segment->p_filesz > 0 || segment->p_memsz == 0))
/* xgettext:c-format */
_bfd_error_handler
diff --git a/ld/testsuite/ld-elf/pr30508.d b/ld/testsuite/ld-elf/pr30508.d
new file mode 100644
index 00000000000..35f66159283
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr30508.d
@@ -0,0 +1,13 @@
+#ld: -z separate-code
+#objcopy_linked_file: -R .foo
+#readelf: -lW
+#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
+#xfail: h8300-*-* mips*-*-* rx-*-linux*
+
+#...
+ Section to Segment mapping:
+ Segment Sections...
+#...
+ 0.
+#...
+ 0. .text
diff --git a/ld/testsuite/ld-elf/pr30508.s b/ld/testsuite/ld-elf/pr30508.s
new file mode 100644
index 00000000000..5a2778c9bff
--- /dev/null
+++ b/ld/testsuite/ld-elf/pr30508.s
@@ -0,0 +1,14 @@
+ .text
+ .global start /* Used by SH targets. */
+start:
+ .global _start
+_start:
+ .global __start
+__start:
+ .global main /* Used by HPPA targets. */
+main:
+ .globl _main /* Used by LynxOS targets. */
+_main:
+ .dc.a 0
+ .section .foo,"ax",%progbits
+ .dc.a 0
reply other threads:[~2023-06-05 15:24 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230605152428.14704388200C@sourceware.org \
--to=hjl@sourceware.org \
--cc=bfd-cvs@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).