Jakub Jelinek 21fc84
--- valgrind-3.7.0/coregrind/m_debuginfo/readdwarf3.c	(revision 12337)
Jakub Jelinek 21fc84
+++ valgrind-3.7.0/coregrind/m_debuginfo/readdwarf3.c	(revision 12338)
Jakub Jelinek 21fc84
@@ -2723,6 +2723,21 @@ static void parse_type_DIE ( /*MOD*/XArr
Jakub Jelinek 21fc84
          goto bad_DIE;
Jakub Jelinek 21fc84
    }
Jakub Jelinek 21fc84
 
Jakub Jelinek 21fc84
+   /*
Jakub Jelinek 21fc84
+    * Treat DW_TAG_unspecified_type as type void. An example of DW_TAG_unspecified_type:
Jakub Jelinek 21fc84
+    *
Jakub Jelinek 21fc84
+    * $ readelf --debug-dump /usr/lib/debug/usr/lib/libstdc++.so.6.0.16.debug
Jakub Jelinek 21fc84
+    *  <1><10d4>: Abbrev Number: 53 (DW_TAG_unspecified_type)
Jakub Jelinek 21fc84
+    *     <10d5>   DW_AT_name        : (indirect string, offset: 0xdb7): decltype(nullptr)
Jakub Jelinek 21fc84
+    */
Jakub Jelinek 21fc84
+   if (dtag == DW_TAG_unspecified_type) {
Jakub Jelinek 21fc84
+      VG_(memset)(&typeE, 0, sizeof(typeE));
Jakub Jelinek 21fc84
+      typeE.cuOff           = D3_INVALID_CUOFF;
Jakub Jelinek 21fc84
+      typeE.tag             = Te_TyQual;
Jakub Jelinek 21fc84
+      typeE.Te.TyQual.typeR = D3_FAKEVOID_CUOFF;
Jakub Jelinek 21fc84
+      goto acquire_Type;
Jakub Jelinek 21fc84
+   }
Jakub Jelinek 21fc84
+
Jakub Jelinek 21fc84
    /* else ignore this DIE */
Jakub Jelinek 21fc84
    return;
Jakub Jelinek 21fc84
    /*NOTREACHED*/