From 02fda204af001616f3e3631f35daf04e20dabcd2 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Nov 24 2013 19:38:26 +0000 Subject: Add valgrind-3.9.0-anon-typedef.patch. --- diff --git a/valgrind-3.9.0-anon-typedef.patch b/valgrind-3.9.0-anon-typedef.patch new file mode 100644 index 0000000..22e9efb --- /dev/null +++ b/valgrind-3.9.0-anon-typedef.patch @@ -0,0 +1,73 @@ +commit 836b51a998fe520728aab7c5e1b156cadaa20c20 +Author: mjw +Date: Sun Nov 24 17:19:35 2013 +0000 + + Bug 327916 - DW_TAG_typedef may have no name + + We already accepted DW_TAG_typedef without a name for Ada. But g++ for + OpenMP can also emit such nameless DW_TAG_typedefs. Just accept them. + Also fix up anonymous enum and typedef printing in tytypes.c. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13718 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c +index b0a7a92..f64a97b 100644 +--- a/coregrind/m_debuginfo/readdwarf3.c ++++ b/coregrind/m_debuginfo/readdwarf3.c +@@ -2926,19 +2926,17 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents, + = cook_die_using_form( cc, (UWord)cts.u.val, form ); + } + } +- /* Do we have something that looks sane? */ +- if (/* must have a name */ +- typeE.Te.TyTyDef.name == NULL +- /* However gcc gnat Ada generates minimal typedef +- such as the below => accept no name for Ada. +- <6><91cc>: DW_TAG_typedef +- DW_AT_abstract_ori: <9066> +- */ +- && parser->language != 'A' +- /* but the referred-to type can be absent */) +- goto bad_DIE; +- else +- goto acquire_Type; ++ /* Do we have something that looks sane? ++ gcc gnat Ada generates minimal typedef ++ such as the below ++ <6><91cc>: DW_TAG_typedef ++ DW_AT_abstract_ori: <9066> ++ g++ for OMP can generate artificial functions that have ++ parameters that refer to pointers to unnamed typedefs. ++ See https://bugs.kde.org/show_bug.cgi?id=273475 ++ So we cannot require a name for a DW_TAG_typedef. ++ */ ++ goto acquire_Type; + } + + if (dtag == DW_TAG_subroutine_type) { +diff --git a/coregrind/m_debuginfo/tytypes.c b/coregrind/m_debuginfo/tytypes.c +index 05df456..0fde46b 100644 +--- a/coregrind/m_debuginfo/tytypes.c ++++ b/coregrind/m_debuginfo/tytypes.c +@@ -265,8 +265,8 @@ void ML_(pp_TyEnt_C_ishly)( XArray* /* of TyEnt */ tyents, + VG_(printf)("&&"); + break; + case Te_TyEnum: +- if (!ent->Te.TyEnum.name) goto unhandled; +- VG_(printf)("enum %s", ent->Te.TyEnum.name); ++ VG_(printf)("enum %s", ent->Te.TyEnum.name ? ent->Te.TyEnum.name ++ : "" ); + break; + case Te_TyStOrUn: + VG_(printf)("%s %s", +@@ -287,8 +287,8 @@ void ML_(pp_TyEnt_C_ishly)( XArray* /* of TyEnt */ tyents, + } + break; + case Te_TyTyDef: +- if (!ent->Te.TyTyDef.name) goto unhandled; +- VG_(printf)("%s", ent->Te.TyTyDef.name); ++ VG_(printf)("%s", ent->Te.TyTyDef.name ? ent->Te.TyTyDef.name ++ : "" ); + break; + case Te_TyFn: + VG_(printf)("%s", ""); diff --git a/valgrind.spec b/valgrind.spec index b8ffd16..53bed51 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -38,6 +38,9 @@ Patch7: valgrind-3.9.0-dwz-alt-buildid.patch # KDE#327284 - s390x VEX miscompilation of -march=z10 binary Patch8: valgrind-3.9.0-s390-risbg.patch +# KDE#327916 - DW_TAG_typedef may have no name +Patch9: valgrind-3.9.0-anon-typedef.patch + %ifarch x86_64 ppc64 # Ensure glibc{,-devel} is installed for both multilib arches BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so @@ -134,6 +137,7 @@ Valgrind User Manual for details. %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 %build # We need to use the software collection compiler and binutils if available. @@ -287,6 +291,9 @@ echo ===============END TESTING=============== %endif %changelog +* Fri Nov 22 2013 Mark Wielaard +- Add valgrind-3.9.0-anon-typedef.patch. + * Wed Nov 20 2013 Mark Wielaard - 3.9.0-2 - Add valgrind-3.9.0-dwz-alt-buildid.patch. - Add valgrind-3.9.0-s390-risbg.patch.