diff options
author | Marcin Kościelnicki <koriakin@0x04.net> | 2016-06-08 14:01:31 +0200 |
---|---|---|
committer | Marcin Kościelnicki <koriakin@0x04.net> | 2016-06-16 17:22:14 +0200 |
commit | f92339b8f316de65add11aeb9cd8ea72630aa556 (patch) | |
tree | a4df302516b2c3c9b237b1ab5eb977f38a4a9a49 /bfd | |
parent | 081b1afe5a8cfa02bf3b3cdefb80c266705c17d1 (diff) | |
download | gdb-f92339b8f316de65add11aeb9cd8ea72630aa556.zip gdb-f92339b8f316de65add11aeb9cd8ea72630aa556.tar.gz gdb-f92339b8f316de65add11aeb9cd8ea72630aa556.tar.bz2 |
bfd/s390: Fix DT_PLTRELSZ in presence of R_390_IRELATIVE.
This was broken by 4ade44b727ee77adaa9c22719935d012e253a5e6,
which changed the calculation to use the .rela.plt linker section
instead of its output section - thus skipping .rela.iplt .
Fix the calculations to include it.
bfd/ChangeLog:
* elf32-s390.c (elf_s390_finish_dynamic_sections): Include
.rela.iplt in DT_PLTRELSZ.
* elf64-s390.c (elf_s390_finish_dynamic_sections): Likewise,
for DT_PLTRELSZ and DT_RELASZ as well.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf32-s390.c | 3 | ||||
-rw-r--r-- | bfd/elf64-s390.c | 6 |
3 files changed, 10 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ad9e027..09150db 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2016-06-16 Marcin Kościelnicki <koriakin@0x04.net> + + * elf32-s390.c (elf_s390_finish_dynamic_sections): Include + .rela.iplt in DT_PLTRELSZ. + * elf64-s390.c (elf_s390_finish_dynamic_sections): Likewise, + for DT_PLTRELSZ and DT_RELASZ as well. + 2016-06-16 H.J. Lu <hongjiu.lu@intel.com> * elf32-i386.c (elf_i386_check_relocs): Skip relocations in diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index 9480f72..1f058d2 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -3958,8 +3958,7 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd, break; case DT_PLTRELSZ: - s = htab->elf.srelplt; - dyn.d_un.d_val = s->size; + dyn.d_un.d_val = htab->elf.srelplt->size + htab->elf.irelplt->size; break; } diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index cf174f8..a39e1c9 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -3754,8 +3754,7 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd, break; case DT_PLTRELSZ: - s = htab->elf.srelplt; - dyn.d_un.d_val = s->size; + dyn.d_un.d_val = htab->elf.srelplt->size + htab->elf.irelplt->size; break; case DT_RELASZ: @@ -3766,8 +3765,7 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd, linker script arranges for .rela.plt to follow all other relocation sections, we don't have to worry about changing the DT_RELA entry. */ - s = htab->elf.srelplt; - dyn.d_un.d_val -= s->size; + dyn.d_un.d_val -= htab->elf.srelplt->size + htab->elf.irelplt->size; break; } |