[PATCH] bfd/s390: Fix DT_PLTRELSZ in presence of R_390_IRELATIVE.
Marcin Kościelnicki
koriakin@0x04.net
Thu Jun 16 15:16:00 GMT 2016
Ping?
On 08/06/16 18:19, Marcin KoÅcielnicki wrote:
> 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.
> ---
> OK to push?
>
> bfd/elf32-s390.c | 3 +--
> bfd/elf64-s390.c | 6 ++----
> 2 files changed, 3 insertions(+), 6 deletions(-)
>
> 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;
> }
>
>
More information about the Binutils
mailing list