aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
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 /bfd/elf.c
parentc871dadee1817d4b9f3ba6ee792730c9eccf88e0 (diff)
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.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 94726bad2e..9418e51a7e 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;