[binutils-gdb] Stop the BFD library from complaining if a segment has no sections attached to it.
Nick Clifton
nickc@sourceware.org
Fri Feb 7 12:55:00 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9984857cfd9a85a5d1b99162f9838aba099d20a0
commit 9984857cfd9a85a5d1b99162f9838aba099d20a0
Author: Nick Clifton <nickc@redhat.com>
Date: Fri Feb 7 12:55:05 2020 +0000
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.
Diff:
---
bfd/ChangeLog | 6 ++++++
bfd/elf.c | 17 +++++++++--------
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e1a8412..584dd7f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-02-07 Nick Clifton <nickc@redhat.com>
+
+ 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 <hongjiu.lu@intel.com>
PR ld/25490
diff --git a/bfd/elf.c b/bfd/elf.c
index 5e6b9a0..c85face 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);
More information about the Binutils-cvs
mailing list