diff options
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.patch | 216 |
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 + |