master
  1#ifndef _SYS_PTRACE_H
  2#define _SYS_PTRACE_H
  3#ifdef __cplusplus
  4extern "C" {
  5#endif
  6
  7#include <stdint.h>
  8
  9#define PTRACE_TRACEME 0
 10#define PT_TRACE_ME PTRACE_TRACEME
 11
 12#define PTRACE_PEEKTEXT 1
 13#define PTRACE_PEEKDATA 2
 14#define PTRACE_PEEKUSER 3
 15#define PTRACE_POKETEXT 4
 16#define PTRACE_POKEDATA 5
 17#define PTRACE_POKEUSER 6
 18#define PTRACE_CONT 7
 19#define PTRACE_KILL 8
 20#define PTRACE_SINGLESTEP 9
 21#define PTRACE_GETREGS 12
 22#define PTRACE_SETREGS 13
 23#define PTRACE_GETFPREGS 14
 24#define PTRACE_SETFPREGS 15
 25#define PTRACE_ATTACH 16
 26#define PTRACE_DETACH 17
 27#define PTRACE_GETFPXREGS 18
 28#define PTRACE_SETFPXREGS 19
 29#define PTRACE_SYSCALL 24
 30#define PTRACE_SETOPTIONS 0x4200
 31#define PTRACE_GETEVENTMSG 0x4201
 32#define PTRACE_GETSIGINFO 0x4202
 33#define PTRACE_SETSIGINFO 0x4203
 34#define PTRACE_GETREGSET 0x4204
 35#define PTRACE_SETREGSET 0x4205
 36#define PTRACE_SEIZE 0x4206
 37#define PTRACE_INTERRUPT 0x4207
 38#define PTRACE_LISTEN 0x4208
 39#define PTRACE_PEEKSIGINFO 0x4209
 40#define PTRACE_GETSIGMASK 0x420a
 41#define PTRACE_SETSIGMASK 0x420b
 42#define PTRACE_SECCOMP_GET_FILTER 0x420c
 43#define PTRACE_SECCOMP_GET_METADATA 0x420d
 44#define PTRACE_GET_SYSCALL_INFO 0x420e
 45#define PTRACE_GET_RSEQ_CONFIGURATION	0x420f
 46
 47#define PT_READ_I PTRACE_PEEKTEXT
 48#define PT_READ_D PTRACE_PEEKDATA
 49#define PT_READ_U PTRACE_PEEKUSER
 50#define PT_WRITE_I PTRACE_POKETEXT
 51#define PT_WRITE_D PTRACE_POKEDATA
 52#define PT_WRITE_U PTRACE_POKEUSER
 53#define PT_CONTINUE PTRACE_CONT
 54#define PT_KILL PTRACE_KILL
 55#define PT_STEP PTRACE_SINGLESTEP
 56#define PT_GETREGS PTRACE_GETREGS
 57#define PT_SETREGS PTRACE_SETREGS
 58#define PT_GETFPREGS PTRACE_GETFPREGS
 59#define PT_SETFPREGS PTRACE_SETFPREGS
 60#define PT_ATTACH PTRACE_ATTACH
 61#define PT_DETACH PTRACE_DETACH
 62#define PT_GETFPXREGS PTRACE_GETFPXREGS
 63#define PT_SETFPXREGS PTRACE_SETFPXREGS
 64#define PT_SYSCALL PTRACE_SYSCALL
 65#define PT_SETOPTIONS PTRACE_SETOPTIONS
 66#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
 67#define PT_GETSIGINFO PTRACE_GETSIGINFO
 68#define PT_SETSIGINFO PTRACE_SETSIGINFO
 69
 70#define PTRACE_O_TRACESYSGOOD   0x00000001
 71#define PTRACE_O_TRACEFORK      0x00000002
 72#define PTRACE_O_TRACEVFORK     0x00000004
 73#define PTRACE_O_TRACECLONE     0x00000008
 74#define PTRACE_O_TRACEEXEC      0x00000010
 75#define PTRACE_O_TRACEVFORKDONE 0x00000020
 76#define PTRACE_O_TRACEEXIT      0x00000040
 77#define PTRACE_O_TRACESECCOMP   0x00000080
 78#define PTRACE_O_EXITKILL       0x00100000
 79#define PTRACE_O_SUSPEND_SECCOMP 0x00200000
 80#define PTRACE_O_MASK           0x003000ff
 81
 82#define PTRACE_EVENT_FORK 1
 83#define PTRACE_EVENT_VFORK 2
 84#define PTRACE_EVENT_CLONE 3
 85#define PTRACE_EVENT_EXEC 4
 86#define PTRACE_EVENT_VFORK_DONE 5
 87#define PTRACE_EVENT_EXIT 6
 88#define PTRACE_EVENT_SECCOMP 7
 89#define PTRACE_EVENT_STOP 128
 90
 91#define PTRACE_PEEKSIGINFO_SHARED 1
 92
 93#define PTRACE_SYSCALL_INFO_NONE 0
 94#define PTRACE_SYSCALL_INFO_ENTRY 1
 95#define PTRACE_SYSCALL_INFO_EXIT 2
 96#define PTRACE_SYSCALL_INFO_SECCOMP 3
 97
 98#include <bits/ptrace.h>
 99
100struct __ptrace_peeksiginfo_args {
101	uint64_t off;
102	uint32_t flags;
103	int32_t nr;
104};
105
106struct __ptrace_seccomp_metadata {
107	uint64_t filter_off;
108	uint64_t flags;
109};
110
111struct __ptrace_syscall_info {
112	uint8_t op;
113	uint8_t __pad[3];
114	uint32_t arch;
115	uint64_t instruction_pointer;
116	uint64_t stack_pointer;
117	union {
118		struct {
119			uint64_t nr;
120			uint64_t args[6];
121		} entry;
122		struct {
123			int64_t rval;
124			uint8_t is_error;
125		} exit;
126		struct {
127			uint64_t nr;
128			uint64_t args[6];
129			uint32_t ret_data;
130		} seccomp;
131	};
132};
133
134struct __ptrace_rseq_configuration {
135	uint64_t rseq_abi_pointer;
136	uint32_t rseq_abi_size;
137	uint32_t signature;
138	uint32_t flags;
139	uint32_t pad;
140};
141
142long ptrace(int, ...);
143
144#ifdef __cplusplus
145}
146#endif
147#endif