3.20.0-1 - Upgrade to valgrind 3.20.0. Drop old patches.
This commit is contained in:
parent
c26fba590e
commit
abb597e9d8
1
.gitignore
vendored
1
.gitignore
vendored
@ -44,3 +44,4 @@
|
|||||||
/valgrind-3.18.0.RC1.tar.bz2
|
/valgrind-3.18.0.RC1.tar.bz2
|
||||||
/valgrind-3.18.1.tar.bz2
|
/valgrind-3.18.1.tar.bz2
|
||||||
/valgrind-3.19.0.tar.bz2
|
/valgrind-3.19.0.tar.bz2
|
||||||
|
/valgrind-3.20.0.tar.bz2
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (valgrind-3.19.0.tar.bz2) = f720a89dc4c4989cc5714bff9efe97529f71990bcfad7a92b889ce099c4326d6da07fa4d5fbab2e9125e20f352354f6178471e49e419b613a3c82c2a1c667ab2
|
SHA512 (valgrind-3.20.0.tar.bz2) = d6bfb9284d0410134ee7e2a5975b13c01508dd5587b562947d8197b3c113b76fdfac88c4072948be68bbf0dbeb17b4d1acb1412ce898adaa83c30ae2c6a1c12b
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
commit 947388eb043ea1c44b37df94046e1eee790ad776
|
|
||||||
Author: Mike Crowe <mac@mcrowe.com>
|
|
||||||
Date: Mon Sep 9 14:16:16 2019 +0100
|
|
||||||
|
|
||||||
Intercept strncmp for glibc ld.so v2.28+
|
|
||||||
|
|
||||||
In glibc 5aad5f617892e75d91d4c8fb7594ff35b610c042 (first released in
|
|
||||||
v2.28) a call to strncmp was added to dl-load.c:is_dst. This causes
|
|
||||||
valgrind to complain about glibc's highly-optimised strncmp performing
|
|
||||||
sixteen-byte reads on short strings in ld.so. Let's intercept strncmp in
|
|
||||||
ld.so too so we use valgrind's simple version to avoid this problem.
|
|
||||||
|
|
||||||
diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c
|
|
||||||
index 3b42b3a87..5396e83be 100644
|
|
||||||
--- a/shared/vg_replace_strmem.c
|
|
||||||
+++ b/shared/vg_replace_strmem.c
|
|
||||||
@@ -710,6 +710,8 @@ static inline void my_exit ( int x )
|
|
||||||
STRNCMP(VG_Z_LIBC_SONAME, __GI_strncmp)
|
|
||||||
STRNCMP(VG_Z_LIBC_SONAME, __strncmp_sse2)
|
|
||||||
STRNCMP(VG_Z_LIBC_SONAME, __strncmp_sse42)
|
|
||||||
+ STRNCMP(VG_Z_LD_LINUX_SO_2, strncmp)
|
|
||||||
+ STRNCMP(VG_Z_LD_LINUX_X86_64_SO_2, strncmp)
|
|
||||||
|
|
||||||
#elif defined(VGO_freebsd)
|
|
||||||
STRNCMP(VG_Z_LIBC_SONAME, strncmp)
|
|
@ -1,231 +0,0 @@
|
|||||||
From 42ca1c480a5bca408a54c6a24d2be2c081d121ac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andreas Arnez <arnez@linux.ibm.com>
|
|
||||||
Date: Thu, 19 May 2022 13:54:06 +0200
|
|
||||||
Subject: [PATCH] Bug 454040 - Add intercept for memmem on s390x
|
|
||||||
|
|
||||||
Since memcheck may report false positives in an optimized version of memmem on
|
|
||||||
s390x, add an intercept for memmem on s390x platforms.
|
|
||||||
---
|
|
||||||
shared/vg_replace_strmem.c | 36 ++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 36 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c
|
|
||||||
index 5396e83be..d28e74206 100644
|
|
||||||
--- a/shared/vg_replace_strmem.c
|
|
||||||
+++ b/shared/vg_replace_strmem.c
|
|
||||||
@@ -103,6 +103,7 @@
|
|
||||||
20430 WMEMCHR
|
|
||||||
20440 WCSNLEN
|
|
||||||
20450 WSTRNCMP
|
|
||||||
+ 20460 MEMMEM
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(VGO_solaris)
|
|
||||||
@@ -1785,6 +1786,41 @@ static inline void my_exit ( int x )
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+/*---------------------- memmem ----------------------*/
|
|
||||||
+
|
|
||||||
+#define MEMMEM(soname, fnname) \
|
|
||||||
+ void* VG_REPLACE_FUNCTION_EZU(20460,soname,fnname) \
|
|
||||||
+ (const void* haystack, SizeT hlen, const void* needle, SizeT nlen); \
|
|
||||||
+ void* VG_REPLACE_FUNCTION_EZU(20460,soname,fnname) \
|
|
||||||
+ (const void* haystack, SizeT hlen, const void* needle, SizeT nlen) \
|
|
||||||
+ { \
|
|
||||||
+ const HChar* h = haystack; \
|
|
||||||
+ const HChar* n = needle; \
|
|
||||||
+ \
|
|
||||||
+ /* If the needle is the empty string, match immediately. */ \
|
|
||||||
+ if (nlen == 0) return CONST_CAST(void *,h); \
|
|
||||||
+ \
|
|
||||||
+ HChar n0 = n[0]; \
|
|
||||||
+ \
|
|
||||||
+ for (; hlen >= nlen; hlen--, h++) { \
|
|
||||||
+ if (h[0] != n0) continue; \
|
|
||||||
+ \
|
|
||||||
+ UWord i; \
|
|
||||||
+ for (i = 1; i < nlen; i++) { \
|
|
||||||
+ if (n[i] != h[i]) \
|
|
||||||
+ break; \
|
|
||||||
+ } \
|
|
||||||
+ if (i == nlen) \
|
|
||||||
+ return CONST_CAST(HChar *,h); \
|
|
||||||
+ \
|
|
||||||
+ } \
|
|
||||||
+ return NULL; \
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+#if defined(VGP_s390x_linux)
|
|
||||||
+ MEMMEM(VG_Z_LIBC_SONAME, memmem)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
|
|
||||||
/*---------------------- strpbrk ----------------------*/
|
|
||||||
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
||||||
From 4d675f309bcd2d4e9e2b9e6f4aba30f85116bb9b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Thu, 19 May 2022 18:08:40 -0400
|
|
||||||
Subject: [PATCH] Add memmem memcheck tests
|
|
||||||
|
|
||||||
---
|
|
||||||
memcheck/tests/Makefile.am | 3 ++
|
|
||||||
memcheck/tests/filter_memmem | 5 ++
|
|
||||||
memcheck/tests/memmem.c | 81 ++++++++++++++++++++++++++++++++
|
|
||||||
memcheck/tests/memmem.stderr.exp | 2 +
|
|
||||||
memcheck/tests/memmem.vgtest | 3 ++
|
|
||||||
5 files changed, 94 insertions(+)
|
|
||||||
create mode 100755 memcheck/tests/filter_memmem
|
|
||||||
create mode 100644 memcheck/tests/memmem.c
|
|
||||||
create mode 100644 memcheck/tests/memmem.stderr.exp
|
|
||||||
create mode 100644 memcheck/tests/memmem.vgtest
|
|
||||||
|
|
||||||
diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am
|
|
||||||
index eb9487272..4d181c1ac 100644
|
|
||||||
--- a/memcheck/tests/Makefile.am
|
|
||||||
+++ b/memcheck/tests/Makefile.am
|
|
||||||
@@ -79,6 +79,7 @@ dist_noinst_SCRIPTS = \
|
|
||||||
filter_strchr \
|
|
||||||
filter_varinfo3 \
|
|
||||||
filter_memcheck \
|
|
||||||
+ filter_memmem \
|
|
||||||
filter_overlaperror \
|
|
||||||
filter_malloc_free \
|
|
||||||
filter_sized_delete
|
|
||||||
@@ -220,6 +221,7 @@ EXTRA_DIST = \
|
|
||||||
memalign2.stderr.exp memalign2.vgtest \
|
|
||||||
memcmptest.stderr.exp memcmptest.stderr.exp2 \
|
|
||||||
memcmptest.stdout.exp memcmptest.vgtest \
|
|
||||||
+ memmem.stderr.exp memmem.vgtest \
|
|
||||||
mempool.stderr.exp mempool.vgtest \
|
|
||||||
mempool2.stderr.exp mempool2.vgtest \
|
|
||||||
metadata.stderr.exp metadata.stdout.exp metadata.vgtest \
|
|
||||||
@@ -417,6 +419,7 @@ check_PROGRAMS = \
|
|
||||||
malloc_usable malloc1 malloc2 malloc3 manuel1 manuel2 manuel3 \
|
|
||||||
match-overrun \
|
|
||||||
memalign_test memalign2 memcmptest mempool mempool2 mmaptest \
|
|
||||||
+ memmem \
|
|
||||||
mismatches new_override metadata \
|
|
||||||
nanoleak_supp nanoleak2 new_nothrow \
|
|
||||||
noisy_child \
|
|
||||||
diff --git a/memcheck/tests/filter_memmem b/memcheck/tests/filter_memmem
|
|
||||||
new file mode 100755
|
|
||||||
index 000000000..f4a40b2d1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/memcheck/tests/filter_memmem
|
|
||||||
@@ -0,0 +1,5 @@
|
|
||||||
+#! /bin/sh
|
|
||||||
+
|
|
||||||
+# Too many memmem implementations and overrides.
|
|
||||||
+# So just keep the main file lines.
|
|
||||||
+./filter_stderr "$@" | grep " main (memmem.c:"
|
|
||||||
diff --git a/memcheck/tests/memmem.c b/memcheck/tests/memmem.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..d627076e3
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/memcheck/tests/memmem.c
|
|
||||||
@@ -0,0 +1,81 @@
|
|
||||||
+#define _GNU_SOURCE
|
|
||||||
+#include <assert.h>
|
|
||||||
+#include <string.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+
|
|
||||||
+/* mallocs an mem block and fills it with A. A needs to be a zero
|
|
||||||
+ terminated string. The A string chars, minus the terminating zero
|
|
||||||
+ are copied into the returned mem block. */
|
|
||||||
+static void *
|
|
||||||
+create_mem (const char *a)
|
|
||||||
+{
|
|
||||||
+ size_t len = strlen (a);
|
|
||||||
+ void *mem = malloc (len);
|
|
||||||
+ memcpy (mem, a, len);
|
|
||||||
+ return mem;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+ char *haystack;
|
|
||||||
+ char *needle;
|
|
||||||
+
|
|
||||||
+ haystack = create_mem ("a");
|
|
||||||
+ needle = create_mem ("a");
|
|
||||||
+ assert (memmem (haystack, 0, needle, 0) == haystack);
|
|
||||||
+ assert (memmem (haystack, 1, needle, 0) == haystack);
|
|
||||||
+ assert (memmem (haystack, 0, needle, 1) == NULL);
|
|
||||||
+ assert (memmem (haystack, 1, needle, 1) == haystack);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ haystack = create_mem ("abc");
|
|
||||||
+ needle = create_mem ("bc");
|
|
||||||
+ assert (memmem (haystack, 3, needle, 0) == haystack);
|
|
||||||
+ assert (memmem (haystack, 3, needle, 2) == haystack + 1);
|
|
||||||
+ assert (memmem (haystack + 1, 2, needle, 2) == haystack + 1);
|
|
||||||
+ assert (memmem (haystack + 2, 1, needle, 2) == NULL);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ haystack = create_mem ("abcabcabc");
|
|
||||||
+ needle = create_mem ("bca");
|
|
||||||
+ assert (memmem (haystack, 9, needle, 3) == haystack + 1);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ haystack = create_mem ("abcabcabc");
|
|
||||||
+ needle = create_mem ("bcad");
|
|
||||||
+ assert (memmem (haystack, 9, needle, 4) == NULL);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ haystack = create_mem ("xxxxxxxxxxxxxxxxxABC");
|
|
||||||
+ needle = create_mem ("ABCD");
|
|
||||||
+ assert (memmem (haystack, 20, needle, 2) == haystack + 17);
|
|
||||||
+ assert (memmem (haystack + 3, 17, needle, 2) == haystack + 17);
|
|
||||||
+ assert (memmem (haystack + 15, 5, needle, 2) == haystack + 17);
|
|
||||||
+ assert (memmem (haystack, 20, needle, 3) == haystack + 17);
|
|
||||||
+ assert (memmem (haystack + 3, 17, needle, 3) == haystack + 17);
|
|
||||||
+ assert (memmem (haystack + 15, 5, needle, 3) == haystack + 17);
|
|
||||||
+ assert (memmem (haystack, 20, needle, 4) == NULL);
|
|
||||||
+ assert (memmem (haystack + 3, 5, needle, 4) == NULL);
|
|
||||||
+ assert (memmem (haystack + 15, 5, needle, 4) == NULL);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ haystack = malloc (1);
|
|
||||||
+ needle = create_mem ("a");
|
|
||||||
+ assert (memmem (haystack, 1, needle, 1) == NULL);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ haystack = create_mem ("A");
|
|
||||||
+ needle = malloc (1);
|
|
||||||
+ assert (memmem (haystack, 1, needle, 1) == NULL);
|
|
||||||
+ free (haystack);
|
|
||||||
+ free (needle);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
diff --git a/memcheck/tests/memmem.stderr.exp b/memcheck/tests/memmem.stderr.exp
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..b4612fbd4
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/memcheck/tests/memmem.stderr.exp
|
|
||||||
@@ -0,0 +1,2 @@
|
|
||||||
+ by 0x........: main (memmem.c:70)
|
|
||||||
+ by 0x........: main (memmem.c:76)
|
|
||||||
diff --git a/memcheck/tests/memmem.vgtest b/memcheck/tests/memmem.vgtest
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000..6d12895df
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/memcheck/tests/memmem.vgtest
|
|
||||||
@@ -0,0 +1,3 @@
|
|
||||||
+prog: memmem
|
|
||||||
+vgopts: -q
|
|
||||||
+stderr_filter: filter_memmem
|
|
||||||
--
|
|
||||||
2.18.4
|
|
||||||
|
|
@ -2,14 +2,12 @@
|
|||||||
|
|
||||||
Summary: Dynamic analysis tools to detect memory or thread bugs and profile
|
Summary: Dynamic analysis tools to detect memory or thread bugs and profile
|
||||||
Name: %{?scl_prefix}valgrind
|
Name: %{?scl_prefix}valgrind
|
||||||
Version: 3.19.0
|
Version: 3.20.0
|
||||||
Release: 4%{?dist}
|
Release: 1%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: https://www.valgrind.org/
|
URL: https://www.valgrind.org/
|
||||||
|
|
||||||
# Only necessary for RHEL, will be ignored on Fedora
|
|
||||||
|
|
||||||
# Are we building for a Software Collection?
|
# Are we building for a Software Collection?
|
||||||
%{?scl:%global is_scl 1}
|
%{?scl:%global is_scl 1}
|
||||||
%{!?scl:%global is_scl 0}
|
%{!?scl:%global is_scl 0}
|
||||||
@ -85,12 +83,6 @@ Patch3: valgrind-3.16.0-some-stack-protector.patch
|
|||||||
# Add some -Wl,z,now.
|
# Add some -Wl,z,now.
|
||||||
Patch4: valgrind-3.16.0-some-Wl-z-now.patch
|
Patch4: valgrind-3.16.0-some-Wl-z-now.patch
|
||||||
|
|
||||||
# KDE#434764 # iconv_open causes ld.so v2.28+ to execute optimised strncmp
|
|
||||||
Patch5: valgrind-3.19.0-ld-so-strncmp.patch
|
|
||||||
|
|
||||||
# KDE#454040 s390x: False-positive memcheck:cond in memmem on arch13 systems
|
|
||||||
Patch6: valgrind-3.19.0-s390x-memmem.patch
|
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: glibc-devel
|
BuildRequires: glibc-devel
|
||||||
|
|
||||||
@ -228,9 +220,6 @@ Valgrind User Manual for details.
|
|||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# LTO triggers undefined symbols in valgrind. Valgrind has a --enable-lto
|
# LTO triggers undefined symbols in valgrind. Valgrind has a --enable-lto
|
||||||
# configure time option, but that doesn't seem to help.
|
# configure time option, but that doesn't seem to help.
|
||||||
@ -459,6 +448,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Oct 24 2022 Mark Wielaard <mjw@fedoraproject.org> - 3.20.0-1
|
||||||
|
- Upgrade to valgrind 3.20.0. Drop old patches.
|
||||||
|
|
||||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.19.0-4
|
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.19.0-4
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user