diff options
-rw-r--r-- | bfd/ChangeLog | 9 | ||||
-rw-r--r-- | bfd/elf32-s390.c | 4 | ||||
-rw-r--r-- | bfd/elf64-s390.c | 8 |
3 files changed, 18 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a81b982..496a5ca 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2017-07-28 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + Backport from mainline + 2017-07-28 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + * elf32-s390.c (elf_s390_finish_dynamic_sections): Add NULL + pointer check for htab->elf.irelplt. + * elf64-s390.c (elf_s390_finish_dynamic_sections): Likewise. + 2017-07-25 Tristan Gingold <gingold@adacore.com> * version.m4: Bump version to 2.28.2 diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index ddb6f5b..7f22ae1 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -3930,7 +3930,9 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd, break; case DT_PLTRELSZ: - dyn.d_un.d_val = htab->elf.srelplt->size + htab->elf.irelplt->size; + dyn.d_un.d_val = htab->elf.srelplt->size; + if (htab->elf.irelplt) + dyn.d_un.d_val += htab->elf.irelplt->size; break; } diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index fbbf8d6..a59777c 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -3729,7 +3729,9 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd, break; case DT_PLTRELSZ: - dyn.d_un.d_val = htab->elf.srelplt->size + htab->elf.irelplt->size; + dyn.d_un.d_val = htab->elf.srelplt->size; + if (htab->elf.irelplt) + dyn.d_un.d_val += htab->elf.irelplt->size; break; case DT_RELASZ: @@ -3740,7 +3742,9 @@ 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. */ - dyn.d_un.d_val -= htab->elf.srelplt->size + htab->elf.irelplt->size; + dyn.d_un.d_val -= htab->elf.srelplt->size; + if (htab->elf.irelplt) + dyn.d_un.d_val -= htab->elf.irelplt->size; break; } |