|
From: <sv...@va...> - 2010-10-08 23:57:35
|
Author: sewardj
Date: 2010-10-09 00:57:25 +0100 (Sat, 09 Oct 2010)
New Revision: 11418
Log:
Dwarf3 reader: handle Dwarf3 created by gcc-4.5.1. In other words,
work around the all-new-buggy-Dwarf3 created by gcc-4.5.1.
Modified:
trunk/coregrind/m_debuginfo/readdwarf3.c
trunk/coregrind/m_debuginfo/tytypes.c
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c 2010-10-08 18:58:44 UTC (rev 11417)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c 2010-10-08 23:57:25 UTC (rev 11418)
@@ -3759,8 +3759,11 @@
key.dioff = varp->absOri; /* this is what we want to find */
found = VG_(lookupXA)( dioff_lookup_tab, &keyp,
&ixFirst, &ixLast );
- if (!found)
- barf("DW_AT_abstract_origin can't be resolved");
+ if (!found) {
+ /* barf("DW_AT_abstract_origin can't be resolved"); */
+ TRACE_D3(" SKIP (DW_AT_abstract_origin can't be resolved)\n\n");
+ continue;
+ }
/* If the following fails, there is more than one entry with
the same dioff. Which can't happen. */
vg_assert(ixFirst == ixLast);
Modified: trunk/coregrind/m_debuginfo/tytypes.c
===================================================================
--- trunk/coregrind/m_debuginfo/tytypes.c 2010-10-08 18:58:44 UTC (rev 11417)
+++ trunk/coregrind/m_debuginfo/tytypes.c 2010-10-08 23:57:25 UTC (rev 11418)
@@ -692,6 +692,8 @@
- bo->Te.Bound.boundL + 1) ));
}
return eszB;
+ case Te_TyVoid:
+ return mk_MaybeULong_Nothing(); /*UNKNOWN*/
default:
VG_(printf)("ML_(sizeOfType): unhandled: ");
ML_(pp_TyEnt)(ent);
|