Import from AlmaLinux stable repository
This commit is contained in:
parent
6a22688b38
commit
ab3657a826
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/valgrind-3.19.0.tar.bz2
|
||||
SOURCES/valgrind-3.22.0.tar.bz2
|
||||
|
@ -1 +1 @@
|
||||
294c341b421b4d9534e42e8125f509c148f48c17 SOURCES/valgrind-3.19.0.tar.bz2
|
||||
60894cbf59d480c1794674da24a8406518a8df59 SOURCES/valgrind-3.22.0.tar.bz2
|
||||
|
@ -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@
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
122
SOURCES/valgrind-3.22.0-rodata.patch
Normal file
122
SOURCES/valgrind-3.22.0-rodata.patch
Normal file
@ -0,0 +1,122 @@
|
||||
commit 1d00e5ce0fb069911c4b525ec38289fb5d9021b0
|
||||
Author: Paul Floyd <pjfloyd@wanadoo.fr>
|
||||
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)
|
||||
|
@ -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 <mjw@redhat.com> - 3.22.0-2
|
||||
- Add valgrind-3.22.0-rodata.patch
|
||||
|
||||
* Fri Nov 3 2023 Mark Wielaard <mjw@redhat.com> - 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 <mjw@redhat.com> - 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á <ahajkova@redhat.com> - 3.21.0-3
|
||||
- Add valgrind-3.21.0-Add-with-gdbscripts-dir.patch
|
||||
|
||||
* Fri May 5 2023 Mark Wielaard <mjw@redhat.com> - 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 <mjw@redhat.com> - 3.19.0-3
|
||||
- Add valgrind-3.19.0-s390x-memmem.patch
|
||||
- Add valgrind-3.19.0-ld-so-strncmp.patch
|
||||
|
Loading…
Reference in New Issue
Block a user