This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Committed] S/390: Fix claimfile failures


This fixes a segfault when trying to access the local_plt field in the
s390 specific elf data althoug the underlaying object is a generic elf
object.

This fixes the following testsuite failures:

< FAIL: plugin claimfile replace symbol with source
< FAIL: plugin claimfile resolve symbol with source
< FAIL: plugin claimfile replace file with source
< FAIL: plugin set symbol visibility with source
< FAIL: plugin ignore lib with source
< FAIL: plugin claimfile replace lib with source
< FAIL: plugin 2 with source lib
< FAIL: load plugin 2 with source
< FAIL: plugin 3 with source lib
< FAIL: load plugin 3 with source

Regression tested on s390x.

Committed to mainline and 2.29 branch.

bfd/ChangeLog:

2017-08-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* elf32-s390.c (elf_s390_finish_dynamic_sections): Skip if it
	isn't the S/390 specific elf data.
	* elf64-s390.c (elf_s390_finish_dynamic_sections): Likewise.
---
 bfd/ChangeLog    | 6 ++++++
 bfd/elf32-s390.c | 3 +++
 bfd/elf64-s390.c | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1c0c65b..d7d53d6 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2017-08-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+	* elf32-s390.c (elf_s390_finish_dynamic_sections): Skip if it
+	isn't the S/390 specific elf data.
+	* elf64-s390.c (elf_s390_finish_dynamic_sections): Likewise.
+
 2017-07-31  Kuan-Lin Chen  <rufus@andestech.com>
 
 	* elfxx-riscv.c (riscv_elf_add_sub_reloc): New function.
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index 95682b6..91853ef 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -4001,6 +4001,9 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd,
 
       symtab_hdr = &elf_symtab_hdr (ibfd);
 
+      if (!is_s390_elf (ibfd))
+	continue;
+
       local_plt = elf_s390_local_plt (ibfd);
       if (local_plt != NULL)
 	for (i = 0; i < symtab_hdr->sh_info; i++)
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 8c5b197..73d0331 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -3814,6 +3814,9 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd,
 
       symtab_hdr = &elf_symtab_hdr (ibfd);
 
+      if (!is_s390_elf (ibfd))
+	continue;
+
       local_plt = elf_s390_local_plt (ibfd);
       if (local_plt != NULL)
 	for (i = 0; i < symtab_hdr->sh_info; i++)
-- 
2.9.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]