diff options
author | Nick Clifton <nickc@redhat.com> | 2021-11-17 15:59:16 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2021-11-17 15:59:16 +0000 |
commit | ee9e412f14908c1055cb00fab9307d1723981639 (patch) | |
tree | 4a5ba4638187d448bac46a3444a372ae0bb20922 | |
parent | 0df670bbe009d3b57f5dbf9599913ad06013ec4e (diff) | |
download | binutils-ee9e412f14908c1055cb00fab9307d1723981639.zip binutils-ee9e412f14908c1055cb00fab9307d1723981639.tar.gz binutils-ee9e412f14908c1055cb00fab9307d1723981639.tar.bz2 |
Fix the linker script parser so that it will recognise the PT_GNU_RELRO segment type, and the linker itself so that it will gracefully handle being unable to assign any sections to such a segment.
PR 28452
bfd * elf.c (assign_file_positions_for_non_load_sections): Replace
assertion with a warning message.
ld * ldgram.y: Add support for PT_GNU_RELRO and PT_GNU_PROPERTY.
* ldgram.c: Regenerate.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf.c | 11 | ||||
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/ldgram.y | 4 |
4 files changed, 24 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d539dbb..35b659b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2021-11-17 Nick Clifton <nickc@redhat.com> + + PR 28452 + * elf.c (assign_file_positions_for_non_load_sections): Replace + assertion with a warning message. + 2021-10-19 Nick Clifton <nickc@redhat.com> * linker.c (_bfd_generic_link_add_one_symbol): Test for a NULL @@ -6261,10 +6261,15 @@ assign_file_positions_for_non_load_sections (bfd *abfd, } } } - if (link_info != NULL) - BFD_ASSERT (ok); + if (!ok) - memset (p, 0, sizeof *p); + { + if (link_info != NULL) + _bfd_error_handler + (_("%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"), + abfd); + memset (p, 0, sizeof *p); + } } else if (p->p_type == PT_GNU_STACK) { diff --git a/ld/ChangeLog b/ld/ChangeLog index c23af57..d68b820 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2021-11-17 Nick Clifton <nickc@redhat.com> + + PR 28452 + * ldgram.y: Add support for PT_GNU_RELRO and PT_GNU_PROPERTY. + * ldgram.c: Regenerate. + 2021-11-15 Roland McGrath <mcgrathr@google.com> * testsuite/ld-aarch64/dt_textrel.d: Pass explicit -z notext in diff --git a/ld/ldgram.y b/ld/ldgram.y index c8396bb..2eb989d 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -1262,6 +1262,10 @@ phdr_type: $$ = exp_intop (0x6474e550); else if (strcmp (s, "PT_GNU_STACK") == 0) $$ = exp_intop (0x6474e551); + else if (strcmp (s, "PT_GNU_RELRO") == 0) + $$ = exp_intop (0x6474e552); + else if (strcmp (s, "PT_GNU_PROPERTY") == 0) + $$ = exp_intop (0x6474e553); else { einfo (_("\ |