Sync from SUSE:ALP:Source:Standard:1.0 valgrind revision 3a670794dd8824014aae82f2385a6959

This commit is contained in:
Adrian Schröter 2023-11-24 16:16:07 +01:00
commit 4d5b438540
10 changed files with 4811 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

67
VEX-x86-pinsrd.patch Normal file
View File

@ -0,0 +1,67 @@
Index: valgrind-3.21.0/VEX/priv/guest_x86_toIR.c
===================================================================
--- valgrind-3.21.0.orig/VEX/priv/guest_x86_toIR.c
+++ valgrind-3.21.0/VEX/priv/guest_x86_toIR.c
@@ -12921,6 +12921,62 @@ DisResult disInstr_X86_WRK (
/* --- start of the SSE4 decoder --- */
/* ---------------------------------------------------- */
+ /* 66 0F 3A 22 /r ib = PINSRD xmm1, r/m32, imm8
+ Extract Doubleword int from gen.reg/mem32 and insert into xmm1 */
+ if ( sz == 2
+ && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x22 ) {
+
+ Int imm8_10;
+ IRTemp src_elems = newTemp(Ity_I32);
+ IRTemp src_vec = newTemp(Ity_V128);
+ IRTemp z32 = newTemp(Ity_I32);
+
+ modrm = insn[3];
+
+ if ( epartIsReg( modrm ) ) {
+ imm8_10 = (Int)(insn[3+1] & 3);
+ assign( src_elems, getIReg( 4, eregOfRM(modrm) ) );
+ delta += 3+1+1;
+ DIP( "pinsrd $%d, %s,%s\n", imm8_10,
+ nameIReg( 4, eregOfRM(modrm) ),
+ nameXMMReg( gregOfRM(modrm) ) );
+ } else {
+ addr = disAMode( &alen, sorb, delta+3, dis_buf );
+ imm8_10 = (Int)(insn[3+alen] & 3);
+ assign( src_elems, loadLE( Ity_I32, mkexpr(addr) ) );
+ delta += 3+alen+1;
+ DIP( "pinsrd $%d, %s,%s\n",
+ imm8_10, dis_buf, nameXMMReg( gregOfRM(modrm) ) );
+ }
+
+ assign(z32, mkU32(0));
+
+ UShort mask = 0;
+ switch (imm8_10) {
+ case 3: mask = 0x0FFF;
+ assign(src_vec, mk128from32s(src_elems, z32, z32, z32));
+ break;
+ case 2: mask = 0xF0FF;
+ assign(src_vec, mk128from32s(z32, src_elems, z32, z32));
+ break;
+ case 1: mask = 0xFF0F;
+ assign(src_vec, mk128from32s(z32, z32, src_elems, z32));
+ break;
+ case 0: mask = 0xFFF0;
+ assign(src_vec, mk128from32s(z32, z32, z32, src_elems));
+ break;
+ default: vassert(0);
+ }
+
+ putXMMReg( gregOfRM(modrm),
+ binop( Iop_OrV128, mkexpr(src_vec),
+ binop( Iop_AndV128,
+ getXMMReg( gregOfRM(modrm) ),
+ mkV128(mask) ) ) );
+
+ goto decode_success;
+ }
+
/* 66 0F 3A 0B /r ib = ROUNDSD imm8, xmm2/m64, xmm1
(Partial implementation only -- only deal with cases where
the rounding mode is specified directly by the immediate byte.)

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>client-headers</package>
</multibuild>

11
armv6-support.diff Normal file
View File

@ -0,0 +1,11 @@
--- a/configure.ac
+++ b/configure.ac
@@ -252,7 +252,7 @@ case "${host_cpu}" in
ARCH_MAX="s390x"
;;
- armv7*)
+ armv6*|armv7*)
AC_MSG_RESULT([ok (${host_cpu})])
ARCH_MAX="arm"
;;

13
dhat-use-datadir.patch Normal file
View File

@ -0,0 +1,13 @@
Index: valgrind-3.17.0/dhat/Makefile.am
===================================================================
--- valgrind-3.17.0.orig/dhat/Makefile.am
+++ valgrind-3.17.0/dhat/Makefile.am
@@ -10,7 +10,7 @@ pkginclude_HEADERS = \
dhat.h
# Ensure the viewer components get copied into the install tree.
-dhatdir = $(pkglibexecdir)
+dhatdir = $(pkgdatadir)
dhat_DATA = dh_view.html dh_view.css dh_view.js
#----------------------------------------------------------------------------

26
parallel-lto.patch Normal file
View File

@ -0,0 +1,26 @@
Index: valgrind-3.20.0/configure
===================================================================
--- valgrind-3.20.0.orig/configure
+++ valgrind-3.20.0/configure
@@ -10983,7 +10983,7 @@ if test "x${vg_cv_lto}" != "xno" -a "x${
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if toolchain accepts lto" >&5
printf %s "checking if toolchain accepts lto... " >&6; }
safe_CFLAGS=$CFLAGS
-TEST_LTO_CFLAGS="-flto -flto-partition=one -fuse-linker-plugin"
+TEST_LTO_CFLAGS="-flto=auto"
# Note : using 'one' partition is giving a slightly smaller/faster memcheck
# and ld/lto-trans1 still needs a reasonable memory (about 0.5GB) when linking.
CFLAGS="$TEST_LTO_CFLAGS -Werror"
Index: valgrind-3.20.0/configure.ac
===================================================================
--- valgrind-3.20.0.orig/configure.ac
+++ valgrind-3.20.0/configure.ac
@@ -2448,7 +2448,7 @@ AC_CACHE_CHECK([for using the link time
if test "x${vg_cv_lto}" != "xno" -a "x${LTO_AR}" != "x" -a "x${LTO_RANLIB}" != "x"; then
AC_MSG_CHECKING([if toolchain accepts lto])
safe_CFLAGS=$CFLAGS
-TEST_LTO_CFLAGS="-flto -flto-partition=one -fuse-linker-plugin"
+TEST_LTO_CFLAGS="-flto=auto"
# Note : using 'one' partition is giving a slightly smaller/faster memcheck
# and ld/lto-trans1 still needs a reasonable memory (about 0.5GB) when linking.
CFLAGS="$TEST_LTO_CFLAGS -Werror"

BIN
valgrind-3.21.0.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

1510
valgrind.changes Normal file

File diff suppressed because it is too large Load Diff

388
valgrind.spec Normal file
View File

@ -0,0 +1,388 @@
#
# spec file
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if 0%{?!make_build:1}
%define make_build make -O %{?_smp_mflags} V=1 VERBOSE=1
%endif
# during building the major version of glibc is built into the suppression file
%define glibc_main_version %(getconf GNU_LIBC_VERSION | cut -d' ' -f2 | cut -d. -f1)
%define glibc_major_version %(getconf GNU_LIBC_VERSION | cut -d' ' -f2 | cut -d. -f2)
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "client-headers"
%define psuffix -client-headers-source
%endif
%bcond_without docs
Name: valgrind%{?psuffix}
Version: 3.21.0
Release: 0
Summary: Memory Management Debugger
License: GFDL-1.2-only AND GPL-2.0-or-later
Group: Development/Tools/Debuggers
URL: https://valgrind.org/
Source0: https://sourceware.org/pub/valgrind/valgrind-%{version}.tar.bz2
# https://bugs.kde.org/show_bug.cgi?id=390553
# https://github.com/olafhering/valgrind/compare/olh-base-master...olh-fixes-master
Patch0: valgrind.xen.patch
# bko#276780 missing implementation for PINSRD
Patch1: VEX-x86-pinsrd.patch
Patch2: armv6-support.diff
Patch9: parallel-lto.patch
Patch10: dhat-use-datadir.patch
BuildRequires: automake
BuildRequires: pkgconfig
%if %{suse_version} == 1600 && !0%{?is_opensuse}
ExclusiveArch: aarch64 x86_64 ppc64le s390x
%else
ExclusiveArch: aarch64 %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7l armv7hl armv6l armv6hl
%endif
%if "%{flavor}" == ""
Requires: (glibc >= %{glibc_main_version}.%{glibc_major_version} with glibc < %{glibc_main_version}.%{lua:print(rpm.expand("%{glibc_major_version}")+1)})
Provides: callgrind = %{version}
Obsoletes: callgrind < %{version}
%if %{with docs}
BuildRequires: docbook-xsl-stylesheets
BuildRequires: libxslt
%endif
%if 0%{?suse_version} < 1500
BuildRequires: gcc8-c++
%global cpp_version -8
%else
BuildRequires: gcc-c++
%endif
%if !0%{?disable_32bit}
%ifarch x86_64 ppc64
BuildRequires: glibc-devel-32bit
%if 0%{?suse_version} < 1500
BuildRequires: gcc8-c++-32bit
%else
BuildRequires: gcc-c++-32bit
%endif
%endif
%endif
%endif
%description
Valgrind checks all memory operations in an application, like read,
write, malloc, new, free, and delete. Valgrind can find uses of
uninitialized memory, access to already freed memory, overflows,
illegal stack operations, memory leaks, and any illegal
new/malloc/free/delete commands. Another program in the package is
"cachegrind," a profiler based on the valgrind engine.
To use valgrind you should compile your application with "-g -O0"
compiler options. Afterwards you can use it with:
valgrind --tool=memcheck --sloppy-malloc=yes --leak-check=yes
--db-attach=yes my_application, for example.
More valgrind options can be listed via "valgrind --help". There is
also complete documentation in the %{_docdir}/valgrind/
directory. A debugged application runs slower and needs much more
memory, but is usually still usable. Valgrind is still in development,
but it has been successfully used to optimize several KDE applications.
%package devel
Summary: Header files for for Valgrind
License: GPL-2.0-or-later
Group: Development/Tools/Debuggers
Requires: %{name} = %{version}
Requires: %{name}-client-headers = %{version}
%description devel
This package contains the Valgrind header files.
%package -n valgrind-client-headers
Summary: Header files for for Valgrind
# The client headers are permissively licensed under a BSD-style
# license. SPDX License Request filed.
# License: BSD-3-Clause
License: GFDL-1.2-only AND GPL-2.0-or-later
Group: Development/Tools/Debuggers
Provides: valgrind-devel:%{_includedir}/valgrind/valgrind.h
BuildArch: noarch
%description -n valgrind-client-headers
This package contains the BSD-style licensed Valgrind header
files for inclusion into regular programs. The program can
detect if it is running under Valgrind and interact with the
Valgrind core and plugins.
%ifarch x86_64 ppc64 s390x
%package 32bit
Summary: Memory Management Debugger
License: GPL-2.0-or-later
Group: Development/Tools/Debuggers
Requires: %{name} = %{version}
Provides: valgrind:%{_libdir}/valgrind/32bit-core.xml
%description 32bit
Valgrind checks all memory operations in an application, like read,
write, malloc, new, free, and delete. Valgrind can find uses of
uninitialized memory, access to already freed memory, overflows,
illegal stack operations, memory leaks, and any illegal
new/malloc/free/delete commands. Another program in the package is
"cachegrind," a profiler based on the valgrind engine.
To use valgrind you should compile your application with "-g -O0"
compiler options. Afterwards you can use it with:
valgrind --tool=memcheck --sloppy-malloc=yes --leak-check=yes
--db-attach=yes my_application, for example.
More valgrind options can be listed via "valgrind --help". There is
also complete documentation in the %{_docdir}/valgrind/
directory. A debugged application runs slower and needs much more
memory, but is usually still usable. Valgrind is still in development,
but it has been successfully used to optimize several KDE applications.
%endif
%prep
%autosetup -p1 -n valgrind-%{version}
%build
%define _lto_cflags %{nil}
# The preloaded libs for intercepting rely on lazy binding (bsc#1208407)
export SUSE_ZNOW=0
export FLAGS="%{optflags}"
# not a good idea to build valgrind with fortify, as it does not link glibc
FLAGS="${FLAGS/-D_FORTIFY_SOURCE=2/}"
FLAGS="${FLAGS/-D_FORTIFY_SOURCE=3/}"
FLAGS="${FLAGS/-fstack-protector-strong/}"
FLAGS="${FLAGS/-fstack-protector/}"
# -m64 / -m32 is set explicitly everywhere, do not override it
FLAGS="${FLAGS/-m64/}"
export CFLAGS="$FLAGS"
export CXXFLAGS="$FLAGS"
export FFLAGS="$FLAGS"
export CXX="g++%{?cpp_version}"
export CC="gcc%{?cpp_version}"
autoreconf -fi
export GDB=%{_bindir}/gdb
%configure \
%ifnarch ppc64
--enable-lto=yes \
%endif
%ifarch aarch64
--enable-only64bit \
%endif
%{nil}
%if "%{flavor}" == ""
%make_build
%if %{with docs}
pushd docs
#make all-docs
# building the docs needs network access at the moment :-(
%make_build FAQ.txt man-pages html-docs
popd
%endif
%endif
%install
%if "%{flavor}" == ""
%make_install
rm %{buildroot}/%{_libdir}/valgrind/lib*.a # drop unreproducible unused files to fix boo#1118163
mkdir -p %{buildroot}/%{_defaultdocdir}
if test -d %{buildroot}%{_datadir}/doc/valgrind; then
# Remove Postscript manual (20 MByte), there are PDF and HTML versions
rm %{buildroot}%{_datadir}/doc/valgrind/valgrind_manual.ps
mv %{buildroot}%{_datadir}/doc/valgrind %{buildroot}/%{_defaultdocdir}
fi
mkdir -p %{buildroot}%{_docdir}/%{name}
rm %{buildroot}/%{_includedir}/valgrind/{valgrind,callgrind,dhat,drd,helgrind,memcheck}.h
%else
install -m 755 -d %{buildroot}/%{_includedir}/valgrind
install -m 644 -t %{buildroot}/%{_includedir}/valgrind \
include/valgrind.h \
callgrind/callgrind.h \
dhat/dhat.h \
drd/drd.h \
helgrind/helgrind.h \
memcheck/memcheck.h
%endif
%check
%if "%{flavor}" == ""
# OBS doesn't have a z13
%ifnarch s390x %{arm}
# 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 %{_bindir}/perl -wc tests/vg_regtest
%endif
%endif
%if "%{flavor}" == ""
%files devel
%dir %{_includedir}/valgrind
%{_includedir}/valgrind/config.h
%{_includedir}/valgrind/vki
%{_includedir}/valgrind/libvex*.h
%{_includedir}/valgrind/pub_tool*.h
%{_libdir}/pkgconfig/valgrind.pc
%files -n valgrind
%license COPYING COPYING.DOCS
%{_bindir}/*
%doc README* NEWS AUTHORS
%doc %{_defaultdocdir}/%{name}/*
%{_mandir}/*/*
%dir %{_libexecdir}/valgrind
%ifarch aarch64
%{_libexecdir}/valgrind/*-arm64-linux
%endif
%ifarch x86_64
%{_libexecdir}/valgrind/*-amd64-linux
%endif
%ifarch %{ix86}
%{_libexecdir}/valgrind/*-x86-linux
%endif
%ifarch ppc
%{_libexecdir}/valgrind/*-ppc32-linux
%endif
%ifarch ppc64
%{_libexecdir}/valgrind/*-ppc64be-linux
%endif
%ifarch ppc64le
%{_libexecdir}/valgrind/*-ppc64le-linux
%endif
%ifarch s390x
%{_libexecdir}/valgrind/*-s390x-linux
%endif
%ifarch %{arm}
%{_libexecdir}/valgrind/*-arm-linux
%endif
%dir %{_datadir}/valgrind
%{_datadir}/valgrind/dh_view*
%{_libexecdir}/valgrind/*-linux.so
%{_libexecdir}/valgrind/*.supp
%{_libexecdir}/valgrind/valgrind-monitor-def.py
%{_libexecdir}//valgrind/valgrind-monitor.py
%{_libexecdir}/valgrind/64bit-core.xml
%{_libexecdir}/valgrind/64bit-linux.xml
%{_libexecdir}/valgrind/64bit-sse.xml
%{_libexecdir}/valgrind/64bit-core-valgrind-s*.xml
%{_libexecdir}/valgrind/64bit-linux-valgrind-s*.xml
%{_libexecdir}/valgrind/64bit-sse-valgrind-s*.xml
%{_libexecdir}/valgrind/amd64-coresse-valgrind.xml
%{_libexecdir}/valgrind/amd64-linux-valgrind.xml
%{_libexecdir}/valgrind/power64-core-valgrind-s*.xml
%{_libexecdir}/valgrind/power64-core.xml
%{_libexecdir}/valgrind/power64-core2-valgrind-s*.xml
%{_libexecdir}/valgrind/power64-linux-valgrind-s*.xml
%{_libexecdir}/valgrind/power64-linux.xml
%{_libexecdir}/valgrind/64bit-avx-valgrind-s*.xml
%{_libexecdir}/valgrind/64bit-avx.xml
%{_libexecdir}/valgrind/amd64-avx-coresse-valgrind.xml
%{_libexecdir}/valgrind/amd64-avx-coresse.xml
%{_libexecdir}/valgrind/amd64-avx-linux-valgrind.xml
%{_libexecdir}/valgrind/amd64-avx-linux.xml
%{_libexecdir}/valgrind/mips64-cp0-valgrind-s*.xml
%{_libexecdir}/valgrind/mips64-cp0.xml
%{_libexecdir}/valgrind/mips64-cpu-valgrind-s*.xml
%{_libexecdir}/valgrind/mips64-cpu.xml
%{_libexecdir}/valgrind/mips64-fpu-valgrind-s*.xml
%{_libexecdir}/valgrind/mips64-fpu.xml
%{_libexecdir}/valgrind/mips64-linux-valgrind.xml
%{_libexecdir}/valgrind/mips64-linux.xml
%{_libexecdir}/valgrind/power-core-valgrind-s*.xml
%{_libexecdir}/valgrind/s390x-core64-valgrind-s*.xml
%{_libexecdir}/valgrind/s390x-core64.xml
%{_libexecdir}/valgrind/s390x-generic-valgrind.xml
%{_libexecdir}/valgrind/s390x-generic.xml
%{_libexecdir}/valgrind/s390x-linux64-valgrind-s*.xml
%{_libexecdir}/valgrind/s390x-linux64.xml
%{_libexecdir}/valgrind/s390x-vx-linux-valgrind.xml
%{_libexecdir}/valgrind/s390x-vx-linux.xml
# See https://bugzilla.suse.com/show_bug.cgi?id=1147071#c0
%{_libexecdir}/valgrind/s390-acr-valgrind-s*.xml
%{_libexecdir}/valgrind/s390-acr.xml
%{_libexecdir}/valgrind/s390-fpr-valgrind-s*.xml
%{_libexecdir}/valgrind/s390-fpr.xml
%{_libexecdir}/valgrind/s390-vx-valgrind-s*.xml
%{_libexecdir}/valgrind/s390-vx.xml
%ifarch x86_64 ppc64 s390x
%files 32bit
%endif
%ifarch %{ix86} x86_64
%if !0%{?disable_32bit}
%{_libexecdir}/valgrind/*-x86-linux
%endif
%endif
%ifarch ppc ppc64
%{_libexecdir}/valgrind/*-ppc32-linux
%endif
%{_libexecdir}/valgrind/mips-cp0-valgrind-s*.xml
%{_libexecdir}/valgrind/mips-cp0.xml
%{_libexecdir}/valgrind/mips-cpu-valgrind-s*.xml
%{_libexecdir}/valgrind/mips-cpu.xml
%{_libexecdir}/valgrind/mips-fpu-valgrind-s*.xml
%{_libexecdir}/valgrind/mips-fpu.xml
%{_libexecdir}/valgrind/mips-linux-valgrind.xml
%{_libexecdir}/valgrind/mips-linux.xml
%{_libexecdir}/valgrind/32bit-core.xml
%{_libexecdir}/valgrind/32bit-linux.xml
%{_libexecdir}/valgrind/32bit-sse.xml
%{_libexecdir}/valgrind/arm-core-valgrind-s*.xml
%{_libexecdir}/valgrind/arm-core.xml
%{_libexecdir}/valgrind/arm-vfpv3-valgrind-s*.xml
%{_libexecdir}/valgrind/arm-vfpv3.xml
%{_libexecdir}/valgrind/arm-with-vfpv3-valgrind.xml
%{_libexecdir}/valgrind/arm-with-vfpv3.xml
%{_libexecdir}/valgrind/32bit-core-valgrind-s*.xml
%{_libexecdir}/valgrind/32bit-linux-valgrind-s*.xml
%{_libexecdir}/valgrind/32bit-sse-valgrind-s*.xml
%{_libexecdir}/valgrind/i386-coresse-valgrind.xml
%{_libexecdir}/valgrind/i386-linux-valgrind.xml
%{_libexecdir}/valgrind/power-altivec-valgrind-s*.xml
%{_libexecdir}/valgrind/power-altivec.xml
%{_libexecdir}/valgrind/power-core.xml
%{_libexecdir}/valgrind/power-fpu-valgrind-s*.xml
%{_libexecdir}/valgrind/power-fpu.xml
%{_libexecdir}/valgrind/power-linux-valgrind-s*.xml
%{_libexecdir}/valgrind/power-linux.xml
%{_libexecdir}/valgrind/power-vsx-valgrind-s1.xml
%{_libexecdir}/valgrind/power-vsx-valgrind-s2.xml
%{_libexecdir}/valgrind/power-vsx.xml
%{_libexecdir}/valgrind/powerpc-altivec32l-valgrind.xml
%{_libexecdir}/valgrind/powerpc-altivec32l.xml
%{_libexecdir}/valgrind/powerpc-altivec64l-valgrind.xml
%{_libexecdir}/valgrind/powerpc-altivec64l.xml
%else
%files -n valgrind-client-headers
%dir %{_includedir}/valgrind
%{_includedir}/valgrind/callgrind.h
%{_includedir}/valgrind/dhat.h
%{_includedir}/valgrind/drd.h
%{_includedir}/valgrind/helgrind.h
%{_includedir}/valgrind/memcheck.h
%{_includedir}/valgrind/valgrind.h
%endif
%changelog

2767
valgrind.xen.patch Normal file

File diff suppressed because it is too large Load Diff