commit valgrind for openSUSE:Factory
Hello community, here is the log from the commit of package valgrind for openSUSE:Factory checked in at 2018-11-28 11:11:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/valgrind (Old) and /work/SRC/openSUSE:Factory/.valgrind.new.19453 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "valgrind" Wed Nov 28 11:11:53 2018 rev:111 rq:652030 version:3.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/valgrind/valgrind.changes 2018-10-01 09:07:45.211772453 +0200 +++ /work/SRC/openSUSE:Factory/.valgrind.new.19453/valgrind.changes 2018-11-28 11:12:42.666956612 +0100 @@ -1,0 +2,53 @@ +Sun Nov 25 21:06:20 UTC 2018 - olaf@aepfle.de + +- update valgrind.xen.patch to branch bug390553-20181125-ddfc274b2 + +------------------------------------------------------------------- +Thu Nov 22 09:21:45 UTC 2018 - Dirk Mueller <dmueller@suse.com> + +- build against Toolchain module for SLE12 +- add 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch + 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch, + 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch, + 0001-s390x-more-fixes.patch, + Implement-emulated-system-registers.-Fixes-392146.patch (FATE#326355) +- enable check (poo#36751) + +------------------------------------------------------------------- +Wed Nov 21 11:51:45 UTC 2018 - Dirk Mueller <dmueller@suse.com> + +- update to 3.14.0 (bsc#1114575, FATE#326355): + see http://www.valgrind.org/docs/manual/dist.news.html + * The new option --keep-debuginfo=no|yes (default no) can be used to retain + debug info for unloaded code. This allows saved stack traces (e.g. for + memory leaks) to include file/line info for code that has been dlclose'd (or + similar). See the user manual for more information and known limitations. + * Ability to specify suppressions based on source file name and line number. + * Majorly overhauled register allocator. No end-user changes, but the JIT + generates code a bit more quickly now. + * Preliminary support for macOS 10.13 has been added. + * mips: support for MIPS32/MIPS64 Revision 6 has been added. + * mips: support for MIPS SIMD architecture (MSA) has been added. + * mips: support for MIPS N32 ABI has been added. + * s390: partial support for vector instructions (integer and string) has been + added. + * Helgrind: Addition of a flag + --delta-stacktrace=no|yes [yes on linux amd64/x86] + which specifies how full history stack traces should be computed. + Setting this to =yes can speed up Helgrind by 25% when using + --history-level=full. + * Memcheck: reduced false positive rate for optimised code created by Clang 6 + / LLVM 6 on x86, amd64 and arm64. In particular, Memcheck analyses code + blocks more carefully to determine where it can avoid expensive definedness + checks without loss of precision. This is controlled by the flag + --expensive-definedness-checks=no|auto|yes [auto]. + * Valgrind is now buildable with link-time optimisation (LTO). A new + configure option --enable-lto=yes allows building Valgrind with LTO. If the + toolchain supports it, this produces a smaller/faster Valgrind (up to 10%). + Note that if you are doing Valgrind development, --enable-lto=yes massively + slows down the build process. +- remove epoll-wait-fix.patch, + Fix-access-to-time-base-register-to-return-64-bits.patch, + 0001-Accept-read-only-PT_LOAD-segments-and-.rodata.patch (upstream), + +------------------------------------------------------------------- Old: ---- 0001-Accept-read-only-PT_LOAD-segments-and-.rodata.patch Fix-access-to-time-base-register-to-return-64-bits.patch epoll-wait-fix.patch valgrind-3.13.0.tar.bz2 New: ---- 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch 0001-s390x-more-fixes.patch valgrind-3.14.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ valgrind.spec ++++++ --- /var/tmp/diff_new_pack.Ms6TLR/_old 2018-11-28 11:12:43.422955551 +0100 +++ /var/tmp/diff_new_pack.Ms6TLR/_new 2018-11-28 11:12:43.422955551 +0100 @@ -22,31 +22,35 @@ %define building_docs 1 Name: valgrind -Version: 3.13.0 +Version: 3.14.0 Release: 0 Summary: Memory Management Debugger License: GPL-2.0-or-later Group: Development/Tools/Debuggers Url: http://valgrind.org/ Source0: ftp://sourceware.org/pub/valgrind/valgrind-%{version}.tar.bz2 -# svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_5_0 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_5_BRANCH > 3_5_BRANCH.diff -# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff +# https://bugs.kde.org/show_bug.cgi?id=390553 +# https://github.com/olafhering/valgrind/compare/olh-base-master...olh-fixes-m... Patch0: valgrind.xen.patch Patch1: jit-register-unregister.diff Patch2: armv6-support.diff -Patch3: epoll-wait-fix.patch Patch4: Implement-emulated-system-registers.-Fixes-392146.patch -# PATCH-FIX-UPSTREAM [backport] - https://sourceware.org/git/?p=valgrind.git;a=commit;h=64aa729bfae71561505a40... -Patch5: 0001-Accept-read-only-PT_LOAD-segments-and-.rodata.patch -# PATCH-FIX-UPSTREAM - https://sourceware.org/git/?p=valgrind.git;a=commit;h=6a55b1e82ccda3f0d663d2... -Patch6: Fix-access-to-time-base-register-to-return-64-bits.patch +Patch5: 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch +Patch6: 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch +Patch7: 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch +Patch8: 0001-s390x-more-fixes.patch BuildRequires: automake BuildRequires: docbook-xsl-stylesheets BuildRequires: docbook_4 +%if 0%{?suse_version} < 1320 +BuildRequires: gcc8-c++ +%else BuildRequires: gcc-c++ +%endif BuildRequires: glibc-devel-32bit BuildRequires: libxslt BuildRequires: pkgconfig +BuildRequires: procps Requires: glibc >= %{glibc_main_version}.%{glibc_major_version} Requires: glibc < %{glibc_main_version}.%{lua:print(rpm.expand("%{glibc_major_version}")+1)} Provides: callgrind = %{version} @@ -110,12 +114,18 @@ # needs porting to 3.11 ##%patch1 %patch2 -%patch3 %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 %build +%if 0%{?suse_version} < 1320 +export CC="%{_bindir}/gcc-8" +export CXX="%{_bindir}/g++-8" +%endif + export FLAGS="%{optflags}" %ifarch %arm # Valgrind doesn't support compiling for Thumb yet. Remove when it gets @@ -135,6 +145,7 @@ export GDB=%{_bindir}/gdb %configure \ + --enable-lto=yes \ %ifarch aarch64 --enable-only64bit %endif @@ -157,6 +168,15 @@ mkdir -p %{buildroot}%{_docdir}/%{name} cp -a README* NEWS AUTHORS %{buildroot}/%{_defaultdocdir}/%{name} +%check +# OBS doesn't have a z13 +%ifnarch s390x +# has too many spurious failures +# make %{?_smp_mflags} regtest +#patent pending self test +VALGRIND_LIB=$PWD/.in_place VALGRIND_LIB_INNER=$PWD/.in_place ./coregrind/valgrind /usr/bin/perl -wc tests/vg_regtest +%endif + %files %license COPYING COPYING.DOCS %{_bindir}/* @@ -257,12 +277,16 @@ %{_libdir}/valgrind/s390-acr.xml %{_libdir}/valgrind/s390-fpr-valgrind-s*.xml %{_libdir}/valgrind/s390-fpr.xml +%{_libdir}/valgrind/s390-vx-valgrind-s*.xml +%{_libdir}/valgrind/s390-vx.xml %{_libdir}/valgrind/s390x-core64-valgrind-s*.xml %{_libdir}/valgrind/s390x-core64.xml %{_libdir}/valgrind/s390x-generic-valgrind.xml %{_libdir}/valgrind/s390x-generic.xml %{_libdir}/valgrind/s390x-linux64-valgrind-s*.xml %{_libdir}/valgrind/s390x-linux64.xml +%{_libdir}/valgrind/s390x-vx-linux-valgrind.xml +%{_libdir}/valgrind/s390x-vx-linux.xml %files devel %{_libdir}/valgrind/lib*.a ++++++ 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch ++++++
From 50bd2282bce101012a5668b670cb185375600d2d Mon Sep 17 00:00:00 2001 From: Andreas Arnez <arnez@linux.ibm.com> Date: Thu, 18 Oct 2018 17:51:57 +0200 Subject: [PATCH] Bug 397187 s390x: Add vector register support for vgdb
On s390x machines with a vector facility, Valgrind's gdbserver didn't represent the vector registers. This is fixed. --- NEWS | 1 + coregrind/Makefile.am | 5 + coregrind/m_gdbserver/s390-vx-valgrind-s1.xml | 43 ++++++++ coregrind/m_gdbserver/s390-vx-valgrind-s2.xml | 43 ++++++++ coregrind/m_gdbserver/s390-vx.xml | 59 +++++++++++ .../m_gdbserver/s390x-vx-linux-valgrind.xml | 28 ++++++ coregrind/m_gdbserver/s390x-vx-linux.xml | 18 ++++ coregrind/m_gdbserver/valgrind-low-s390x.c | 97 +++++++++++++++++-- 8 files changed, 288 insertions(+), 6 deletions(-) create mode 100644 coregrind/m_gdbserver/s390-vx-valgrind-s1.xml create mode 100644 coregrind/m_gdbserver/s390-vx-valgrind-s2.xml create mode 100644 coregrind/m_gdbserver/s390-vx.xml create mode 100644 coregrind/m_gdbserver/s390x-vx-linux-valgrind.xml create mode 100644 coregrind/m_gdbserver/s390x-vx-linux.xml Index: valgrind-3.14.0/coregrind/Makefile.am =================================================================== --- valgrind-3.14.0.orig/coregrind/Makefile.am +++ valgrind-3.14.0/coregrind/Makefile.am @@ -681,6 +681,11 @@ GDBSERVER_XML_FILES = \ m_gdbserver/s390x-linux64-valgrind-s1.xml \ m_gdbserver/s390x-linux64-valgrind-s2.xml \ m_gdbserver/s390x-linux64.xml \ + m_gdbserver/s390-vx-valgrind-s1.xml \ + m_gdbserver/s390-vx-valgrind-s2.xml \ + m_gdbserver/s390-vx.xml \ + m_gdbserver/s390x-vx-linux-valgrind.xml \ + m_gdbserver/s390x-vx-linux.xml \ m_gdbserver/mips-cp0-valgrind-s1.xml \ m_gdbserver/mips-cp0-valgrind-s2.xml \ m_gdbserver/mips-cp0.xml \ Index: valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s1.xml =================================================================== --- /dev/null +++ valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s1.xml @@ -0,0 +1,43 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2015-2018 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-target.dtd"> +<feature name="org.gnu.gdb.s390.vx-valgrind-s1"> + <reg name="v0ls1" bitsize="64" type="uint64"/> + <reg name="v1ls1" bitsize="64" type="uint64"/> + <reg name="v2ls1" bitsize="64" type="uint64"/> + <reg name="v3ls1" bitsize="64" type="uint64"/> + <reg name="v4ls1" bitsize="64" type="uint64"/> + <reg name="v5ls1" bitsize="64" type="uint64"/> + <reg name="v6ls1" bitsize="64" type="uint64"/> + <reg name="v7ls1" bitsize="64" type="uint64"/> + <reg name="v8ls1" bitsize="64" type="uint64"/> + <reg name="v9ls1" bitsize="64" type="uint64"/> + <reg name="v10ls1" bitsize="64" type="uint64"/> + <reg name="v11ls1" bitsize="64" type="uint64"/> + <reg name="v12ls1" bitsize="64" type="uint64"/> + <reg name="v13ls1" bitsize="64" type="uint64"/> + <reg name="v14ls1" bitsize="64" type="uint64"/> + <reg name="v15ls1" bitsize="64" type="uint64"/> + + <reg name="v16s1" bitsize="128" type="uint128"/> + <reg name="v17s1" bitsize="128" type="uint128"/> + <reg name="v18s1" bitsize="128" type="uint128"/> + <reg name="v19s1" bitsize="128" type="uint128"/> + <reg name="v20s1" bitsize="128" type="uint128"/> + <reg name="v21s1" bitsize="128" type="uint128"/> + <reg name="v22s1" bitsize="128" type="uint128"/> + <reg name="v23s1" bitsize="128" type="uint128"/> + <reg name="v24s1" bitsize="128" type="uint128"/> + <reg name="v25s1" bitsize="128" type="uint128"/> + <reg name="v26s1" bitsize="128" type="uint128"/> + <reg name="v27s1" bitsize="128" type="uint128"/> + <reg name="v28s1" bitsize="128" type="uint128"/> + <reg name="v29s1" bitsize="128" type="uint128"/> + <reg name="v30s1" bitsize="128" type="uint128"/> + <reg name="v31s1" bitsize="128" type="uint128"/> +</feature> Index: valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s2.xml =================================================================== --- /dev/null +++ valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s2.xml @@ -0,0 +1,43 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2015-2018 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-target.dtd"> +<feature name="org.gnu.gdb.s390.vx-valgrind-s2"> + <reg name="v0ls2" bitsize="64" type="uint64"/> + <reg name="v1ls2" bitsize="64" type="uint64"/> + <reg name="v2ls2" bitsize="64" type="uint64"/> + <reg name="v3ls2" bitsize="64" type="uint64"/> + <reg name="v4ls2" bitsize="64" type="uint64"/> + <reg name="v5ls2" bitsize="64" type="uint64"/> + <reg name="v6ls2" bitsize="64" type="uint64"/> + <reg name="v7ls2" bitsize="64" type="uint64"/> + <reg name="v8ls2" bitsize="64" type="uint64"/> + <reg name="v9ls2" bitsize="64" type="uint64"/> + <reg name="v10ls2" bitsize="64" type="uint64"/> + <reg name="v11ls2" bitsize="64" type="uint64"/> + <reg name="v12ls2" bitsize="64" type="uint64"/> + <reg name="v13ls2" bitsize="64" type="uint64"/> + <reg name="v14ls2" bitsize="64" type="uint64"/> + <reg name="v15ls2" bitsize="64" type="uint64"/> + + <reg name="v16s2" bitsize="128" type="uint128"/> + <reg name="v17s2" bitsize="128" type="uint128"/> + <reg name="v18s2" bitsize="128" type="uint128"/> + <reg name="v19s2" bitsize="128" type="uint128"/> + <reg name="v20s2" bitsize="128" type="uint128"/> + <reg name="v21s2" bitsize="128" type="uint128"/> + <reg name="v22s2" bitsize="128" type="uint128"/> + <reg name="v23s2" bitsize="128" type="uint128"/> + <reg name="v24s2" bitsize="128" type="uint128"/> + <reg name="v25s2" bitsize="128" type="uint128"/> + <reg name="v26s2" bitsize="128" type="uint128"/> + <reg name="v27s2" bitsize="128" type="uint128"/> + <reg name="v28s2" bitsize="128" type="uint128"/> + <reg name="v29s2" bitsize="128" type="uint128"/> + <reg name="v30s2" bitsize="128" type="uint128"/> + <reg name="v31s2" bitsize="128" type="uint128"/> +</feature> Index: valgrind-3.14.0/coregrind/m_gdbserver/s390-vx.xml =================================================================== --- /dev/null +++ valgrind-3.14.0/coregrind/m_gdbserver/s390-vx.xml @@ -0,0 +1,59 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2015-2018 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-target.dtd"> +<feature name="org.gnu.gdb.s390.vx"> + <vector id="v4f" type="ieee_single" count="4"/> + <vector id="v2d" type="ieee_double" count="2"/> + <vector id="v16i8" type="int8" count="16"/> + <vector id="v8i16" type="int16" count="8"/> + <vector id="v4i32" type="int32" count="4"/> + <vector id="v2i64" type="int64" count="2"/> + <union id="vec128"> + <field name="v4_float" type="v4f"/> + <field name="v2_double" type="v2d"/> + <field name="v16_int8" type="v16i8"/> + <field name="v8_int16" type="v8i16"/> + <field name="v4_int32" type="v4i32"/> + <field name="v2_int64" type="v2i64"/> + <field name="uint128" type="uint128"/> + </union> + + <reg name="v0l" bitsize="64" type="uint64"/> + <reg name="v1l" bitsize="64" type="uint64"/> + <reg name="v2l" bitsize="64" type="uint64"/> + <reg name="v3l" bitsize="64" type="uint64"/> + <reg name="v4l" bitsize="64" type="uint64"/> + <reg name="v5l" bitsize="64" type="uint64"/> + <reg name="v6l" bitsize="64" type="uint64"/> + <reg name="v7l" bitsize="64" type="uint64"/> + <reg name="v8l" bitsize="64" type="uint64"/> + <reg name="v9l" bitsize="64" type="uint64"/> + <reg name="v10l" bitsize="64" type="uint64"/> + <reg name="v11l" bitsize="64" type="uint64"/> + <reg name="v12l" bitsize="64" type="uint64"/> + <reg name="v13l" bitsize="64" type="uint64"/> + <reg name="v14l" bitsize="64" type="uint64"/> + <reg name="v15l" bitsize="64" type="uint64"/> + + <reg name="v16" bitsize="128" type="vec128"/> + <reg name="v17" bitsize="128" type="vec128"/> + <reg name="v18" bitsize="128" type="vec128"/> + <reg name="v19" bitsize="128" type="vec128"/> + <reg name="v20" bitsize="128" type="vec128"/> + <reg name="v21" bitsize="128" type="vec128"/> + <reg name="v22" bitsize="128" type="vec128"/> + <reg name="v23" bitsize="128" type="vec128"/> + <reg name="v24" bitsize="128" type="vec128"/> + <reg name="v25" bitsize="128" type="vec128"/> + <reg name="v26" bitsize="128" type="vec128"/> + <reg name="v27" bitsize="128" type="vec128"/> + <reg name="v28" bitsize="128" type="vec128"/> + <reg name="v29" bitsize="128" type="vec128"/> + <reg name="v30" bitsize="128" type="vec128"/> + <reg name="v31" bitsize="128" type="vec128"/> +</feature> Index: valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux-valgrind.xml =================================================================== --- /dev/null +++ valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux-valgrind.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2010-2018 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!-- S/390 64-bit user-level code. --> + +<!DOCTYPE target SYSTEM "gdb-target.dtd"> +<target> + <architecture>s390:64-bit</architecture> + <xi:include href="s390x-core64.xml"/> + <xi:include href="s390-acr.xml"/> + <xi:include href="s390-fpr.xml"/> + <xi:include href="s390x-linux64.xml"/> + <xi:include href="s390-vx.xml"/> + <xi:include href="s390x-core64-valgrind-s1.xml"/> + <xi:include href="s390-acr-valgrind-s1.xml"/> + <xi:include href="s390-fpr-valgrind-s1.xml"/> + <xi:include href="s390x-linux64-valgrind-s1.xml"/> + <xi:include href="s390-vx-valgrind-s1.xml"/> + <xi:include href="s390x-core64-valgrind-s2.xml"/> + <xi:include href="s390-acr-valgrind-s2.xml"/> + <xi:include href="s390-fpr-valgrind-s2.xml"/> + <xi:include href="s390x-linux64-valgrind-s2.xml"/> + <xi:include href="s390-vx-valgrind-s2.xml"/> +</target> Index: valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux.xml =================================================================== --- /dev/null +++ valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux.xml @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2010-2018 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!-- S/390 64-bit user-level code. --> + +<!DOCTYPE target SYSTEM "gdb-target.dtd"> +<target> + <architecture>s390:64-bit</architecture> + <xi:include href="s390x-core64.xml"/> + <xi:include href="s390-acr.xml"/> + <xi:include href="s390-fpr.xml"/> + <xi:include href="s390x-linux64.xml"/> + <xi:include href="s390-vx.xml"/> +</target> Index: valgrind-3.14.0/coregrind/m_gdbserver/valgrind-low-s390x.c =================================================================== --- valgrind-3.14.0.orig/coregrind/m_gdbserver/valgrind-low-s390x.c +++ valgrind-3.14.0/coregrind/m_gdbserver/valgrind-low-s390x.c @@ -88,9 +88,42 @@ static struct reg regs[] = { { "f14", 2592, 64 }, { "f15", 2656, 64 }, { "orig_r2", 2720, 64 }, + { "v0l", 2784, 64 }, + { "v1l", 2848, 64 }, + { "v2l", 2912, 64 }, + { "v3l", 2976, 64 }, + { "v4l", 3040, 64 }, + { "v5l", 3104, 64 }, + { "v6l", 3168, 64 }, + { "v7l", 3232, 64 }, + { "v8l", 3296, 64 }, + { "v9l", 3360, 64 }, + { "v10l", 3424, 64 }, + { "v11l", 3488, 64 }, + { "v12l", 3552, 64 }, + { "v13l", 3616, 64 }, + { "v14l", 3680, 64 }, + { "v15l", 3744, 64 }, + { "v16", 3808, 128 }, + { "v17", 3936, 128 }, + { "v18", 4064, 128 }, + { "v19", 4192, 128 }, + { "v20", 4320, 128 }, + { "v21", 4448, 128 }, + { "v22", 4576, 128 }, + { "v23", 4704, 128 }, + { "v24", 4832, 128 }, + { "v25", 4960, 128 }, + { "v26", 5088, 128 }, + { "v27", 5216, 128 }, + { "v28", 5344, 128 }, + { "v29", 5472, 128 }, + { "v30", 5600, 128 }, + { "v31", 5728, 128 }, }; static const char *expedite_regs[] = { "r14", "r15", "pswa", 0 }; -#define num_regs (sizeof (regs) / sizeof (regs[0])) +#define num_regs_all (sizeof (regs) / sizeof (regs[0])) +static int num_regs; static CORE_ADDR get_pc (void) @@ -165,7 +198,7 @@ void transfer_register (ThreadId tid, in case 32: VG_(transfer) (&s390x->guest_a14, buf, dir, size, mod); break; case 33: VG_(transfer) (&s390x->guest_a15, buf, dir, size, mod); break; case 34: VG_(transfer) (&s390x->guest_fpc, buf, dir, size, mod); break; - case 35: VG_(transfer) (&s390x->guest_v0, buf, dir, size, mod); break; + case 35: VG_(transfer) (&s390x->guest_v0.w64[0], buf, dir, size, mod); break; case 36: VG_(transfer) (&s390x->guest_v1.w64[0], buf, dir, size, mod); break; case 37: VG_(transfer) (&s390x->guest_v2.w64[0], buf, dir, size, mod); break; case 38: VG_(transfer) (&s390x->guest_v3.w64[0], buf, dir, size, mod); break; @@ -182,18 +215,65 @@ void transfer_register (ThreadId tid, in case 49: VG_(transfer) (&s390x->guest_v14.w64[0], buf, dir, size, mod); break; case 50: VG_(transfer) (&s390x->guest_v15.w64[0], buf, dir, size, mod); break; case 51: *mod = False; break; //GDBTD??? { "orig_r2", 0, 64 }, + case 52: VG_(transfer) (&s390x->guest_v0.w64[1], buf, dir, size, mod); break; + case 53: VG_(transfer) (&s390x->guest_v1.w64[1], buf, dir, size, mod); break; + case 54: VG_(transfer) (&s390x->guest_v2.w64[1], buf, dir, size, mod); break; + case 55: VG_(transfer) (&s390x->guest_v3.w64[1], buf, dir, size, mod); break; + case 56: VG_(transfer) (&s390x->guest_v4.w64[1], buf, dir, size, mod); break; + case 57: VG_(transfer) (&s390x->guest_v5.w64[1], buf, dir, size, mod); break; + case 58: VG_(transfer) (&s390x->guest_v6.w64[1], buf, dir, size, mod); break; + case 59: VG_(transfer) (&s390x->guest_v7.w64[1], buf, dir, size, mod); break; + case 60: VG_(transfer) (&s390x->guest_v8.w64[1], buf, dir, size, mod); break; + case 61: VG_(transfer) (&s390x->guest_v9.w64[1], buf, dir, size, mod); break; + case 62: VG_(transfer) (&s390x->guest_v10.w64[1], buf, dir, size, mod); break; + case 63: VG_(transfer) (&s390x->guest_v11.w64[1], buf, dir, size, mod); break; + case 64: VG_(transfer) (&s390x->guest_v12.w64[1], buf, dir, size, mod); break; + case 65: VG_(transfer) (&s390x->guest_v13.w64[1], buf, dir, size, mod); break; + case 66: VG_(transfer) (&s390x->guest_v14.w64[1], buf, dir, size, mod); break; + case 67: VG_(transfer) (&s390x->guest_v15.w64[1], buf, dir, size, mod); break; + case 68: VG_(transfer) (&s390x->guest_v16, buf, dir, size, mod); break; + case 69: VG_(transfer) (&s390x->guest_v17, buf, dir, size, mod); break; + case 70: VG_(transfer) (&s390x->guest_v18, buf, dir, size, mod); break; + case 71: VG_(transfer) (&s390x->guest_v19, buf, dir, size, mod); break; + case 72: VG_(transfer) (&s390x->guest_v20, buf, dir, size, mod); break; + case 73: VG_(transfer) (&s390x->guest_v21, buf, dir, size, mod); break; + case 74: VG_(transfer) (&s390x->guest_v22, buf, dir, size, mod); break; + case 75: VG_(transfer) (&s390x->guest_v23, buf, dir, size, mod); break; + case 76: VG_(transfer) (&s390x->guest_v24, buf, dir, size, mod); break; + case 77: VG_(transfer) (&s390x->guest_v25, buf, dir, size, mod); break; + case 78: VG_(transfer) (&s390x->guest_v26, buf, dir, size, mod); break; + case 79: VG_(transfer) (&s390x->guest_v27, buf, dir, size, mod); break; + case 80: VG_(transfer) (&s390x->guest_v28, buf, dir, size, mod); break; + case 81: VG_(transfer) (&s390x->guest_v29, buf, dir, size, mod); break; + case 82: VG_(transfer) (&s390x->guest_v30, buf, dir, size, mod); break; + case 83: VG_(transfer) (&s390x->guest_v31, buf, dir, size, mod); break; default: vg_assert(0); } } static +Bool have_vx (void) +{ + VexArch va; + VexArchInfo vai; + VG_(machine_get_VexArchInfo) (&va, &vai); + return (vai.hwcaps & VEX_HWCAPS_S390X_VX) != 0; +} + +static const char* target_xml (Bool shadow_mode) { if (shadow_mode) { - return "s390x-generic-valgrind.xml"; + if (have_vx()) + return "s390x-vx-linux-valgrind.xml"; + else + return "s390x-generic-valgrind.xml"; } else { - return "s390x-generic.xml"; - } + if (have_vx()) + return "s390x-vx-linux.xml"; + else + return "s390x-generic.xml"; + } } static CORE_ADDR** target_get_dtv (ThreadState *tst) @@ -206,7 +286,7 @@ static CORE_ADDR** target_get_dtv (Threa } static struct valgrind_target_ops low_target = { - num_regs, + -1, // Override at init time. regs, 17, //sp = r15, which is register offset 17 in regs transfer_register, @@ -220,6 +300,11 @@ static struct valgrind_target_ops low_ta void s390x_init_architecture (struct valgrind_target_ops *target) { *target = low_target; + if (have_vx()) + num_regs = num_regs_all; + else + num_regs = num_regs_all - 32; // Remove all VX registers. + target->num_regs = num_regs; set_register_cache (regs, num_regs); gdbserver_expedite_regs = expedite_regs; } ++++++ 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch ++++++
From 71002d8a5111d02ce8049c55017a8d948c820e35 Mon Sep 17 00:00:00 2001 From: Andreas Arnez <arnez@linux.ibm.com> Date: Thu, 25 Oct 2018 13:47:12 +0200 Subject: [PATCH] Bug 400490 s390x: Fix register allocation for VRs vs FPRs
On s390x, if vector registers are available, they are fed to the register allocator as if they were separate from the floating-point registers. But in fact the FPRs are embedded in the VRs. So for instance, if both f3 and v3 are allocated and used at the same time, corruption will result. This is fixed by offering only the non-overlapping VRs, v16 to v31, to the register allocator instead. --- NEWS | 1 + VEX/priv/host_s390_defs.c | 17 +++++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) Index: valgrind-3.14.0/VEX/priv/host_s390_defs.c =================================================================== --- valgrind-3.14.0.orig/VEX/priv/host_s390_defs.c +++ valgrind-3.14.0/VEX/priv/host_s390_defs.c @@ -59,7 +59,6 @@ static UInt s390_tchain_load64_len(void) /* A mapping from register number to register index */ static Int gpr_index[16]; // GPR regno -> register index -static Int fpr_index[16]; // FPR regno -> register index static Int vr_index[32]; // VR regno -> register index HReg @@ -73,7 +72,7 @@ s390_hreg_gpr(UInt regno) HReg s390_hreg_fpr(UInt regno) { - Int ix = fpr_index[regno]; + Int ix = vr_index[regno]; vassert(ix >= 0); return mkHReg(/*virtual*/False, HRcFlt64, regno, ix); } @@ -463,11 +462,9 @@ getRRegUniverse_S390(void) RRegUniverse__init(ru); - /* Assign invalid values to the gpr/fpr/vr_index */ + /* Assign invalid values to the gpr/vr_index */ for (UInt i = 0; i < sizeof gpr_index / sizeof gpr_index[0]; ++i) gpr_index[i] = -1; - for (UInt i = 0; i < sizeof fpr_index / sizeof fpr_index[0]; ++i) - fpr_index[i] = -1; for (UInt i = 0; i < sizeof vr_index / sizeof vr_index[0]; ++i) vr_index[i] = -1; @@ -494,17 +491,17 @@ getRRegUniverse_S390(void) ru->allocable_start[HRcFlt64] = ru->size; for (UInt regno = 8; regno <= 15; ++regno) { - fpr_index[regno] = ru->size; + vr_index[regno] = ru->size; ru->regs[ru->size++] = s390_hreg_fpr(regno); } for (UInt regno = 0; regno <= 7; ++regno) { - fpr_index[regno] = ru->size; + vr_index[regno] = ru->size; ru->regs[ru->size++] = s390_hreg_fpr(regno); } ru->allocable_end[HRcFlt64] = ru->size - 1; ru->allocable_start[HRcVec128] = ru->size; - for (UInt regno = 0; regno <= 31; ++regno) { + for (UInt regno = 16; regno <= 31; ++regno) { vr_index[regno] = ru->size; ru->regs[ru->size++] = s390_hreg_vr(regno); } @@ -527,12 +524,12 @@ getRRegUniverse_S390(void) /* Sanity checking */ for (UInt i = 0; i < sizeof gpr_index / sizeof gpr_index[0]; ++i) vassert(gpr_index[i] >= 0); - for (UInt i = 0; i < sizeof fpr_index / sizeof fpr_index[0]; ++i) - vassert(fpr_index[i] >= 0); for (UInt i = 0; i < sizeof vr_index / sizeof vr_index[0]; ++i) vassert(vr_index[i] >= 0); initialised = True; + + RRegUniverse__check_is_sane(ru); return ru; } ++++++ 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch ++++++
From 9545e9f96beda6e9f2205bdb3c3e96edaf8d9e2b Mon Sep 17 00:00:00 2001 From: Andreas Arnez <arnez@linux.ibm.com> Date: Tue, 30 Oct 2018 17:06:38 +0100 Subject: [PATCH] Bug 400491 s390x: Sign-extend immediate operand of LOCHI and friends
The VEX implementation of each of the z/Architecture instructions LOCHI, LOCHHI, and LOCGHI treats the immediate 16-bit operand as an unsigned integer instead of a signed integer. This is fixed. --- NEWS | 1 + VEX/priv/guest_s390_toIR.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) Index: valgrind-3.14.0/VEX/priv/guest_s390_toIR.c =================================================================== --- valgrind-3.14.0.orig/VEX/priv/guest_s390_toIR.c +++ valgrind-3.14.0/VEX/priv/guest_s390_toIR.c @@ -16307,7 +16307,7 @@ static const HChar * s390_irgen_LOCHHI(UChar r1, UChar m3, UShort i2, UChar unused) { next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0))); - put_gpr_w0(r1, mkU32(i2)); + put_gpr_w0(r1, mkU32((UInt)(Int)(Short)i2)); return "lochhi"; } @@ -16316,7 +16316,7 @@ static const HChar * s390_irgen_LOCHI(UChar r1, UChar m3, UShort i2, UChar unused) { next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0))); - put_gpr_w1(r1, mkU32(i2)); + put_gpr_w1(r1, mkU32((UInt)(Int)(Short)i2)); return "lochi"; } @@ -16325,7 +16325,7 @@ static const HChar * s390_irgen_LOCGHI(UChar r1, UChar m3, UShort i2, UChar unused) { next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0))); - put_gpr_dw0(r1, mkU64(i2)); + put_gpr_dw0(r1, mkU64((UInt)(Int)(Short)i2)); return "locghi"; } ++++++ 0001-s390x-more-fixes.patch ++++++
From d10cd86ee32bf76495f79c02df62fc242adbcbe3 Mon Sep 17 00:00:00 2001 From: Andreas Arnez <arnez@linux.vnet.ibm.com> Date: Thu, 26 Jul 2018 16:35:24 +0200 Subject: [PATCH] s390x: More fixes for z13 support
This patch addresses the following: * Fix the implementation of LOCGHI. Previously Valgrind performed 32-bit sign extension instead of 64-bit sign extension on the immediate value. * Advertise VXRS in HWCAP. If no VXRS are advertised, but the program uses vector registers, this could cause problems with a glibc built with "-march=z13". --- VEX/priv/guest_s390_toIR.c | 2 +- coregrind/m_initimg/initimg-linux.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index 9c4d79b87..50a5a4177 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -16325,7 +16325,7 @@ static const HChar * s390_irgen_LOCGHI(UChar r1, UChar m3, UShort i2, UChar unused) { next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0))); - put_gpr_dw0(r1, mkU64((UInt)(Int)(Short)i2)); + put_gpr_dw0(r1, mkU64((ULong)(Long)(Short)i2)); return "locghi"; } diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 61cc458bc..8a7f0d024 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -699,9 +699,9 @@ Addr setup_client_stack( void* init_sp, } # elif defined(VGP_s390x_linux) { - /* Advertise hardware features "below" TE only. TE and VXRS - (and anything above) are not supported by Valgrind. */ - auxv->u.a_val &= VKI_HWCAP_S390_TE - 1; + /* Advertise hardware features "below" TE and VXRS. TE itself + and anything above VXRS is not supported by Valgrind. */ + auxv->u.a_val &= (VKI_HWCAP_S390_TE - 1) | VKI_HWCAP_S390_VXRS; } # elif defined(VGP_arm64_linux) { -- 2.17.0 ++++++ Implement-emulated-system-registers.-Fixes-392146.patch ++++++ --- /var/tmp/diff_new_pack.Ms6TLR/_old 2018-11-28 11:12:43.466955489 +0100 +++ /var/tmp/diff_new_pack.Ms6TLR/_new 2018-11-28 11:12:43.470955483 +0100 @@ -10,11 +10,11 @@ VEX/priv/guest_arm64_toIR.c | 222 +++++++++++++++++++++++++++++++++ 3 files changed, 331 insertions(+) -diff --git a/VEX/priv/guest_arm64_defs.h b/VEX/priv/guest_arm64_defs.h -index b28f326c2..ae01e6f3b 100644 ---- a/VEX/priv/guest_arm64_defs.h -+++ b/VEX/priv/guest_arm64_defs.h -@@ -126,6 +126,15 @@ extern ULong arm64g_dirtyhelper_MRS_CNTVCT_EL0 ( void ); +Index: valgrind-3.14.0/VEX/priv/guest_arm64_defs.h +=================================================================== +--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_defs.h ++++ valgrind-3.14.0/VEX/priv/guest_arm64_defs.h +@@ -126,6 +126,15 @@ extern ULong arm64g_dirtyhelper_MRS_CNTV extern ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void ); @@ -30,11 +30,11 @@ extern void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res, ULong arg1, ULong arg2 ); -diff --git a/VEX/priv/guest_arm64_helpers.c b/VEX/priv/guest_arm64_helpers.c -index 10065d547..c579c9e1b 100644 ---- a/VEX/priv/guest_arm64_helpers.c -+++ b/VEX/priv/guest_arm64_helpers.c -@@ -788,6 +788,106 @@ ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void ) +Index: valgrind-3.14.0/VEX/priv/guest_arm64_helpers.c +=================================================================== +--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_helpers.c ++++ valgrind-3.14.0/VEX/priv/guest_arm64_helpers.c +@@ -788,6 +788,106 @@ ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 # endif } @@ -141,11 +141,11 @@ void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res, ULong arg1, ULong arg2 ) { -diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c -index e5af388e1..ed6c1ffa5 100644 ---- a/VEX/priv/guest_arm64_toIR.c -+++ b/VEX/priv/guest_arm64_toIR.c -@@ -6872,6 +6872,228 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, +Index: valgrind-3.14.0/VEX/priv/guest_arm64_toIR.c +=================================================================== +--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_toIR.c ++++ valgrind-3.14.0/VEX/priv/guest_arm64_toIR.c +@@ -6891,6 +6891,228 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisR } /* ------------------ M{SR,RS} ------------------ */ @@ -374,6 +374,3 @@ /* ---- Cases for TPIDR_EL0 ---- 0xD51BD0 010 Rt MSR tpidr_el0, rT 0xD53BD0 010 Rt MRS rT, tpidr_el0 --- -2.17.0 - ++++++ armv6-support.diff ++++++ --- /var/tmp/diff_new_pack.Ms6TLR/_old 2018-11-28 11:12:43.478955472 +0100 +++ /var/tmp/diff_new_pack.Ms6TLR/_new 2018-11-28 11:12:43.478955472 +0100 @@ -2,7 +2,7 @@ =================================================================== --- configure.ac.orig +++ configure.ac -@@ -234,7 +234,7 @@ case "${host_cpu}" in +@@ -252,7 +252,7 @@ case "${host_cpu}" in ARCH_MAX="s390x" ;; ++++++ valgrind-3.13.0.tar.bz2 -> valgrind-3.14.0.tar.bz2 ++++++ /work/SRC/openSUSE:Factory/valgrind/valgrind-3.13.0.tar.bz2 /work/SRC/openSUSE:Factory/.valgrind.new.19453/valgrind-3.14.0.tar.bz2 differ: char 11, line 1 ++++++ valgrind.xen.patch ++++++ ++++ 2647 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/valgrind/valgrind.xen.patch ++++ and /work/SRC/openSUSE:Factory/.valgrind.new.19453/valgrind.xen.patch
participants (1)
-
root