• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _SYS_PTRACE_H
2 #define _SYS_PTRACE_H
3 #ifdef __cplusplus
4 extern "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 
100 struct __ptrace_peeksiginfo_args {
101 	uint64_t off;
102 	uint32_t flags;
103 	int32_t nr;
104 };
105 
106 struct __ptrace_seccomp_metadata {
107 	uint64_t filter_off;
108 	uint64_t flags;
109 };
110 
111 struct __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 
134 struct __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 
142 long ptrace(int, ...);
143 
144 #ifdef __cplusplus
145 }
146 #endif
147 #endif
148