|
From: <sv...@va...> - 2012-01-16 17:15:48
|
Author: bart
Date: 2012-01-16 17:11:07 +0000 (Mon, 16 Jan 2012)
New Revision: 12338
Log:
debug info reader: Add support for DW_TAG_unspecified_type. Closes #278313.
Modified:
trunk/coregrind/m_debuginfo/readdwarf3.c
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c 2012-01-16 13:08:05 UTC (rev 12337)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c 2012-01-16 17:11:07 UTC (rev 12338)
@@ -2723,6 +2723,21 @@
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*/
|