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/elf64-s390.c | |
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/elf64-s390.c')
-rw-r--r-- | bfd/elf64-s390.c | 6 |
1 files changed, 2 insertions, 4 deletions
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; } |