Add valgrind-3.18.1-rseq-enosys.patch
Resolves: #2030872 valgrind: Please handle the rseq system call
This commit is contained in:
parent
9fda78d69c
commit
691f76201b
180
valgrind-3.18.1-rseq-enosys.patch
Normal file
180
valgrind-3.18.1-rseq-enosys.patch
Normal file
@ -0,0 +1,180 @@
|
||||
commit 67e7b20eb256baec225b3d7df1f03d731bf5e939
|
||||
Author: Mark Wielaard <mark@klomp.org>
|
||||
Date: Fri Dec 10 17:41:59 2021 +0100
|
||||
|
||||
Implement linux rseq syscall as ENOSYS
|
||||
|
||||
This implements rseq for amd64, arm, arm64, ppc32, ppc64,
|
||||
s390x and x86 linux as ENOSYS (without warning).
|
||||
|
||||
glibc will start using rseq to accelerate sched_getcpu, if
|
||||
available. This would cause a warning from valgrind every
|
||||
time a new thread is started.
|
||||
|
||||
Real rseq (restartable sequences) support is pretty hard, so
|
||||
for now just explicitly return ENOSYS (just like we do for clone3).
|
||||
|
||||
https://sourceware.org/pipermail/libc-alpha/2021-December/133656.html
|
||||
|
||||
diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c
|
||||
index 5062324a1..18b25f80a 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-amd64-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c
|
||||
@@ -862,6 +862,8 @@ static SyscallTableEntry syscall_table[] = {
|
||||
|
||||
LINXY(__NR_statx, sys_statx), // 332
|
||||
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 334
|
||||
+
|
||||
LINX_(__NR_membarrier, sys_membarrier), // 324
|
||||
|
||||
LINX_(__NR_copy_file_range, sys_copy_file_range), // 326
|
||||
diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c
|
||||
index 556dd844b..d583cef0c 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-arm-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-arm-linux.c
|
||||
@@ -1024,6 +1024,7 @@ static SyscallTableEntry syscall_main_table[] = {
|
||||
LINX_(__NR_pwritev2, sys_pwritev2), // 393
|
||||
|
||||
LINXY(__NR_statx, sys_statx), // 397
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 398
|
||||
|
||||
LINXY(__NR_clock_gettime64, sys_clock_gettime64), // 403
|
||||
LINX_(__NR_clock_settime64, sys_clock_settime64), // 404
|
||||
diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c
|
||||
index b87107727..2066a38ea 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-arm64-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c
|
||||
@@ -823,8 +823,9 @@ static SyscallTableEntry syscall_main_table[] = {
|
||||
// (__NR_pkey_mprotect, sys_ni_syscall), // 288
|
||||
// (__NR_pkey_alloc, sys_ni_syscall), // 289
|
||||
// (__NR_pkey_free, sys_ni_syscall), // 290
|
||||
+ LINXY(__NR_statx, sys_statx), // 291
|
||||
|
||||
- LINXY(__NR_statx, sys_statx), // 397
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 293
|
||||
|
||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
||||
diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
||||
index 6263ab845..637b2504e 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
||||
@@ -1028,6 +1028,8 @@ static SyscallTableEntry syscall_table[] = {
|
||||
|
||||
LINXY(__NR_statx, sys_statx), // 383
|
||||
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 387
|
||||
+
|
||||
LINXY(__NR_clock_gettime64, sys_clock_gettime64), // 403
|
||||
LINX_(__NR_clock_settime64, sys_clock_settime64), // 404
|
||||
|
||||
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||
index a26b41c32..93956d3cc 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||
@@ -1019,6 +1019,8 @@ static SyscallTableEntry syscall_table[] = {
|
||||
|
||||
LINXY(__NR_statx, sys_statx), // 383
|
||||
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 387
|
||||
+
|
||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
||||
diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
|
||||
index 5c9209859..73f9684c4 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
|
||||
@@ -860,6 +860,8 @@ static SyscallTableEntry syscall_table[] = {
|
||||
|
||||
LINXY(__NR_statx, sys_statx), // 379
|
||||
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 381
|
||||
+
|
||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
||||
diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c
|
||||
index 1d8f45d33..8662ff501 100644
|
||||
--- a/coregrind/m_syswrap/syswrap-x86-linux.c
|
||||
+++ b/coregrind/m_syswrap/syswrap-x86-linux.c
|
||||
@@ -1619,6 +1619,8 @@ static SyscallTableEntry syscall_table[] = {
|
||||
/* Explicitly not supported on i386 yet. */
|
||||
GENX_(__NR_arch_prctl, sys_ni_syscall), // 384
|
||||
|
||||
+ GENX_(__NR_rseq, sys_ni_syscall), // 386
|
||||
+
|
||||
LINXY(__NR_clock_gettime64, sys_clock_gettime64), // 403
|
||||
LINX_(__NR_clock_settime64, sys_clock_settime64), // 404
|
||||
|
||||
diff --git a/include/vki/vki-scnums-arm-linux.h b/include/vki/vki-scnums-arm-linux.h
|
||||
index ff560e19d..485db8b26 100644
|
||||
--- a/include/vki/vki-scnums-arm-linux.h
|
||||
+++ b/include/vki/vki-scnums-arm-linux.h
|
||||
@@ -432,6 +432,7 @@
|
||||
#define __NR_pkey_alloc 395
|
||||
#define __NR_pkey_free 396
|
||||
#define __NR_statx 397
|
||||
+#define __NR_rseq 398
|
||||
|
||||
|
||||
|
||||
diff --git a/include/vki/vki-scnums-arm64-linux.h b/include/vki/vki-scnums-arm64-linux.h
|
||||
index 9aa3b2b5f..acdfb39c6 100644
|
||||
--- a/include/vki/vki-scnums-arm64-linux.h
|
||||
+++ b/include/vki/vki-scnums-arm64-linux.h
|
||||
@@ -323,9 +323,11 @@
|
||||
#define __NR_pkey_alloc 289
|
||||
#define __NR_pkey_free 290
|
||||
#define __NR_statx 291
|
||||
+#define __NR_io_pgetevents 291
|
||||
+#define __NR_rseq 293
|
||||
|
||||
#undef __NR_syscalls
|
||||
-#define __NR_syscalls 292
|
||||
+#define __NR_syscalls 294
|
||||
|
||||
///*
|
||||
// * All syscalls below here should go away really,
|
||||
diff --git a/include/vki/vki-scnums-ppc32-linux.h b/include/vki/vki-scnums-ppc32-linux.h
|
||||
index 6987ad941..08fa77df0 100644
|
||||
--- a/include/vki/vki-scnums-ppc32-linux.h
|
||||
+++ b/include/vki/vki-scnums-ppc32-linux.h
|
||||
@@ -415,6 +415,7 @@
|
||||
#define __NR_pkey_alloc 384
|
||||
#define __NR_pkey_free 385
|
||||
#define __NR_pkey_mprotect 386
|
||||
+#define __NR_rseq 387
|
||||
|
||||
#endif /* __VKI_SCNUMS_PPC32_LINUX_H */
|
||||
|
||||
diff --git a/include/vki/vki-scnums-ppc64-linux.h b/include/vki/vki-scnums-ppc64-linux.h
|
||||
index 6827964fd..a76fa6d32 100644
|
||||
--- a/include/vki/vki-scnums-ppc64-linux.h
|
||||
+++ b/include/vki/vki-scnums-ppc64-linux.h
|
||||
@@ -407,6 +407,7 @@
|
||||
#define __NR_pkey_alloc 384
|
||||
#define __NR_pkey_free 385
|
||||
#define __NR_pkey_mprotect 386
|
||||
+#define __NR_rseq 387
|
||||
|
||||
#endif /* __VKI_SCNUMS_PPC64_LINUX_H */
|
||||
|
||||
diff --git a/include/vki/vki-scnums-s390x-linux.h b/include/vki/vki-scnums-s390x-linux.h
|
||||
index 6487e20c9..869c04584 100644
|
||||
--- a/include/vki/vki-scnums-s390x-linux.h
|
||||
+++ b/include/vki/vki-scnums-s390x-linux.h
|
||||
@@ -342,8 +342,11 @@
|
||||
#define __NR_s390_guarded_storage 378
|
||||
#define __NR_statx 379
|
||||
#define __NR_s390_sthyi 380
|
||||
+#define __NR_kexec_file_load 381
|
||||
+#define __NR_io_pgetevents 382
|
||||
+#define __NR_rseq 383
|
||||
|
||||
-#define NR_syscalls 381
|
||||
+#define NR_syscalls 384
|
||||
|
||||
/*
|
||||
* There are some system calls that are not present on 64 bit, some
|
@ -128,6 +128,9 @@ Patch17: valgrind-3.18.1-condvar.patch
|
||||
# KDE#445668 Inline stack frame generation is broken for Rust binaries
|
||||
Patch18: valgrind-3.18.1-demangle-namespace.patch
|
||||
|
||||
# KDE#405377 Handle new Linux kernel feature: Restartable Sequences ("rseq")
|
||||
Patch19: valgrind-3.18.1-rseq-enosys.patch
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: glibc-devel
|
||||
|
||||
@ -278,6 +281,7 @@ Valgrind User Manual for details.
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
|
||||
%build
|
||||
# LTO triggers undefined symbols in valgrind. Valgrind has a --enable-lto
|
||||
@ -507,6 +511,9 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Dec 14 2021 Mark Wielaard <mjw@redhat.com>
|
||||
- Add valgrind-3.18.1-rseq-enosys.patch
|
||||
|
||||
* Wed Nov 24 2021 Mark Wielaard <mjw@redhat.com> - 3.18.1-5
|
||||
- Add valgrind-3.18.1-dhat-tests-copy.patch
|
||||
- Add valgrind-3.18.1-s390x-EXRL.patch
|
||||
|
Loading…
Reference in New Issue
Block a user