From: Tom Hughes Date: Mon, 3 Aug 2009 08:50:58 +0000 (+0000) Subject: Handle some more DW_TAG_subrange_type cases which Fedora 11's X-Git-Tag: svn/VALGRIND_3_5_0~155 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=688d43d18decf8b12688b1538415f42b9ffa82e6;p=thirdparty%2Fvalgrind.git Handle some more DW_TAG_subrange_type cases which Fedora 11's gcc 4.4.0 seems to generate. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10695 --- diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c index 3c194b961c..09dd3c87eb 100644 --- a/coregrind/m_debuginfo/readdwarf3.c +++ b/coregrind/m_debuginfo/readdwarf3.c @@ -2476,12 +2476,24 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents, boundE.Te.Bound.knownU = True; boundE.Te.Bound.boundL = lower; boundE.Te.Bound.boundU = upper; - } + } else if (have_lower && (!have_upper) && (!have_count)) { boundE.Te.Bound.knownL = True; boundE.Te.Bound.knownU = False; boundE.Te.Bound.boundL = lower; boundE.Te.Bound.boundU = 0; + } + else if ((!have_lower) && have_upper && (!have_count)) { + boundE.Te.Bound.knownL = False; + boundE.Te.Bound.knownU = True; + boundE.Te.Bound.boundL = 0; + boundE.Te.Bound.boundU = upper; + } + else if ((!have_lower) && (!have_upper) && (!have_count)) { + boundE.Te.Bound.knownL = False; + boundE.Te.Bound.knownU = False; + boundE.Te.Bound.boundL = 0; + boundE.Te.Bound.boundU = 0; } else { /* FIXME: handle more cases */ goto bad_DIE;