(open_and_init_dwp_file): Protect against some segvs
authorDoug Evans <dje@google.com>
Thu, 28 Sep 2017 16:20:59 +0000 (09:20 -0700)
committerDoug Evans <dje@google.com>
Thu, 28 Sep 2017 16:24:48 +0000 (09:24 -0700)
This is a "tiny patch", no assignment required.

2017-09-28  Alexander Shaposhnikov <alexander.v.shaposhnikov@gmail.com>

* dwarf2read.c (open_and_init_dwp_file): Protect against dwp_file
having NULL cus or tus.

gdb/ChangeLog
gdb/dwarf2read.c

index f109ffe..2120df6 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-28  Alexander Shaposhnikov <alexander.v.shaposhnikov@gmail.com> (tiny patch)
+
+       * dwarf2read.c (open_and_init_dwp_file): Protect against dwp_file
+       having NULL cus or tus.
+
 2017-09-27  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * arm-tdep.c: (convert_from_extended): Remove.
index 7a59c1b..1b15adc 100644 (file)
@@ -11199,7 +11199,8 @@ open_and_init_dwp_file (void)
   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
 
   /* The DWP file version is stored in the hash table.  Oh well.  */
-  if (dwp_file->cus->version != dwp_file->tus->version)
+  if (dwp_file->cus && dwp_file->tus
+      && dwp_file->cus->version != dwp_file->tus->version)
     {
       /* Technically speaking, we should try to limp along, but this is
         pretty bizarre.  We use pulongest here because that's the established
@@ -11209,7 +11210,13 @@ open_and_init_dwp_file (void)
             pulongest (dwp_file->cus->version),
             pulongest (dwp_file->tus->version), dwp_name.c_str ());
     }
-  dwp_file->version = dwp_file->cus->version;
+
+  if (dwp_file->cus)
+    dwp_file->version = dwp_file->cus->version;
+  else if (dwp_file->tus)
+    dwp_file->version = dwp_file->tus->version;
+  else
+    dwp_file->version = 2;
 
   if (dwp_file->version == 2)
     bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,