From: Andreas Krebbel Date: Mon, 26 Jun 2017 09:01:58 +0000 (+0200) Subject: S/390: Fix testsuite segfault added with recent pgste patch. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=93ec5e23766a9f75aa4950748cf73964028a8d1b;p=binutils-gdb.git S/390: Fix testsuite segfault added with recent pgste patch. The recent pgste patch caused several testcases to fail with a segfault. Fixed with this patch by adding NULL pointer checks. regression-tested on s390x. bfd/ChangeLog: 2017-06-26 Andreas Krebbel * elf64-s390.c (elf_s390_additional_program_headers): Add NULL pointer checks. (elf_s390_modify_segment_map): Likewise. (bfd_elf_s390_set_options): Lisewise. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c5f1f236597..f9d1a7006af 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2017-06-26 Andreas Krebbel + + * elf64-s390.c (elf_s390_additional_program_headers): Add NULL + pointer checks. + (elf_s390_modify_segment_map): Likewise. + (bfd_elf_s390_set_options): Lisewise. + 2017-06-26 Alan Modra * elflink.c (_bfd_elf_link_create_dynstrtab): Don't make dynobj diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index 1af1200f6cd..f85f8cd7489 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -3978,22 +3978,29 @@ elf_s390_additional_program_headers (bfd *abfd ATTRIBUTE_UNUSED, { struct elf_s390_link_hash_table *htab; - htab = elf_s390_hash_table (info); - return htab->params->pgste; + if (info) + { + htab = elf_s390_hash_table (info); + if (htab) + return htab->params->pgste; + } + return 0; } /* Add the PT_S390_PGSTE program header. */ static bfd_boolean -elf_s390_modify_segment_map (bfd *abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info) +elf_s390_modify_segment_map (bfd *abfd, struct bfd_link_info *info) { struct elf_s390_link_hash_table *htab; struct elf_segment_map *m, *pm = NULL; + if (!abfd || !info) + return TRUE; + htab = elf_s390_hash_table (info); - if (!htab->params->pgste) + if (!htab || !htab->params->pgste) return TRUE; /* If there is already a PT_S390_PGSTE header, avoid adding @@ -4027,8 +4034,12 @@ bfd_elf_s390_set_options (struct bfd_link_info *info, { struct elf_s390_link_hash_table *htab; - htab = elf_s390_hash_table (info); - htab->params = params; + if (info) + { + htab = elf_s390_hash_table (info); + if (htab) + htab->params = params; + } return TRUE; }