From: Alan Modra Date: Thu, 16 Feb 2017 01:53:12 +0000 (+1030) Subject: PR21132, hppa-linux pie support doesn't work X-Git-Tag: binutils-2_28~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a3cacb06d6ecfbe3ab0e0059bf6a4eb8b4b9dc6;p=thirdparty%2Fbinutils-gdb.git PR21132, hppa-linux pie support doesn't work This fixes a long-standing hppa bug seen when generating PIEs, and I think possible to trigger with forced local symbols in shared libraries. Not allocating enough space for PLT relocs results in ld writing outside of the buffer. PR 21132 * elf32-hppa.c (allocate_plt_static): Allocate space for relocs if pic. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 30161c8ce5a..d39283afd75 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2017-02-16 Alan Modra + + PR 21132 + * elf32-hppa.c (allocate_plt_static): Allocate space for relocs + if pic. + 2017-02-15 H.J. Lu PR ld/21168 diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index de14468a27e..e64ea9aff98 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -1976,6 +1976,8 @@ allocate_plt_static (struct elf_link_hash_entry *eh, void *inf) sec = htab->etab.splt; eh->plt.offset = sec->size; sec->size += PLT_ENTRY_SIZE; + if (bfd_link_pic (info)) + htab->etab.srelplt->size += sizeof (Elf32_External_Rela); } else {