3.24.0-6 - More VALGRIND_3_24_BRANCH patches
Resolves: #RHEL-82799 valgrind: ld.so memcmp interceptor required on x86_64 - 0015-ppc-test_dfp2-build-fix-for-GCC-15.patch - 0016-syswrap-generic-Emit-pp_ExeContext-after-the-file-de.patch - 0017-add_hardwired_spec-for-ld-linux-x86-64.so.2-memcmp.patch - 0018-gdbserver_tests-filter-out-new-Missing-rpms-message.patch
This commit is contained in:
parent
4a9ebe2ce2
commit
a0a1fcbd2d
70
0015-ppc-test_dfp2-build-fix-for-GCC-15.patch
Normal file
70
0015-ppc-test_dfp2-build-fix-for-GCC-15.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From 9e4b5f1cc9f09f61fd3fb0e5687d0fc5ef39f15d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Wed, 15 Jan 2025 16:27:12 +0100
|
||||||
|
Subject: [PATCH] ppc test_dfp2 build fix for GCC 15
|
||||||
|
|
||||||
|
GCC 15 defaults to C23 which changes the meaning of unprototyped
|
||||||
|
functions, those declaring no arguments with (). Causing some errors:
|
||||||
|
|
||||||
|
test_dfp2.c:412:26: error: initialization of 'void (*)(void)' from incompatible pointer type 'void (*)(int)' [-Wincompatible-pointer-types]
|
||||||
|
412 | { &_test_dscri, "dscri", dfp_2args_x1, 20, LONG_TEST, ">>", True},
|
||||||
|
| ^
|
||||||
|
test_dfp2.c:412:26: note: (near initialization for 'dfp_two_arg_tests[0].test_func')
|
||||||
|
test_dfp2.c:110:13: note: '_test_dscri' declared here
|
||||||
|
110 | static void _test_dscri (int shift)
|
||||||
|
| ^~~~~~~~~~~
|
||||||
|
|
||||||
|
test_dfp2.c:664:17: error: assignment to 'test_func_t' {aka 'void (*)(void)'} from incompatible pointer type 'test_func_main_t' {aka 'void (*)(int)'} [-Wincompatible-pointer-types]
|
||||||
|
664 | while ((func = all_tests[i].test_category)) {
|
||||||
|
| ^
|
||||||
|
test_dfp2.c:237:16: note: 'test_func_t' declared here
|
||||||
|
237 | typedef void (*test_func_t)();
|
||||||
|
| ^~~~~~~~~~~
|
||||||
|
test_dfp2.c:238:16: note: 'test_func_main_t' declared here
|
||||||
|
238 | typedef void (*test_func_main_t)(int);
|
||||||
|
| ^~~~~~~~~~~~~~~~
|
||||||
|
test_dfp2.c:667:8: error: too many arguments to function 'func'; expected 0, have 1
|
||||||
|
667 | (*func)(has_vsx);
|
||||||
|
| ~^~~~~~ ~~~~~~~
|
||||||
|
|
||||||
|
Fix this by just explicitly compiling that code with -std=gnu99.
|
||||||
|
---
|
||||||
|
none/tests/ppc32/Makefile.am | 4 +++-
|
||||||
|
none/tests/ppc64/Makefile.am | 4 +++-
|
||||||
|
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/none/tests/ppc32/Makefile.am b/none/tests/ppc32/Makefile.am
|
||||||
|
index 187cab74f763..7727876fdf66 100644
|
||||||
|
--- a/none/tests/ppc32/Makefile.am
|
||||||
|
+++ b/none/tests/ppc32/Makefile.am
|
||||||
|
@@ -129,8 +129,10 @@ test_isa_2_06_part3_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(VSX_
|
||||||
|
|
||||||
|
test_dfp1_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
@FLAG_M32@ $(BUILD_FLAGS_DFP)
|
||||||
|
+# Explicitly use -std=gnu99 because the meaning of void (*test_func_t)()
|
||||||
|
+# changed in c23, causing incompatible-pointer-types errors.
|
||||||
|
test_dfp2_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
- @FLAG_M32@ $(BUILD_FLAGS_DFP)
|
||||||
|
+ @FLAG_M32@ $(BUILD_FLAGS_DFP) -std=gnu99
|
||||||
|
test_dfp3_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
@FLAG_M32@ $(BUILD_FLAGS_DFP)
|
||||||
|
test_dfp4_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
diff --git a/none/tests/ppc64/Makefile.am b/none/tests/ppc64/Makefile.am
|
||||||
|
index f8eab9fc00b2..98a14b434bc4 100644
|
||||||
|
--- a/none/tests/ppc64/Makefile.am
|
||||||
|
+++ b/none/tests/ppc64/Makefile.am
|
||||||
|
@@ -190,8 +190,10 @@ test_isa_2_06_part3_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(VSX_
|
||||||
|
|
||||||
|
test_dfp1_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
@FLAG_M64@ $(BUILD_FLAGS_DFP)
|
||||||
|
+# Explicitly use -std=gnu99 because the meaning of void (*test_func_t)()
|
||||||
|
+# changed in c23, causing incompatible-pointer-types errors.
|
||||||
|
test_dfp2_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
- @FLAG_M64@ $(BUILD_FLAGS_DFP)
|
||||||
|
+ @FLAG_M64@ $(BUILD_FLAGS_DFP) -std=gnu99
|
||||||
|
test_dfp3_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
@FLAG_M64@ $(BUILD_FLAGS_DFP)
|
||||||
|
test_dfp4_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -g -mregnames $(DFP_FLAG) \
|
||||||
|
--
|
||||||
|
2.47.1
|
||||||
|
|
@ -0,0 +1,57 @@
|
|||||||
|
From ec7335142384ec9da66871036803b96319b590eb Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= <ahajkova@redhat.com>
|
||||||
|
Date: Mon, 3 Mar 2025 06:14:08 -0500
|
||||||
|
Subject: [PATCH 16/18] syswrap-generic: Emit pp_ExeContext after the file
|
||||||
|
descriptor backtrace
|
||||||
|
|
||||||
|
Adjust use_after_close test for the change.
|
||||||
|
|
||||||
|
(cherry picked from commit 838dc01d2c42f7f22785c771bd74bc4e595da444)
|
||||||
|
---
|
||||||
|
coregrind/m_syswrap/syswrap-generic.c | 2 +-
|
||||||
|
none/tests/use_after_close.stderr.exp | 4 ++--
|
||||||
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c
|
||||||
|
index 1d80d09288ed..5222bcefe11b 100644
|
||||||
|
--- a/coregrind/m_syswrap/syswrap-generic.c
|
||||||
|
+++ b/coregrind/m_syswrap/syswrap-generic.c
|
||||||
|
@@ -1179,6 +1179,7 @@ void fd_pp_Error (const Error *err)
|
||||||
|
}
|
||||||
|
VG_(emit)("%sFile descriptor %d %s%s\n", whatpre, nce->fd,
|
||||||
|
error_string, whatpost);
|
||||||
|
+ VG_(pp_ExeContext)(where);
|
||||||
|
/* If the file descriptor was never created we won't have
|
||||||
|
where_closed and where_opened. Only print them in a
|
||||||
|
use after close case. */
|
||||||
|
@@ -1190,7 +1191,6 @@ void fd_pp_Error (const Error *err)
|
||||||
|
VG_(emit)("%sOriginally opened%s\n", auxpre, auxpost);
|
||||||
|
VG_(pp_ExeContext)(nce->where_opened);
|
||||||
|
}
|
||||||
|
- VG_(pp_ExeContext)(where);
|
||||||
|
} else {
|
||||||
|
vg_assert2 (False, "Unknown error kind: %d",
|
||||||
|
VG_(get_error_kind)(err));
|
||||||
|
diff --git a/none/tests/use_after_close.stderr.exp b/none/tests/use_after_close.stderr.exp
|
||||||
|
index 1ef31c6551eb..75a8d6672949 100644
|
||||||
|
--- a/none/tests/use_after_close.stderr.exp
|
||||||
|
+++ b/none/tests/use_after_close.stderr.exp
|
||||||
|
@@ -1,13 +1,13 @@
|
||||||
|
bad
|
||||||
|
File descriptor 3 was closed already
|
||||||
|
+ at 0x........: write (in /...libc...)
|
||||||
|
+ by 0x........: main
|
||||||
|
Previously closed
|
||||||
|
at 0x........: close (in /...libc...)
|
||||||
|
by 0x........: main
|
||||||
|
Originally opened
|
||||||
|
at 0x........: dup (in /...libc...)
|
||||||
|
by 0x........: main
|
||||||
|
- at 0x........: write (in /...libc...)
|
||||||
|
- by 0x........: main
|
||||||
|
File descriptor 7 was never created
|
||||||
|
at 0x........: write (in /...libc...)
|
||||||
|
by 0x........: main
|
||||||
|
--
|
||||||
|
2.48.1
|
||||||
|
|
101
0017-add_hardwired_spec-for-ld-linux-x86-64.so.2-memcmp.patch
Normal file
101
0017-add_hardwired_spec-for-ld-linux-x86-64.so.2-memcmp.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
From 2c17a8a3e865816ee48e7f78148bbc7240c2a38c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Wed, 12 Mar 2025 13:57:19 +0100
|
||||||
|
Subject: [PATCH 17/18] add_hardwired_spec for ld-linux-x86-64.so.2 memcmp
|
||||||
|
|
||||||
|
With RPATH processing ld.so compiled for x86-64-v3 uses an optimized
|
||||||
|
avx2 memcmp (bcmp) which causes (false postive) memcheck invalid reads
|
||||||
|
of size 32 warnings.
|
||||||
|
|
||||||
|
Fix this my adding a hardwire spec with a simpler memcmp for
|
||||||
|
ld-linux-x86-64.so.2.
|
||||||
|
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=501348
|
||||||
|
|
||||||
|
Authored-by: Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
|
(cherry picked from commit 9ffdeb4927b8505cc5a9ea54f608f4972166bb0e)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
coregrind/m_redir.c | 9 +++++++++
|
||||||
|
coregrind/m_trampoline.S | 19 +++++++++++++++++++
|
||||||
|
coregrind/pub_core_trampoline.h | 1 +
|
||||||
|
4 files changed, 30 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 7f9e005c59f4..fe225c666c77 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -11,6 +11,7 @@ The following bugs have been fixed or resolved on this branch.
|
||||||
|
498317 FdBadUse is not a valid CoreError type in a suppression
|
||||||
|
even though it's generated by --gen-suppressions=yes
|
||||||
|
498143 False positive on EVIOCGRAB ioctl
|
||||||
|
+501348 glibc built with -march=x86-64-v3 does not work due to ld.so memcmp
|
||||||
|
|
||||||
|
To see details of a given bug, visit
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
||||||
|
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
|
||||||
|
index f9e8d8801a19..64ebea3b6304 100644
|
||||||
|
--- a/coregrind/m_redir.c
|
||||||
|
+++ b/coregrind/m_redir.c
|
||||||
|
@@ -1425,6 +1425,15 @@ void VG_(redir_initialise) ( void )
|
||||||
|
NULL
|
||||||
|
# else
|
||||||
|
complain_about_stripped_glibc_ldso
|
||||||
|
+# endif
|
||||||
|
+ );
|
||||||
|
+ add_hardwired_spec(
|
||||||
|
+ "ld-linux-x86-64.so.2", "memcmp",
|
||||||
|
+ (Addr)&VG_(amd64_linux_REDIR_FOR_memcmp),
|
||||||
|
+# ifndef GLIBC_MANDATORY_STRLEN_REDIRECT
|
||||||
|
+ NULL
|
||||||
|
+# else
|
||||||
|
+ complain_about_stripped_glibc_ldso
|
||||||
|
# endif
|
||||||
|
);
|
||||||
|
}
|
||||||
|
diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
|
||||||
|
index e897963be21a..27f1b35d2b08 100644
|
||||||
|
--- a/coregrind/m_trampoline.S
|
||||||
|
+++ b/coregrind/m_trampoline.S
|
||||||
|
@@ -241,6 +241,25 @@ VG_(amd64_linux_REDIR_FOR_strcmp):
|
||||||
|
ret
|
||||||
|
.size VG_(amd64_linux_REDIR_FOR_strcmp), .-VG_(amd64_linux_REDIR_FOR_strcmp)
|
||||||
|
|
||||||
|
+.global VG_(amd64_linux_REDIR_FOR_memcmp)
|
||||||
|
+.type VG_(amd64_linux_REDIR_FOR_memcmp), @function
|
||||||
|
+VG_(amd64_linux_REDIR_FOR_memcmp):
|
||||||
|
+ xorl %ecx, %ecx
|
||||||
|
+ jmp 2f
|
||||||
|
+1:
|
||||||
|
+ movzbl (%rdi, %rcx), %eax
|
||||||
|
+ movzbl (%rsi, %rcx), %r8d
|
||||||
|
+ addq $1, %rcx
|
||||||
|
+ subl %r8d, %eax
|
||||||
|
+ jne 3f
|
||||||
|
+2:
|
||||||
|
+ cmpq %rcx, %rdx
|
||||||
|
+ jne 1b
|
||||||
|
+ xorl %eax, %eax
|
||||||
|
+3:
|
||||||
|
+ ret
|
||||||
|
+.size VG_(amd64_linux_REDIR_FOR_memcmp), .-VG_(amd64_linux_REDIR_FOR_memcmp)
|
||||||
|
+
|
||||||
|
.global VG_(amd64_linux_REDIR_FOR_index)
|
||||||
|
.type VG_(amd64_linux_REDIR_FOR_index), @function
|
||||||
|
VG_(amd64_linux_REDIR_FOR_index):
|
||||||
|
diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h
|
||||||
|
index d0bd6b859742..3d2f7e9f32b7 100644
|
||||||
|
--- a/coregrind/pub_core_trampoline.h
|
||||||
|
+++ b/coregrind/pub_core_trampoline.h
|
||||||
|
@@ -82,6 +82,7 @@ extern Addr VG_(amd64_linux_REDIR_FOR_vtime);
|
||||||
|
extern Addr VG_(amd64_linux_REDIR_FOR_vgetcpu);
|
||||||
|
extern UInt VG_(amd64_linux_REDIR_FOR_strlen)( void* );
|
||||||
|
extern Int VG_(amd64_linux_REDIR_FOR_strcmp)( void*, void* );
|
||||||
|
+extern Int VG_(amd64_linux_REDIR_FOR_memcmp)( void*, void*, SizeT );
|
||||||
|
extern Char* VG_(amd64_linux_REDIR_FOR_index) ( const Char*, Int );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--
|
||||||
|
2.48.1
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From 7b2806871f15977db3a64a59f70d48f55ba3228e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Thu, 16 Jan 2025 17:30:37 +0100
|
||||||
|
Subject: [PATCH 18/18] gdbserver_tests: filter out new Missing rpms message
|
||||||
|
|
||||||
|
As seen on the fedora 40 s390x tester. GDB now might output something
|
||||||
|
like:
|
||||||
|
|
||||||
|
Missing rpms, try: dnf --enablerepo='*debug*' install glibc-debuginfo-2.39-33.fc40.s390x
|
||||||
|
|
||||||
|
Filter those messages out to get zero fail test results again.
|
||||||
|
|
||||||
|
(cherry picked from commit 090f8ce59b5f3d3ec39e032ee5e9524ce4f51a44)
|
||||||
|
---
|
||||||
|
gdbserver_tests/filter_gdb.in | 1 +
|
||||||
|
gdbserver_tests/filter_memcheck_monitor.in | 1 +
|
||||||
|
2 files changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/gdbserver_tests/filter_gdb.in b/gdbserver_tests/filter_gdb.in
|
||||||
|
index 094ea933ec51..2bef9f3ee57b 100755
|
||||||
|
--- a/gdbserver_tests/filter_gdb.in
|
||||||
|
+++ b/gdbserver_tests/filter_gdb.in
|
||||||
|
@@ -265,6 +265,7 @@ s/^0x........ in \(\w\+ (\)/\1/
|
||||||
|
|
||||||
|
# delete any missing debuginfo messages
|
||||||
|
/^Missing debuginfo.*/d
|
||||||
|
+/^Missing rpms.*/d
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
diff --git a/gdbserver_tests/filter_memcheck_monitor.in b/gdbserver_tests/filter_memcheck_monitor.in
|
||||||
|
index 6e8a49a303ba..e407e7b92158 100755
|
||||||
|
--- a/gdbserver_tests/filter_memcheck_monitor.in
|
||||||
|
+++ b/gdbserver_tests/filter_memcheck_monitor.in
|
||||||
|
@@ -31,6 +31,7 @@ $dir/filter_vgdb |
|
||||||
|
$SED -e '/Cannot access memory at address 0x......../d' \
|
||||||
|
-e '/^[1-9][0-9]* \.\.\/sysdeps\/powerpc\/powerpc32\/dl-start\.S: No such file or directory\./d' \
|
||||||
|
-e '/^Missing separate debuginfo/d' \
|
||||||
|
+ -e '/^Missing rpms/d' \
|
||||||
|
-e '/^Try: zypper install -C/d' \
|
||||||
|
-e 's/Test 3: FAIL: expected si_code==2, not 128/Test 3: PASS/' \
|
||||||
|
-e 's/in use at exit: [0-9][0-9,]* bytes in [0-9][0-9]* blocks/in use at exit: ... bytes in ... blocks/' \
|
||||||
|
--
|
||||||
|
2.48.1
|
||||||
|
|
@ -3,7 +3,7 @@
|
|||||||
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.24.0
|
Version: 3.24.0
|
||||||
Release: 4%{?dist}
|
Release: 6%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
|
|
||||||
# This ignores licenses that are only found in the test or perf sources
|
# This ignores licenses that are only found in the test or perf sources
|
||||||
@ -100,6 +100,11 @@ Patch15: 0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch
|
|||||||
Patch16: 0012-Recognize-new-DWARF5-DW_LANG-constants.patch
|
Patch16: 0012-Recognize-new-DWARF5-DW_LANG-constants.patch
|
||||||
Patch17: 0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch
|
Patch17: 0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch
|
||||||
Patch18: 0014-linux-support-EVIOCGRAB-ioctl.patch
|
Patch18: 0014-linux-support-EVIOCGRAB-ioctl.patch
|
||||||
|
Patch19: 0015-ppc-test_dfp2-build-fix-for-GCC-15.patch
|
||||||
|
Patch20: 0016-syswrap-generic-Emit-pp_ExeContext-after-the-file-de.patch
|
||||||
|
Patch21: 0017-add_hardwired_spec-for-ld-linux-x86-64.so.2-memcmp.patch
|
||||||
|
Patch22: 0018-gdbserver_tests-filter-out-new-Missing-rpms-message.patch
|
||||||
|
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: glibc-devel
|
BuildRequires: glibc-devel
|
||||||
@ -290,6 +295,10 @@ Valgrind User Manual for details.
|
|||||||
%patch -P16 -p1
|
%patch -P16 -p1
|
||||||
%patch -P17 -p1
|
%patch -P17 -p1
|
||||||
%patch -P18 -p1
|
%patch -P18 -p1
|
||||||
|
%patch -P19 -p1
|
||||||
|
%patch -P20 -p1
|
||||||
|
%patch -P21 -p1
|
||||||
|
%patch -P22 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# LTO triggers undefined symbols in valgrind. But valgrind has a
|
# LTO triggers undefined symbols in valgrind. But valgrind has a
|
||||||
@ -529,6 +538,13 @@ echo ===============END TESTING===============
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Mar 18 2025 Mark Wielaard <mjw@redhat.com> - 3.24.0-6
|
||||||
|
- More VALGRIND_3_24_BRANCH patches
|
||||||
|
0015-ppc-test_dfp2-build-fix-for-GCC-15.patch
|
||||||
|
0016-syswrap-generic-Emit-pp_ExeContext-after-the-file-de.patch
|
||||||
|
0017-add_hardwired_spec-for-ld-linux-x86-64.so.2-memcmp.patch
|
||||||
|
0018-gdbserver_tests-filter-out-new-Missing-rpms-message.patch
|
||||||
|
|
||||||
* Wed Feb 26 2025 Mark Wielaard <mjw@redhat.com> - 3.24.0-4
|
* Wed Feb 26 2025 Mark Wielaard <mjw@redhat.com> - 3.24.0-4
|
||||||
- Split main valgrind package into several subpackages:
|
- Split main valgrind package into several subpackages:
|
||||||
- valgrind now contains just the core tools.
|
- valgrind now contains just the core tools.
|
||||||
|
Loading…
Reference in New Issue
Block a user