From f98450c6eee6878ebf5b052d231758026d250427 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 2 Mar 2017 14:47:29 +0000 Subject: [PATCH] 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. --- bfd/ChangeLog | 6 ++++++ bfd/elf.c | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 607194fffb..4a27e04438 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2017-03-02 Martin Bickel + + 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 * elf32-ppc.c (ppc_elf_vle_split16): Correct insn mask typo. 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; -- 2.34.1