sys/ptrace.h: add PTRACE_GET_RSEQ_CONFIGURATION from linux v5.13
[musl] / include / sys / ptrace.h
index d7e8c76..c72e3c0 100644 (file)
@@ -4,6 +4,8 @@
 extern "C" {
 #endif
 
+#include <stdint.h>
+
 #define PTRACE_TRACEME 0
 #define PT_TRACE_ME PTRACE_TRACEME
 
@@ -29,6 +31,18 @@ extern "C" {
 #define PTRACE_GETEVENTMSG 0x4201
 #define PTRACE_GETSIGINFO 0x4202
 #define PTRACE_SETSIGINFO 0x4203
+#define PTRACE_GETREGSET 0x4204
+#define PTRACE_SETREGSET 0x4205
+#define PTRACE_SEIZE 0x4206
+#define PTRACE_INTERRUPT 0x4207
+#define PTRACE_LISTEN 0x4208
+#define PTRACE_PEEKSIGINFO 0x4209
+#define PTRACE_GETSIGMASK 0x420a
+#define PTRACE_SETSIGMASK 0x420b
+#define PTRACE_SECCOMP_GET_FILTER 0x420c
+#define PTRACE_SECCOMP_GET_METADATA 0x420d
+#define PTRACE_GET_SYSCALL_INFO 0x420e
+#define PTRACE_GET_RSEQ_CONFIGURATION  0x420f
 
 #define PT_READ_I PTRACE_PEEKTEXT
 #define PT_READ_D PTRACE_PEEKDATA
@@ -60,7 +74,10 @@ extern "C" {
 #define PTRACE_O_TRACEEXEC      0x00000010
 #define PTRACE_O_TRACEVFORKDONE 0x00000020
 #define PTRACE_O_TRACEEXIT      0x00000040
-#define PTRACE_O_MASK           0x0000007f
+#define PTRACE_O_TRACESECCOMP   0x00000080
+#define PTRACE_O_EXITKILL       0x00100000
+#define PTRACE_O_SUSPEND_SECCOMP 0x00200000
+#define PTRACE_O_MASK           0x003000ff
 
 #define PTRACE_EVENT_FORK 1
 #define PTRACE_EVENT_VFORK 2
@@ -68,6 +85,59 @@ extern "C" {
 #define PTRACE_EVENT_EXEC 4
 #define PTRACE_EVENT_VFORK_DONE 5
 #define PTRACE_EVENT_EXIT 6
+#define PTRACE_EVENT_SECCOMP 7
+#define PTRACE_EVENT_STOP 128
+
+#define PTRACE_PEEKSIGINFO_SHARED 1
+
+#define PTRACE_SYSCALL_INFO_NONE 0
+#define PTRACE_SYSCALL_INFO_ENTRY 1
+#define PTRACE_SYSCALL_INFO_EXIT 2
+#define PTRACE_SYSCALL_INFO_SECCOMP 3
+
+#include <bits/ptrace.h>
+
+struct __ptrace_peeksiginfo_args {
+       uint64_t off;
+       uint32_t flags;
+       int32_t nr;
+};
+
+struct __ptrace_seccomp_metadata {
+       uint64_t filter_off;
+       uint64_t flags;
+};
+
+struct __ptrace_syscall_info {
+       uint8_t op;
+       uint8_t __pad[3];
+       uint32_t arch;
+       uint64_t instruction_pointer;
+       uint64_t stack_pointer;
+       union {
+               struct {
+                       uint64_t nr;
+                       uint64_t args[6];
+               } entry;
+               struct {
+                       int64_t rval;
+                       uint8_t is_error;
+               } exit;
+               struct {
+                       uint64_t nr;
+                       uint64_t args[6];
+                       uint32_t ret_data;
+               } seccomp;
+       };
+};
+
+struct __ptrace_rseq_configuration {
+       uint64_t rseq_abi_pointer;
+       uint32_t rseq_abi_size;
+       uint32_t signature;
+       uint32_t flags;
+       uint32_t pad;
+};
 
 long ptrace(int, ...);