From 9984857cfd9a85a5d1b99162f9838aba099d20a0 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 7 Feb 2020 12:55:05 +0000 Subject: [PATCH] Stop the BFD library from complaining if a segment has no sections attached to it. PR 23932 * elf.c (rewrite_elf_program_header): Do not complain if no sections are mapped to a segment. --- bfd/ChangeLog | 6 ++++++ bfd/elf.c | 17 +++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e1a84123254..584dd7f3447 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-02-07 Nick Clifton + + PR 23932 + * elf.c (rewrite_elf_program_header): Do not complain if no + sections are mapped to a segment. + 2020-02-06 H.J. Lu PR ld/25490 diff --git a/bfd/elf.c b/bfd/elf.c index 5e6b9a0f416..c85face6309 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -7360,14 +7360,9 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) /* PR 23932. A corrupt input file may contain sections that cannot be assigned to any segment - because for example they have a - negative size - or segments that do not contain any sections. */ - if (map->count == 0) - { - sorry: - bfd_set_error (bfd_error_sorry); - free (sections); - return FALSE; - } + negative size - or segments that do not contain any sections. + But there are also valid reasons why a segment can be empty. + So allow a count of zero. */ /* Add the current segment to the list of built segments. */ *pointer_to_map = map; @@ -7399,6 +7394,12 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) map->includes_filehdr = 0; map->includes_phdrs = 0; } + + continue; + sorry: + bfd_set_error (bfd_error_sorry); + free (sections); + return FALSE; } while (isec < section_count); -- 2.30.2