aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-s390.c
diff options
context:
space:
mode:
authorMarcin Koƛcielnicki <koriakin@0x04.net>2016-06-08 14:01:31 +0200
committerMarcin Koƛcielnicki <koriakin@0x04.net>2016-06-16 17:22:14 +0200
commitf92339b8f316de65add11aeb9cd8ea72630aa556 (patch)
treea4df302516b2c3c9b237b1ab5eb977f38a4a9a49 /bfd/elf64-s390.c
parent081b1afe5a8cfa02bf3b3cdefb80c266705c17d1 (diff)
downloadgdb-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.c6
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;
}