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