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