public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] ELF: Don't warn an empty PT_LOAD with the program headers
@ 2023-06-05 15:24 H.J. Lu
  0 siblings, 0 replies; only message in thread
From: H.J. Lu @ 2023-06-05 15:24 UTC (permalink / raw)
  To: bfd-cvs

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-05 15:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-05 15:24 [binutils-gdb] ELF: Don't warn an empty PT_LOAD with the program headers H.J. Lu

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).