From: Alan Modra Date: Sat, 22 Feb 2020 02:16:33 +0000 (+1030) Subject: PR25585, PHDR segment not covered by LOAD segment X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=acc4a8b8ac83077819948126bc7501d35eb1ea74;p=thirdparty%2Fbinutils-gdb.git PR25585, PHDR segment not covered by LOAD segment I closed this bug as invalid, but I think it is worth mentioning in NEWS that older linkers didn't check PT_PHDR very well. The patch also allows people to force an output file with --noinhibit-exec after the error. bfd/ PR 25585 * elf.c (assign_file_positions_for_load_sections): Continue linking on "PHDR segment not covered by LOAD segment" errors. ld/ PR 25585 * NEWS: Mention better "PHDR segment not covered by LOAD segment" checking. (cherry picked from commit 7b3c27152b5695177a2cd5adc0d7b0255f99aca0) --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 17cb9775b56..e5da1b46589 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-02-22 Alan Modra + + PR 25585 + * elf.c (assign_file_positions_for_load_sections): Continue linking + on "PHDR segment not covered by LOAD segment" errors. + 2020-02-19 H.J. Lu PR binutils/25355 diff --git a/bfd/elf.c b/bfd/elf.c index a8d98a60f4e..f02b7249dd0 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -5934,7 +5934,11 @@ assign_file_positions_for_load_sections (bfd *abfd, _bfd_error_handler (_("%pB: error: PHDR segment not covered" " by LOAD segment"), abfd); - return FALSE; + if (link_info == NULL) + return FALSE; + /* Arrange for the linker to exit with an error, deleting + the output file unless --noinhibit-exec is given. */ + link_info->callbacks->info ("%X"); } /* Check that all sections are in a PT_LOAD segment. diff --git a/ld/ChangeLog b/ld/ChangeLog index 999e0f4e335..ebbf64e8939 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2020-02-22 Alan Modra + + PR 25585 + * NEWS: Mention better "PHDR segment not covered by LOAD segment" + checking. + 2020-02-14 Nick Clifton Import from the mainline: diff --git a/ld/NEWS b/ld/NEWS index f659ccfc06b..7734d23d5bb 100644 --- a/ld/NEWS +++ b/ld/NEWS @@ -2,6 +2,12 @@ Changes in 2.34: +* The ld check for "PHDR segment not covered by LOAD segment" is more + effective, catching cases that were wrongly allowed by previous versions of + ld. If you see this error it is likely you are linking with a bad linker + script or the binary you are building is not intended to be loaded by a + dynamic loader. In the latter case --no-dynamic-linker is appropriate. + * cr16c support removed. * Add support for z80-elf.