diff --git a/.gitignore b/.gitignore index b26b31c..49d7e90 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/valgrind-3.19.0.tar.bz2 +SOURCES/valgrind-3.22.0.tar.bz2 diff --git a/.valgrind.metadata b/.valgrind.metadata index aad2930..c2dab07 100644 --- a/.valgrind.metadata +++ b/.valgrind.metadata @@ -1 +1 @@ -294c341b421b4d9534e42e8125f509c148f48c17 SOURCES/valgrind-3.19.0.tar.bz2 +60894cbf59d480c1794674da24a8406518a8df59 SOURCES/valgrind-3.22.0.tar.bz2 diff --git a/SOURCES/valgrind-3.16.0-some-Wl-z-now.patch b/SOURCES/valgrind-3.16.0-some-Wl-z-now.patch index 79c3662..f6001d2 100644 --- a/SOURCES/valgrind-3.16.0-some-Wl-z-now.patch +++ b/SOURCES/valgrind-3.16.0-some-Wl-z-now.patch @@ -35,19 +35,6 @@ index 1b7842b..e211eec 100644 if HAVE_DLINFO_RTLD_DI_TLS_MODID getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = $(LDADD) -ldl endif -diff --git a/cachegrind/Makefile.am b/cachegrind/Makefile.am -index f572741..1c07e50 100644 ---- a/cachegrind/Makefile.am -+++ b/cachegrind/Makefile.am -@@ -27,7 +27,7 @@ cg_merge_SOURCES = cg_merge.c - cg_merge_CPPFLAGS = $(AM_CPPFLAGS_PRI) - cg_merge_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong - cg_merge_CCASFLAGS = $(AM_CCASFLAGS_PRI) --cg_merge_LDFLAGS = $(AM_CFLAGS_PRI) -+cg_merge_LDFLAGS = $(AM_CFLAGS_PRI) -Wl,-z,now - # If there is no secondary platform, and the platforms include x86-darwin, - # then the primary platform must be x86-darwin. Hence: - if ! VGCONF_HAVE_PLATFORM_SEC diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am index 3c73210..fb6b7bb 100644 --- a/coregrind/Makefile.am @@ -61,8 +48,8 @@ index 3c73210..fb6b7bb 100644 # If there is no secondary platform, and the platforms include x86-darwin, # then the primary platform must be x86-darwin. Hence: if ! VGCONF_HAVE_PLATFORM_SEC -@@ -96,7 +96,7 @@ endif - vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) +@@ -104,7 +104,7 @@ + vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) $(GDB_SCRIPTS_DIR) vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI) -vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ diff --git a/SOURCES/valgrind-3.16.0-some-stack-protector.patch b/SOURCES/valgrind-3.16.0-some-stack-protector.patch index 324c7d3..751cf39 100644 --- a/SOURCES/valgrind-3.16.0-some-stack-protector.patch +++ b/SOURCES/valgrind-3.16.0-some-stack-protector.patch @@ -35,19 +35,6 @@ index 56cc5ef..1b7842b 100644 getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CCASFLAGS = $(AM_CCASFLAGS_PRI) getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ if HAVE_DLINFO_RTLD_DI_TLS_MODID -diff --git a/cachegrind/Makefile.am b/cachegrind/Makefile.am -index f8447a1..f572741 100644 ---- a/cachegrind/Makefile.am -+++ b/cachegrind/Makefile.am -@@ -25,7 +25,7 @@ bin_PROGRAMS = cg_merge - - cg_merge_SOURCES = cg_merge.c - cg_merge_CPPFLAGS = $(AM_CPPFLAGS_PRI) --cg_merge_CFLAGS = $(AM_CFLAGS_PRI) -+cg_merge_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong - cg_merge_CCASFLAGS = $(AM_CCASFLAGS_PRI) - cg_merge_LDFLAGS = $(AM_CFLAGS_PRI) - # If there is no secondary platform, and the platforms include x86-darwin, diff --git a/configure.ac b/configure.ac index f8c798b..ccc8f52 100755 --- a/configure.ac @@ -107,10 +94,10 @@ index 94030fd..3c73210 100644 valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI) valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ # If there is no secondary platform, and the platforms include x86-darwin, -@@ -94,7 +94,7 @@ vgdb_SOURCES += vgdb-invoker-solaris.c +@@ -102,7 +102,7 @@ endif - vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) + vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) $(GDB_SCRIPTS_DIR) -vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) +vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI) diff --git a/SOURCES/valgrind-3.19.0-ld-so-strncmp.patch b/SOURCES/valgrind-3.19.0-ld-so-strncmp.patch deleted file mode 100644 index 91007ef..0000000 --- a/SOURCES/valgrind-3.19.0-ld-so-strncmp.patch +++ /dev/null @@ -1,25 +0,0 @@ -commit 947388eb043ea1c44b37df94046e1eee790ad776 -Author: Mike Crowe -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) diff --git a/SOURCES/valgrind-3.19.0-s390x-memmem.patch b/SOURCES/valgrind-3.19.0-s390x-memmem.patch deleted file mode 100644 index 669b78e..0000000 --- a/SOURCES/valgrind-3.19.0-s390x-memmem.patch +++ /dev/null @@ -1,231 +0,0 @@ -From 42ca1c480a5bca408a54c6a24d2be2c081d121ac Mon Sep 17 00:00:00 2001 -From: Andreas Arnez -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 -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 -+#include -+#include -+ -+/* 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 - diff --git a/SOURCES/valgrind-3.22.0-rodata.patch b/SOURCES/valgrind-3.22.0-rodata.patch new file mode 100644 index 0000000..47f31ed --- /dev/null +++ b/SOURCES/valgrind-3.22.0-rodata.patch @@ -0,0 +1,122 @@ +commit 1d00e5ce0fb069911c4b525ec38289fb5d9021b0 +Author: Paul Floyd +Date: Sat Nov 18 08:49:34 2023 +0100 + + Bug 476548 - valgrind 3.22.0 fails on assertion when loading debuginfo file produced by mold + + (cherry picked from commit 9ea4ae66707a4dcc6f4328e11911652e4418c585) + +diff --git a/coregrind/m_debuginfo/image.c b/coregrind/m_debuginfo/image.c +index 02e509071..445f95555 100644 +--- a/coregrind/m_debuginfo/image.c ++++ b/coregrind/m_debuginfo/image.c +@@ -1221,6 +1221,20 @@ Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2) + } + } + ++Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n) ++{ ++ ensure_valid(img, off1, 1, "ML_(img_strcmp_c)"); ++ while (n) { ++ UChar c1 = get(img, off1); ++ UChar c2 = *(const UChar*)str2; ++ if (c1 < c2) return -1; ++ if (c1 > c2) return 1; ++ if (c1 == 0) return 0; ++ off1++; str2++; --n; ++ } ++ return 0; ++} ++ + UChar ML_(img_get_UChar)(DiImage* img, DiOffT offset) + { + ensure_valid(img, offset, 1, "ML_(img_get_UChar)"); +diff --git a/coregrind/m_debuginfo/priv_image.h b/coregrind/m_debuginfo/priv_image.h +index a49846f14..c91e49f01 100644 +--- a/coregrind/m_debuginfo/priv_image.h ++++ b/coregrind/m_debuginfo/priv_image.h +@@ -115,6 +115,10 @@ Int ML_(img_strcmp)(DiImage* img, DiOffT off1, DiOffT off2); + cast to HChar before comparison. */ + Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2); + ++/* Do strncmp of a C string in the image vs a normal one. Chars are ++ cast to HChar before comparison. */ ++Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n); ++ + /* Do strlen of a C string in the image. */ + SizeT ML_(img_strlen)(DiImage* img, DiOffT off); + +diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c +index fb64ed976..46f8c8343 100644 +--- a/coregrind/m_debuginfo/readelf.c ++++ b/coregrind/m_debuginfo/readelf.c +@@ -2501,8 +2501,7 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) + di->rodata_avma += inrw1->bias; + di->rodata_bias = inrw1->bias; + di->rodata_debug_bias = inrw1->bias; +- } +- else { ++ } else { + BAD(".rodata"); /* should not happen? */ + } + di->rodata_present = True; +@@ -2977,6 +2976,46 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) + return retval; + } + ++static void find_rodata(Word i, Word shnum, DiImage* dimg, struct _DebugInfo* di, DiOffT shdr_dioff, ++ UWord shdr_dent_szB, DiOffT shdr_strtab_dioff, PtrdiffT rw_dbias) ++{ ++ ElfXX_Shdr a_shdr; ++ ElfXX_Shdr a_extra_shdr; ++ ML_(img_get)(&a_shdr, dimg, ++ INDEX_BIS(shdr_dioff, i, shdr_dent_szB), ++ sizeof(a_shdr)); ++ if (di->rodata_present && ++ 0 == ML_(img_strcmp_c)(dimg, shdr_strtab_dioff ++ + a_shdr.sh_name, ".rodata")) { ++ Word sh_size = a_shdr.sh_size; ++ Word j; ++ Word next_addr = a_shdr.sh_addr + a_shdr.sh_size; ++ for (j = i + 1; j < shnum; ++j) { ++ ML_(img_get)(&a_extra_shdr, dimg, ++ INDEX_BIS(shdr_dioff, j, shdr_dent_szB), ++ sizeof(a_shdr)); ++ if (0 == ML_(img_strcmp_n)(dimg, shdr_strtab_dioff ++ + a_extra_shdr.sh_name, ".rodata", 7)) { ++ if (a_extra_shdr.sh_addr == ++ VG_ROUNDUP(next_addr, a_extra_shdr.sh_addralign)) { ++ sh_size = VG_ROUNDUP(sh_size, a_extra_shdr.sh_addralign) + a_extra_shdr.sh_size; ++ } ++ next_addr = a_extra_shdr.sh_addr + a_extra_shdr.sh_size; ++ } else { ++ break; ++ } ++ } ++ vg_assert(di->rodata_size == sh_size); ++ vg_assert(di->rodata_avma + a_shdr.sh_addr + rw_dbias); ++ di->rodata_debug_svma = a_shdr.sh_addr; ++ di->rodata_debug_bias = di->rodata_bias + ++ di->rodata_svma - di->rodata_debug_svma; ++ TRACE_SYMTAB("acquiring .rodata debug svma = %#lx .. %#lx\n", ++ di->rodata_debug_svma, ++ di->rodata_debug_svma + di->rodata_size - 1); ++ TRACE_SYMTAB("acquiring .rodata debug bias = %#lx\n", (UWord)di->rodata_debug_bias); ++ } ++} + Bool ML_(read_elf_debug) ( struct _DebugInfo* di ) + { + Word i, j; +@@ -3391,7 +3430,11 @@ Bool ML_(read_elf_debug) ( struct _DebugInfo* di ) + FIND(text, rx) + FIND(data, rw) + FIND(sdata, rw) +- FIND(rodata, rw) ++ // https://bugs.kde.org/show_bug.cgi?id=476548 ++ // special handling for rodata as adjacent ++ // rodata sections may have been merged in ML_(read_elf_object) ++ //FIND(rodata, rw) ++ find_rodata(i, ehdr_dimg.e_shnum, dimg, di, shdr_dioff, shdr_dent_szB, shdr_strtab_dioff, rw_dbias); + FIND(bss, rw) + FIND(sbss, rw) + diff --git a/SPECS/valgrind.spec b/SPECS/valgrind.spec index be5acfa..551192b 100644 --- a/SPECS/valgrind.spec +++ b/SPECS/valgrind.spec @@ -2,14 +2,12 @@ Summary: Dynamic analysis tools to detect memory or thread bugs and profile Name: %{?scl_prefix}valgrind -Version: 3.19.0 -Release: 3%{?dist} +Version: 3.22.0 +Release: 2%{?dist} Epoch: 1 License: GPLv2+ URL: https://www.valgrind.org/ -# Only necessary for RHEL, will be ignored on Fedora - # Are we building for a Software Collection? %{?scl:%global is_scl 1} %{!?scl:%global is_scl 0} @@ -17,11 +15,16 @@ URL: https://www.valgrind.org/ # We never want the openmpi subpackage when building a software collecton. # We always want it for fedora. # We only want it for older rhel. But not s390x for too old rhel. +# And on fedora > 39 i386 dropped openmpi. %if %{is_scl} %global build_openmpi 0 %else %if 0%{?fedora} - %global build_openmpi 1 + %ifarch %{ix86} + %global build_openmpi (%{?fedora} < 40) + %else + %global build_openmpi 1 + %endif %endif %if 0%{?rhel} %if 0%{?rhel} > 7 @@ -85,11 +88,9 @@ Patch3: valgrind-3.16.0-some-stack-protector.patch # Add some -Wl,z,now. 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 +# valgrind 3.22.0 fails on assertion when loading debuginfo +# https://bugs.kde.org/show_bug.cgi?id=476548 +Patch5: valgrind-3.22.0-rodata.patch BuildRequires: make BuildRequires: glibc-devel @@ -123,6 +124,7 @@ BuildRequires: docbook-dtds # For testing debuginfod-find %if 0%{?fedora} > 29 || 0%{?rhel} > 7 +BuildRequires: elfutils-debuginfod BuildRequires: elfutils-debuginfod-client # For using debuginfod at runtime Recommends: elfutils-debuginfod-client @@ -219,17 +221,16 @@ Valgrind User Manual for details. %prep %setup -q -n %{?scl:%{pkg_name}}%{!?scl:%{name}}-%{version} -%patch1 -p1 -%patch2 -p1 +%patch -P1 -p1 +%patch -P2 -p1 # Old rhel gcc doesn't have -fstack-protector-strong. %if 0%{?fedora} || 0%{?rhel} >= 7 -%patch3 -p1 -%patch4 -p1 +%patch -P3 -p1 +%patch -P4 -p1 %endif -%patch5 -p1 -%patch6 -p1 +%patch -P5 -p1 %build # LTO triggers undefined symbols in valgrind. Valgrind has a --enable-lto @@ -299,7 +300,8 @@ export LDFLAGS %configure \ --with-mpicc=%{mpiccpath} \ %{only_arch} \ - GDB=%{_bindir}/gdb + GDB=%{_bindir}/gdb \ + --with-gdbscripts-dir=%{_datadir}/gdb/auto-load %make_build @@ -417,10 +419,13 @@ echo ===============END TESTING=============== # Was disabled in %%install to prevent debuginfo stripping. %attr(0755,root,root) %{_libexecdir}/valgrind/vgpreload*-%{valarch}-*so %{_mandir}/man1/* +%{_datadir}/gdb/auto-load/valgrind-monitor.py +%{_datadir}/gdb/auto-load/valgrind-monitor-def.py %files devel %dir %{_includedir}/valgrind %{_includedir}/valgrind/valgrind.h +%{_includedir}/valgrind/cachegrind.h %{_includedir}/valgrind/callgrind.h %{_includedir}/valgrind/drd.h %{_includedir}/valgrind/helgrind.h @@ -459,6 +464,33 @@ fi %endif %changelog +* Wed Dec 6 2023 Mark Wielaard - 3.22.0-2 +- Add valgrind-3.22.0-rodata.patch + +* Fri Nov 3 2023 Mark Wielaard - 3.22.0-1 +- Upstream 3.22.0 final +- BuildRequires elfutils-debuginfod for testing +- Remove all upstreamed patches +- Adjust valgrind-3.16.0-some-stack-protector.patch +- Adjust valgrind-3.16.0-some-Wl-z-now.patch +- Add cachegrind.h to valgrind-devel package +- Use %%patch -Pn instead of deprecated %%patchn + +* Fri Jun 23 2023 Mark Wielaard - 3.21.0-7 +- Add valgrind-3.21.0-callgrind_control-no-strict.patch +- Add valgrind-3.21.0-realloc-again.patch +- Update valgrind-3.21.0-no-memcpy-replace-check.patch (memcpy_chk) +- Add valgrind-3.21.0-vgm.patch and valgrind-3.21.0-vgm-tests.patch +- Add valgrind-3.21.0-pgste.patch + +* Tue May 16 2023 Alexandra Hájková - 3.21.0-3 +- Add valgrind-3.21.0-Add-with-gdbscripts-dir.patch + +* Fri May 5 2023 Mark Wielaard - 3.21.0-2 +- Upgrade to upstream 3.21.0 +- Remove upstreamed patches +- Add valgrind-3.21.0-no-memcpy-replace-check.patch + * Wed May 25 2022 Mark Wielaard - 3.19.0-3 - Add valgrind-3.19.0-s390x-memmem.patch - Add valgrind-3.19.0-ld-so-strncmp.patch