diff --git a/valgrind-3.14.0-subrange_type-count.patch b/valgrind-3.14.0-subrange_type-count.patch new file mode 100644 index 0000000..817d749 --- /dev/null +++ b/valgrind-3.14.0-subrange_type-count.patch @@ -0,0 +1,43 @@ +commit 3528f84037833a799538a2fc48ed30dd09c77b5e +Author: Mark Wielaard +Date: Fri Jan 11 21:52:26 2019 +0100 + + readdwarf3.c (parse_type_DIE): Accept DW_TAG_subrange_type with DW_AT_count + + GCC9 generates a subrange_type with a lower_bound and count, but no + upper_bound attribute. This simply means the upper bound is lower + plus count. + +diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c +index e9a3816..1b49ba4 100644 +--- a/coregrind/m_debuginfo/readdwarf3.c ++++ b/coregrind/m_debuginfo/readdwarf3.c +@@ -3610,6 +3610,7 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents, + Bool have_count = False; + Long lower = 0; + Long upper = 0; ++ Long count = 0; + + switch (parser->language) { + case 'C': have_lower = True; lower = 0; break; +@@ -3641,7 +3642,7 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents, + have_upper = True; + } + if (attr == DW_AT_count && cts.szB > 0) { +- /*count = (Long)cts.u.val;*/ ++ count = (Long)cts.u.val; + have_count = True; + } + } +@@ -3680,6 +3681,11 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents, + boundE.Te.Bound.knownU = False; + boundE.Te.Bound.boundL = 0; + boundE.Te.Bound.boundU = 0; ++ } else if (have_lower && (!have_upper) && (have_count)) { ++ boundE.Te.Bound.knownL = True; ++ boundE.Te.Bound.knownU = True; ++ boundE.Te.Bound.boundL = lower; ++ boundE.Te.Bound.boundU = lower + count; + } else { + /* FIXME: handle more cases */ + goto_bad_DIE; diff --git a/valgrind.spec b/valgrind.spec index b833a97..f150d1c 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -3,7 +3,7 @@ Summary: Tool for finding memory management bugs in programs Name: %{?scl_prefix}valgrind Version: 3.14.0 -Release: 9%{?dist} +Release: 10%{?dist} Epoch: 1 License: GPLv2+ URL: http://www.valgrind.org/ @@ -170,6 +170,9 @@ Patch33: valgrind-3.14.0-power9-addex.patch # KDE#402480 Do not use %rsp in clobber list Patch34: valgrind-3.14.0-rsp-clobber.patch +# commit 3528f8 Accept DW_TAG_subrange_type with DW_AT_count +Patch35: valgrind-3.14.0-subrange_type-count.patch + %if %{build_multilib} # Ensure glibc{,-devel} is installed for both multilib arches @@ -337,6 +340,7 @@ Valgrind User Manual for details. %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 -p1 %build CC=gcc @@ -571,8 +575,9 @@ fi %endif %changelog -* Wed Jan 9 2019 Mark Wielaard +* Wed Jan 9 2019 Mark Wielaard - 3.14.0-10 - Add valgrind-3.14.0-rsp-clobber.patch +- Add valgrind-3.14.0-subrange_type-count.patch * Mon Dec 31 2018 Mark Wielaard - 3.14.0-9 - Add valgrind-3.14.0-vbit-test-sec.patch