Submitted By:            Douglas R. Reno <renodr at linuxfromscratch dot org>
Date:                    2022-02-17
Initial Package Version: 3.18.1
Upstream Status:         Applied
Origin:                  Upstream (commit 1024237358f01009fe233cb1294f3b8211304eaa)
Description:             Fixes an issue with glibc-2.35 where Valgrind will
                         almost instantly crash, or expel a warning (on i686),
                         due to the __NR_rseq system call being added to glibc.

diff -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-amd64-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-amd64-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-amd64-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-amd64-linux.c	2022-02-17 09:22:32.878781590 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-arm64-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-arm64-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-arm64-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-arm64-linux.c	2022-02-17 09:23:43.227402459 -0600
@@ -823,8 +823,9 @@ static SyscallTableEntry syscall_main_ta
    //   (__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 -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-arm-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-arm-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-arm-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-arm-linux.c	2022-02-17 09:22:55.112676755 -0600
@@ -1024,6 +1024,7 @@ static SyscallTableEntry syscall_main_ta
    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 -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-ppc32-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-ppc32-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-ppc32-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-ppc32-linux.c	2022-02-17 09:24:11.678200990 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-ppc64-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-ppc64-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-ppc64-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-ppc64-linux.c	2022-02-17 09:24:32.408056372 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-s390x-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-s390x-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-s390x-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-s390x-linux.c	2022-02-17 09:24:58.691875554 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-x86-linux.c valgrind-3.18.1/coregrind/m_syswrap/syswrap-x86-linux.c
--- valgrind-3.18.1.orig/coregrind/m_syswrap/syswrap-x86-linux.c	2021-10-12 16:58:44.000000000 -0500
+++ valgrind-3.18.1/coregrind/m_syswrap/syswrap-x86-linux.c	2022-02-17 09:25:26.394687910 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/include/vki/vki-scnums-arm64-linux.h valgrind-3.18.1/include/vki/vki-scnums-arm64-linux.h
--- valgrind-3.18.1.orig/include/vki/vki-scnums-arm64-linux.h	2021-01-21 09:09:33.000000000 -0600
+++ valgrind-3.18.1/include/vki/vki-scnums-arm64-linux.h	2022-02-17 09:26:33.338245908 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/include/vki/vki-scnums-arm-linux.h valgrind-3.18.1/include/vki/vki-scnums-arm-linux.h
--- valgrind-3.18.1.orig/include/vki/vki-scnums-arm-linux.h	2021-01-21 09:09:33.000000000 -0600
+++ valgrind-3.18.1/include/vki/vki-scnums-arm-linux.h	2022-02-17 09:25:53.573506575 -0600
@@ -432,7 +432,7 @@
 #define __NR_pkey_alloc                 395
 #define __NR_pkey_free                  396
 #define __NR_statx                      397
-
+#define __NR_rseq                       398
 
 
 #define __NR_ARM_BASE                   (0x0f0000)
diff -Naurp valgrind-3.18.1.orig/include/vki/vki-scnums-ppc32-linux.h valgrind-3.18.1/include/vki/vki-scnums-ppc32-linux.h
--- valgrind-3.18.1.orig/include/vki/vki-scnums-ppc32-linux.h	2021-01-21 09:09:33.000000000 -0600
+++ valgrind-3.18.1/include/vki/vki-scnums-ppc32-linux.h	2022-02-17 09:27:00.645069919 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/include/vki/vki-scnums-ppc64-linux.h valgrind-3.18.1/include/vki/vki-scnums-ppc64-linux.h
--- valgrind-3.18.1.orig/include/vki/vki-scnums-ppc64-linux.h	2021-01-21 09:09:33.000000000 -0600
+++ valgrind-3.18.1/include/vki/vki-scnums-ppc64-linux.h	2022-02-17 09:27:13.534987649 -0600
@@ -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 -Naurp valgrind-3.18.1.orig/include/vki/vki-scnums-s390x-linux.h valgrind-3.18.1/include/vki/vki-scnums-s390x-linux.h
--- valgrind-3.18.1.orig/include/vki/vki-scnums-s390x-linux.h	2021-01-21 09:09:33.000000000 -0600
+++ valgrind-3.18.1/include/vki/vki-scnums-s390x-linux.h	2022-02-17 09:28:01.735684326 -0600
@@ -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
