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.
This commit is contained in:
Alan Modra 2018-02-17 09:21:17 +10:30
parent c2596c4a72
commit 325ba6fb34
2 changed files with 8 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2018-02-17 Alan Modra <amodra@gmail.com>
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 <amodra@gmail.com> 2018-02-16 Alan Modra <amodra@gmail.com>
* libbfd.c (_bfd_bool_bfd_false_error): Rename from bfd_false. * libbfd.c (_bfd_bool_bfd_false_error): Rename from bfd_false.

View File

@ -5897,6 +5897,7 @@ assign_file_positions_for_non_load_sections (bfd *abfd,
lm = lm->next, lp++) lm = lm->next, lp++)
{ {
if (lp->p_type == PT_LOAD if (lp->p_type == PT_LOAD
&& lp->p_memsz != 0
&& lm->count != 0 && lm->count != 0
&& lm->sections[lm->count - 1]->vma >= start && lm->sections[lm->count - 1]->vma >= start
&& lm->sections[0]->vma < end) && lm->sections[0]->vma < end)