diff --git a/valgrind-3.18.1-s390x-wflrx.patch b/valgrind-3.18.1-s390x-wflrx.patch new file mode 100644 index 0000000..6639756 --- /dev/null +++ b/valgrind-3.18.1-s390x-wflrx.patch @@ -0,0 +1,33 @@ +From da3b331c63a6aec0ec3206b1d9ca0df9bced3338 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Mon, 3 Jan 2022 18:15:05 +0100 +Subject: [PATCH] s390: Fix VFLRX and WFLRX instructions + +Due to a typo in s390_irgen_VFLR, the VFLR instruction behaves incorrectly +when its m3 field contains 4, meaning extended format. In that case VFLR +is also written as VFLRX (or WFLRX) and supposed to round down from the +extended 128-bit format to the long 64-bit format. However, the typo +checks for m3 == 2 instead, so the value of 4 is unhandled, causing +Valgrind to throw a specification exception. + +This fixes the typo. +--- + VEX/priv/guest_s390_toIR.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c +index fffc563d4..3ef104fcd 100644 +--- a/VEX/priv/guest_s390_toIR.c ++++ b/VEX/priv/guest_s390_toIR.c +@@ -19008,7 +19008,7 @@ s390_irgen_VFLL(UChar v1, UChar v2, UChar m3, UChar m4, UChar m5) + static const HChar * + s390_irgen_VFLR(UChar v1, UChar v2, UChar m3, UChar m4, UChar m5) + { +- s390_insn_assert("vflr", m3 == 3 || (s390_host_has_vxe && m3 == 2)); ++ s390_insn_assert("vflr", m3 == 3 || (s390_host_has_vxe && m3 == 4)); + + if (m3 == 3) + s390_vector_fp_convert(Iop_F64toF32, Ity_F64, Ity_F32, True, +-- +2.31.1 + diff --git a/valgrind.spec b/valgrind.spec index d08ec17..1a6fba2 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -137,6 +137,9 @@ Patch20: valgrind-3.18.1-s390x-vdso.patch # KDE#447995 Valgrind segfault on power10 due to hwcap checking code Patch21: valgrind-3.18.1-ppc-hwcaps.patch +# KDE#447991 s390x: Valgrind indicates illegal instruction on wflrx +Patch22: valgrind-3.18.1-s390x-wflrx.patch + BuildRequires: make BuildRequires: glibc-devel @@ -290,6 +293,7 @@ Valgrind User Manual for details. %patch19 -p1 %patch20 -p1 %patch21 -p1 +%patch22 -p1 %build # LTO triggers undefined symbols in valgrind. Valgrind has a --enable-lto @@ -521,6 +525,7 @@ fi %changelog * Wed Jan 12 2022 Mark Wielaard - Add valgrind-3.18.1-ppc-hwcaps.patch +- Add valgrind-3.18.1-s390x-wflrx.patch * Sat Dec 11 2021 Mark Wielaard - 3.18.1-7 -Add valgrind-3.18.1-s390x-vdso.patch