aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-03-02 14:47:29 +0000
committerNick Clifton <nickc@redhat.com>2017-03-02 14:47:29 +0000
commitf98450c6eee6878ebf5b052d231758026d250427 (patch)
tree7f837c42bbfdd58879e7e8daa2e66733932de8b1
parentc871dadee1817d4b9f3ba6ee792730c9eccf88e0 (diff)
downloadfsf-binutils-gdb-f98450c6eee6878ebf5b052d231758026d250427.zip
fsf-binutils-gdb-f98450c6eee6878ebf5b052d231758026d250427.tar.gz
fsf-binutils-gdb-f98450c6eee6878ebf5b052d231758026d250427.tar.bz2
Disable warning message about a program header with no associated sections when that header's file size is non-zero.
PR ld/21212 * elf.c (rewrite_elf_program_header): Do not issue a warning for empty segments which have a non-zero filesz.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf.c13
2 files changed, 15 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 607194f..4a27e04 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-02 Martin Bickel <binutils@ineranves.de>
+
+ PR ld/21212
+ * elf.c (rewrite_elf_program_header): Do not issue a warning for
+ empty segments which have a non-zero filesz.
+
2017-03-02 Alan Modra <amodra@gmail.com>
* elf32-ppc.c (ppc_elf_vle_split16): Correct insn mask typo.
diff --git a/bfd/elf.c b/bfd/elf.c
index 94726ba..9418e51 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -6689,11 +6689,16 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
/* Special segments, such as the PT_PHDR segment, may contain
no sections, but ordinary, loadable segments should contain
something. They are allowed by the ELF spec however, so only
- a warning is produced. */
- if (segment->p_type == PT_LOAD)
+ a warning is produced.
+ 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
+ && (segment->p_filesz > 0 || segment->p_memsz == 0))
+ /* xgettext:c-format */
_bfd_error_handler (_("\
-%B: warning: Empty loadable segment detected, is this intentional ?"),
- ibfd);
+%B: warning: Empty loadable segment detected at vaddr=0x%.8x, is this intentional ?"),
+ ibfd, segment->p_vaddr);
map->count = 0;
*pointer_to_map = map;