ptrace.h raw

   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