3.17.0-6 - z15 support

Add valgrind-3.17.0-s390-prep.patch
Add valgrind-3.17.0-s390-z15.patch
Add valgrind-3.17.0-s390-z13-vec-fix.patch

Resolves: #1920584
Valgrind support of IBM Z hardware z15
This commit is contained in:
Mark Wielaard 2021-06-03 14:58:26 +02:00
parent 2548f79710
commit 4a7f098214
4 changed files with 4786 additions and 1 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
commit 124ae6cfa303f0cc71ffd685620cb57c4f8f02bb
Author: Andreas Arnez <arnez@linux.ibm.com>
Date: Mon Jun 7 14:01:53 2021 +0200
s390x: Don't emit "vector or with complement" on z13
The z/Architecture instruction "vector or with complement" (VOC) can be
used as an optimization to combine "vector or" with "vector nor". This is
exploited in Valgrind since commit 6c1cb1a0128b00858b973e. However, VOC
requires the vector-enhancements facility 1, which is not installed on a
z13 CPU. Thus Valgrind can now run into SIGILL on z13 when trying to
execute vector string instructions.
Fix this by suppressing the VOC optimization unless the
vector-enhancements facility 1 is recognized on the host.
diff --git a/VEX/priv/host_s390_isel.c b/VEX/priv/host_s390_isel.c
index ee20c6711..15ca92a6b 100644
--- a/VEX/priv/host_s390_isel.c
+++ b/VEX/priv/host_s390_isel.c
@@ -4102,14 +4102,17 @@ s390_isel_vec_expr_wrk(ISelEnv *env, IRExpr *expr)
case Iop_OrV128:
size = 16;
vec_binop = S390_VEC_OR;
- if (arg1->tag == Iex_Unop && arg1->Iex.Unop.op == Iop_NotV128) {
- IRExpr* orig_arg1 = arg1;
- arg1 = arg2;
- arg2 = orig_arg1->Iex.Unop.arg;
- vec_binop = S390_VEC_ORC;
- } else if (arg2->tag == Iex_Unop && arg2->Iex.Unop.op == Iop_NotV128) {
- arg2 = arg2->Iex.Unop.arg;
- vec_binop = S390_VEC_ORC;
+ if (s390_host_has_vxe) {
+ if (arg1->tag == Iex_Unop && arg1->Iex.Unop.op == Iop_NotV128) {
+ IRExpr* orig_arg1 = arg1;
+ arg1 = arg2;
+ arg2 = orig_arg1->Iex.Unop.arg;
+ vec_binop = S390_VEC_ORC;
+ } else if (arg2->tag == Iex_Unop &&
+ arg2->Iex.Unop.op == Iop_NotV128) {
+ arg2 = arg2->Iex.Unop.arg;
+ vec_binop = S390_VEC_ORC;
+ }
}
goto Iop_VV_wrk;

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
Summary: Tool for finding memory management bugs in programs
Name: %{?scl_prefix}valgrind
Version: 3.17.0
Release: 5%{?dist}
Release: 6%{?dist}
Epoch: 1
License: GPLv2+
URL: http://www.valgrind.org/
@ -120,6 +120,39 @@ Patch10: valgrind-3.17.0-clone-parent-res.patch
# workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100217
Patch11: valgrind-3.17.0-s390x-tests-z14-workaround.patch
# commit d74a637206ef5532ccd2ccb2e31ee2762f184e60
# Bug 433863 - s390x: Remove memcheck test cases for cs, cds, and csg
# commit 18ddcc47c951427efd3b790ba2481159b9bd1598
# s390x: Support "expensive" comparisons Iop_ExpCmpNE32/64
# commit 5db3f929c43bf46f4707178706cfe90f43acdd19
# s390x: Add convenience function mkV128()
# commit e78bd78d3043729033b426218ab8c6dae9c51e96
# Bug 434296 - s390x: Rework IR conversion of VSTRC, VFAE, and VFEE
# commit 4f17a067c4f8245c05611d6e8aa36e8841bab376
# Bug 434296 - s390x: Rework IR conversion of VFENE
# commit 9bd78ebd8bb5cd4ebb3f081ceba46836cc485551
# Bug 434296 - s390x: Rework IR conversion of VISTR
# commit 32312d588b77c5b5b5a0145bb0cc6f795b447790
# Bug 434296 - s390x: Add memcheck test cases for vector string insns
# commit a0bb049ace14ab52d386bb1d49a399f39eec4986
# s390x: Improve handling of amodes without base register
# commit fd935e238d907d9c523a311ba795077d95ad6912
# s390x: Rework insn "v-vdup" and add "v-vrep"
# commit 6c1cb1a0128b00858b973ef9344e12d6ddbaaf57
# s390x: Add support for emitting "vector or with complement"
# commit 0bd4263326b2d48f782339a9bbe1a069c7de45c7
# s390x: Fix/optimize Iop_64HLtoV128
# commit cae5062b05b95e0303b1122a0ea9aadc197e4f0a
# s390x: Add missing stdout.exp for vector string memcheck test
Patch12: valgrind-3.17.0-s390-prep.patch
# KDE#432387 - s390x: z15 instructions support
Patch13: valgrind-3.17.0-s390-z15.patch
# commit 124ae6cfa303f0cc71ffd685620cb57c4f8f02bb
# s390x: Don't emit "vector or with complement" on z13
Patch14: valgrind-3.17.0-s390-z13-vec-fix.patch
BuildRequires: make
BuildRequires: glibc-devel
@ -268,6 +301,11 @@ Valgrind User Manual for details.
%patch9 -p1
%patch11 -p1
%patch12 -p1
touch memcheck/tests/s390x/vistr.stdout.exp
%patch13 -p1
%patch14 -p1
%build
# LTO triggers undefined symbols in valgrind. Valgrind has a --enable-lto
# configure time option, but that doesn't seem to help.
@ -492,6 +530,11 @@ fi
%endif
%changelog
* Thu Jun 24 2021 Mark Wielaard <mjw@redhat.com> - 3.17.0-6
- Add valgrind-3.17.0-s390-prep.patch
- Add valgrind-3.17.0-s390-z15.patch
- Add valgrind-3.17.0-s390-z13-vec-fix.patch
* Mon Jun 7 2021 Mark Wielaard <mjw@redhat.com> - 3.17.0-5
- Disable run_full_regtest.