]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Dwarf3 reader: handle Dwarf3 created by gcc-4.5.1. In other words,
authorJulian Seward <jseward@acm.org>
Fri, 8 Oct 2010 23:57:25 +0000 (23:57 +0000)
committerJulian Seward <jseward@acm.org>
Fri, 8 Oct 2010 23:57:25 +0000 (23:57 +0000)
work around the all-new-buggy-Dwarf3 created by gcc-4.5.1.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11418

coregrind/m_debuginfo/readdwarf3.c
coregrind/m_debuginfo/tytypes.c

index 37c7f42d7ca47b738f2363db1522d1c75664bfa5..c358a1bbe9f981bad9e6e4f53ddfa844c173ebff 100644 (file)
@@ -3759,8 +3759,11 @@ void new_dwarf3_reader_wrk (
          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);
index 10cc47364a36ce2924dd680e9e264dba0906b5c2..c16813bbf5a93a664d0ad4ca8452b5622307e731 100644 (file)
@@ -692,6 +692,8 @@ MaybeULong ML_(sizeOfType)( XArray* /* of TyEnt */ tyents,
                                                   - 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);