Blame SOURCES/gdb-rhbz1420304-s390x-30of35.patch

e1d87d
commit 93ec5e23766a9f75aa4950748cf73964028a8d1b
e1d87d
Author: Andreas Krebbel <krebbel@linux.vnet.ibm.com>
e1d87d
Date:   Mon Jun 26 11:01:58 2017 +0200
e1d87d
e1d87d
    S/390: Fix testsuite segfault added with recent pgste patch.
e1d87d
    
e1d87d
    The recent pgste patch caused several testcases to fail with a
e1d87d
    segfault.  Fixed with this patch by adding NULL pointer checks.
e1d87d
    
e1d87d
    regression-tested on s390x.
e1d87d
    
e1d87d
    bfd/ChangeLog:
e1d87d
    
e1d87d
    2017-06-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
e1d87d
    
e1d87d
            * elf64-s390.c (elf_s390_additional_program_headers): Add NULL
e1d87d
            pointer checks.
e1d87d
            (elf_s390_modify_segment_map): Likewise.
e1d87d
            (bfd_elf_s390_set_options): Lisewise.
e1d87d
e1d87d
### a/bfd/ChangeLog
e1d87d
### b/bfd/ChangeLog
e1d87d
## -1,3 +1,10 @@
e1d87d
+2017-06-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
e1d87d
+
e1d87d
+	* elf64-s390.c (elf_s390_additional_program_headers): Add NULL
e1d87d
+	pointer checks.
e1d87d
+	(elf_s390_modify_segment_map): Likewise.
e1d87d
+	(bfd_elf_s390_set_options): Lisewise.
e1d87d
+
e1d87d
 2017-06-26  Alan Modra  <amodra@gmail.com>
e1d87d
 
e1d87d
 	* elflink.c (_bfd_elf_link_create_dynstrtab): Don't make dynobj
e1d87d
--- a/bfd/elf64-s390.c
e1d87d
+++ b/bfd/elf64-s390.c
e1d87d
@@ -3978,22 +3978,29 @@ elf_s390_additional_program_headers (bfd *abfd ATTRIBUTE_UNUSED,
e1d87d
 {
e1d87d
   struct elf_s390_link_hash_table *htab;
e1d87d
 
e1d87d
-  htab = elf_s390_hash_table (info);
e1d87d
-  return htab->params->pgste;
e1d87d
+  if (info)
e1d87d
+    {
e1d87d
+      htab = elf_s390_hash_table (info);
e1d87d
+      if (htab)
e1d87d
+	return htab->params->pgste;
e1d87d
+    }
e1d87d
+  return 0;
e1d87d
 }
e1d87d
 
e1d87d
 
e1d87d
 /* Add the PT_S390_PGSTE program header.  */
e1d87d
 
e1d87d
 static bfd_boolean
e1d87d
-elf_s390_modify_segment_map (bfd *abfd ATTRIBUTE_UNUSED,
e1d87d
-			     struct bfd_link_info *info)
e1d87d
+elf_s390_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
e1d87d
 {
e1d87d
   struct elf_s390_link_hash_table *htab;
e1d87d
   struct elf_segment_map *m, *pm = NULL;
e1d87d
 
e1d87d
+  if (!abfd || !info)
e1d87d
+    return TRUE;
e1d87d
+
e1d87d
   htab = elf_s390_hash_table (info);
e1d87d
-  if (!htab->params->pgste)
e1d87d
+  if (!htab || !htab->params->pgste)
e1d87d
     return TRUE;
e1d87d
 
e1d87d
   /* If there is already a PT_S390_PGSTE header, avoid adding
e1d87d
@@ -4027,8 +4034,12 @@ bfd_elf_s390_set_options (struct bfd_link_info *info,
e1d87d
 {
e1d87d
   struct elf_s390_link_hash_table *htab;
e1d87d
 
e1d87d
-  htab = elf_s390_hash_table (info);
e1d87d
-  htab->params = params;
e1d87d
+  if (info)
e1d87d
+    {
e1d87d
+      htab = elf_s390_hash_table (info);
e1d87d
+      if (htab)
e1d87d
+	htab->params = params;
e1d87d
+    }
e1d87d
 
e1d87d
   return TRUE;
e1d87d
 }