blob: c72e3c061c3bb9ea7154efdcc9ab7ec83d940c51 [file] [log] [blame]
Colin Cross07a58322022-02-08 19:45:27 -08001#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
Jordan Demeulenaere2d505822022-08-11 17:20:14 +020045#define PTRACE_GET_RSEQ_CONFIGURATION 0x420f
Colin Cross07a58322022-02-08 19:45:27 -080046
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
Jordan Demeulenaere2d505822022-08-11 17:20:14 +0200134struct __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
Colin Cross07a58322022-02-08 19:45:27 -0800142long ptrace(int, ...);
143
144#ifdef __cplusplus
145}
146#endif
147#endif