From: Marcin Kościelnicki Date: Wed, 8 Jun 2016 12:01:31 +0000 (+0200) Subject: bfd/s390: Fix DT_PLTRELSZ in presence of R_390_IRELATIVE. X-Git-Tag: binutils-2_27~222 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f92339b8f316de65add11aeb9cd8ea72630aa556;p=external%2Fbinutils.git 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. --- 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 + + * 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 * 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; }