diff options
author | 2017-02-16 12:23:12 +1030 | |
---|---|---|
committer | 2017-02-16 22:54:36 +1030 | |
commit | 247d6c4c14769b7576d810a381a68e35388ee874 (patch) | |
tree | 6657dd55cfe4ea323b1262af43b06058c43ce6fe /bfd/elf32-hppa.c | |
parent | Fix more powerpc testsuite source errors (diff) | |
download | binutils-gdb-247d6c4c14769b7576d810a381a68e35388ee874.tar.gz binutils-gdb-247d6c4c14769b7576d810a381a68e35388ee874.tar.bz2 binutils-gdb-247d6c4c14769b7576d810a381a68e35388ee874.zip |
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.
Diffstat (limited to 'bfd/elf32-hppa.c')
-rw-r--r-- | bfd/elf32-hppa.c | 2 |
1 files changed, 2 insertions, 0 deletions
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 { |