From 325ba6fb34be799c885fad9287d883e86b835c84 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 17 Feb 2018 09:21:17 +1030 Subject: [PATCH] Ignore degenerate PT_LOAD segments Fixes a failure triggered by -z separate-code. p_memsz is tested rather than p_filesz for objcopy --only-keep-debug where p_filesz is set to zero. PR 22845 * elf.c (assign_file_positions_for_non_load_sections): Ignore degenerate zero size PT_LOAD segments when finding one overlapping the PT_GNU_RELRO segment. --- bfd/ChangeLog | 7 +++++++ bfd/elf.c | 1 + 2 files changed, 8 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c314485b42..946c6bcd7b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2018-02-17 Alan Modra + + PR 22845 + * elf.c (assign_file_positions_for_non_load_sections): Ignore + degenerate zero size PT_LOAD segments when finding one overlapping + the PT_GNU_RELRO segment. + 2018-02-16 Alan Modra * libbfd.c (_bfd_bool_bfd_false_error): Rename from bfd_false. diff --git a/bfd/elf.c b/bfd/elf.c index 397fa62178..b069b59265 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -5897,6 +5897,7 @@ assign_file_positions_for_non_load_sections (bfd *abfd, lm = lm->next, lp++) { if (lp->p_type == PT_LOAD + && lp->p_memsz != 0 && lm->count != 0 && lm->sections[lm->count - 1]->vma >= start && lm->sections[0]->vma < end)