summaryrefslogtreecommitdiff
path: root/Add-PTRACE_GET_RSEQ_CONFIGURATION-from-Linux-5.13-to.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Add-PTRACE_GET_RSEQ_CONFIGURATION-from-Linux-5.13-to.patch')
-rw-r--r--Add-PTRACE_GET_RSEQ_CONFIGURATION-from-Linux-5.13-to.patch216
1 files changed, 216 insertions, 0 deletions
diff --git a/Add-PTRACE_GET_RSEQ_CONFIGURATION-from-Linux-5.13-to.patch b/Add-PTRACE_GET_RSEQ_CONFIGURATION-from-Linux-5.13-to.patch
new file mode 100644
index 0000000..a11a56e
--- /dev/null
+++ b/Add-PTRACE_GET_RSEQ_CONFIGURATION-from-Linux-5.13-to.patch
@@ -0,0 +1,216 @@
+From 98149b16d645e9644a8e9b3d1f4b7932b9b193c5 Mon Sep 17 00:00:00 2001
+From: Joseph Myers <joseph@codesourcery.com>
+Date: Mon, 9 Aug 2021 16:51:38 +0000
+Subject: [PATCH] Add PTRACE_GET_RSEQ_CONFIGURATION from Linux 5.13 to
+ sys/ptrace.h
+
+Linux 5.13 adds a PTRACE_GET_RSEQ_CONFIGURATION constant, with an
+associated ptrace_rseq_configuration structure.
+
+Add this constant to the various sys/ptrace.h headers in glibc, with
+the structure in bits/ptrace-shared.h (named struct
+__ptrace_rseq_configuration in glibc, as with other such structures).
+
+Tested for x86_64, and with build-many-glibcs.py.
+
+---
+ sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h | 7 ++++++-
+ sysdeps/unix/sysv/linux/arm/sys/ptrace.h | 6 +++++-
+ sysdeps/unix/sysv/linux/bits/ptrace-shared.h | 10 ++++++++++
+ sysdeps/unix/sysv/linux/ia64/sys/ptrace.h | 6 +++++-
+ sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h | 7 ++++++-
+ sysdeps/unix/sysv/linux/s390/sys/ptrace.h | 5 +++++
+ sysdeps/unix/sysv/linux/sparc/sys/ptrace.h | 6 +++++-
+ sysdeps/unix/sysv/linux/sys/ptrace.h | 6 +++++-
+ sysdeps/unix/sysv/linux/x86/sys/ptrace.h | 6 +++++-
+ 9 files changed, 52 insertions(+), 7 deletions(-)
+
+diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
+index af8193cbe7b2..1fae1dce9c6a 100644
+--- a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
+@@ -58,6 +58,7 @@ __BEGIN_DECLS
+ #undef PTRACE_SECCOMP_GET_FILTER
+ #undef PTRACE_SECCOMP_GET_METADATA
+ #undef PTRACE_GET_SYSCALL_INFO
++#undef PTRACE_GET_RSEQ_CONFIGURATION
+
+ /* Type of the REQUEST argument to `ptrace.' */
+ enum __ptrace_request
+@@ -190,8 +191,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+diff --git a/sysdeps/unix/sysv/linux/arm/sys/ptrace.h b/sysdeps/unix/sysv/linux/arm/sys/ptrace.h
+index cdb1f159a7c1..2e3843664855 100644
+--- a/sysdeps/unix/sysv/linux/arm/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/arm/sys/ptrace.h
+@@ -200,8 +200,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+diff --git a/sysdeps/unix/sysv/linux/bits/ptrace-shared.h b/sysdeps/unix/sysv/linux/bits/ptrace-shared.h
+index 7d40634da55e..7e95ca7082e9 100644
+--- a/sysdeps/unix/sysv/linux/bits/ptrace-shared.h
++++ b/sysdeps/unix/sysv/linux/bits/ptrace-shared.h
+@@ -120,6 +120,16 @@ struct __ptrace_syscall_info
+ };
+ };
+
++/* Results of PTRACE_GET_RSEQ_CONFIGURATION. */
++struct __ptrace_rseq_configuration
++{
++ __uint64_t rseq_abi_pointer;
++ __uint32_t rseq_abi_size;
++ __uint32_t signature;
++ __uint32_t flags;
++ __uint32_t pad;
++};
++
+ /* Perform process tracing functions. REQUEST is one of the values
+ above, and determines the action to be taken.
+ For all requests except PTRACE_TRACEME, PID specifies the process to be
+diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
+index bea975bb9e3d..536a0cafbd1b 100644
+--- a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
+@@ -153,8 +153,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
+index 032c91e81791..fb599af6da64 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
+@@ -36,6 +36,7 @@ __BEGIN_DECLS
+ # undef PTRACE_GETREGS
+ # undef PTRACE_GETREGS64
+ # undef PTRACE_GETREGSET
++# undef PTRACE_GET_RSEQ_CONFIGURATION
+ # undef PTRACE_GETSIGINFO
+ # undef PTRACE_GETSIGMASK
+ # undef PTRACE_GET_SYSCALL_INFO
+@@ -260,8 +261,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+diff --git a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h
+index 4f3c65726f61..3ddd2e426789 100644
+--- a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h
+@@ -86,6 +86,7 @@ __BEGIN_DECLS
+ # undef PTRACE_SYSCALL_INFO_ENTRY
+ # undef PTRACE_SYSCALL_INFO_EXIT
+ # undef PTRACE_SYSCALL_INFO_SECCOMP
++# undef PTRACE_GET_RSEQ_CONFIGURATION
+ #endif
+ /* Type of the REQUEST argument to `ptrace.' */
+ enum __ptrace_request
+@@ -217,6 +218,10 @@ enum __ptrace_request
+ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
+
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f,
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
++
+ PTRACE_PEEKUSR_AREA = 0x5000,
+ #define PTRACE_PEEKUSR_AREA PTRACE_PEEKUSR_AREA
+
+diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
+index 3f6150028487..773b4379249c 100644
+--- a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
+@@ -221,8 +221,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+diff --git a/sysdeps/unix/sysv/linux/sys/ptrace.h b/sysdeps/unix/sysv/linux/sys/ptrace.h
+index dc76e97ea72a..404fc3ddb7b5 100644
+--- a/sysdeps/unix/sysv/linux/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/sys/ptrace.h
+@@ -170,8 +170,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+diff --git a/sysdeps/unix/sysv/linux/x86/sys/ptrace.h b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h
+index 8501cc22ed7b..7202a09eefd3 100644
+--- a/sysdeps/unix/sysv/linux/x86/sys/ptrace.h
++++ b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h
+@@ -190,8 +190,12 @@ enum __ptrace_request
+ #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
+ /* Get information about system call. */
+- PTRACE_GET_SYSCALL_INFO = 0x420e
++ PTRACE_GET_SYSCALL_INFO = 0x420e,
+ #define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
++
++ /* Get rseq configuration information. */
++ PTRACE_GET_RSEQ_CONFIGURATION = 0x420f
++#define PTRACE_GET_RSEQ_CONFIGURATION PTRACE_GET_RSEQ_CONFIGURATION
+ };
+
+
+--
+2.27.0
+