]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
debug info reader: Add support for DW_TAG_unspecified_type. Closes #278313.
authorBart Van Assche <bvanassche@acm.org>
Mon, 16 Jan 2012 17:11:07 +0000 (17:11 +0000)
committerBart Van Assche <bvanassche@acm.org>
Mon, 16 Jan 2012 17:11:07 +0000 (17:11 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12338

coregrind/m_debuginfo/readdwarf3.c

index c5370047424ece508e27921215bf0585cff469c6..3c8c26358a2542e3a91995b2b92ff18260f18aec 100644 (file)
@@ -2723,6 +2723,21 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
          goto bad_DIE;
    }
 
+   /*
+    * Treat DW_TAG_unspecified_type as type void. An example of DW_TAG_unspecified_type:
+    *
+    * $ readelf --debug-dump /usr/lib/debug/usr/lib/libstdc++.so.6.0.16.debug
+    *  <1><10d4>: Abbrev Number: 53 (DW_TAG_unspecified_type)
+    *     <10d5>   DW_AT_name        : (indirect string, offset: 0xdb7): decltype(nullptr)
+    */
+   if (dtag == DW_TAG_unspecified_type) {
+      VG_(memset)(&typeE, 0, sizeof(typeE));
+      typeE.cuOff           = D3_INVALID_CUOFF;
+      typeE.tag             = Te_TyQual;
+      typeE.Te.TyQual.typeR = D3_FAKEVOID_CUOFF;
+      goto acquire_Type;
+   }
+
    /* else ignore this DIE */
    return;
    /*NOTREACHED*/