cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ptrace.h (4411B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2#ifndef _UAPI_LINUX_PTRACE_H
      3#define _UAPI_LINUX_PTRACE_H
      4/* ptrace.h */
      5/* structs and defines to help the user use the ptrace system call. */
      6
      7/* has the defines to get at the registers. */
      8
      9#include <linux/types.h>
     10
     11#define PTRACE_TRACEME		   0
     12#define PTRACE_PEEKTEXT		   1
     13#define PTRACE_PEEKDATA		   2
     14#define PTRACE_PEEKUSR		   3
     15#define PTRACE_POKETEXT		   4
     16#define PTRACE_POKEDATA		   5
     17#define PTRACE_POKEUSR		   6
     18#define PTRACE_CONT		   7
     19#define PTRACE_KILL		   8
     20#define PTRACE_SINGLESTEP	   9
     21
     22#define PTRACE_ATTACH		  16
     23#define PTRACE_DETACH		  17
     24
     25#define PTRACE_SYSCALL		  24
     26
     27/* 0x4200-0x4300 are reserved for architecture-independent additions.  */
     28#define PTRACE_SETOPTIONS	0x4200
     29#define PTRACE_GETEVENTMSG	0x4201
     30#define PTRACE_GETSIGINFO	0x4202
     31#define PTRACE_SETSIGINFO	0x4203
     32
     33/*
     34 * Generic ptrace interface that exports the architecture specific regsets
     35 * using the corresponding NT_* types (which are also used in the core dump).
     36 * Please note that the NT_PRSTATUS note type in a core dump contains a full
     37 * 'struct elf_prstatus'. But the user_regset for NT_PRSTATUS contains just the
     38 * elf_gregset_t that is the pr_reg field of 'struct elf_prstatus'. For all the
     39 * other user_regset flavors, the user_regset layout and the ELF core dump note
     40 * payload are exactly the same layout.
     41 *
     42 * This interface usage is as follows:
     43 *	struct iovec iov = { buf, len};
     44 *
     45 *	ret = ptrace(PTRACE_GETREGSET/PTRACE_SETREGSET, pid, NT_XXX_TYPE, &iov);
     46 *
     47 * On the successful completion, iov.len will be updated by the kernel,
     48 * specifying how much the kernel has written/read to/from the user's iov.buf.
     49 */
     50#define PTRACE_GETREGSET	0x4204
     51#define PTRACE_SETREGSET	0x4205
     52
     53#define PTRACE_SEIZE		0x4206
     54#define PTRACE_INTERRUPT	0x4207
     55#define PTRACE_LISTEN		0x4208
     56
     57#define PTRACE_PEEKSIGINFO	0x4209
     58
     59struct ptrace_peeksiginfo_args {
     60	__u64 off;	/* from which siginfo to start */
     61	__u32 flags;
     62	__s32 nr;	/* how may siginfos to take */
     63};
     64
     65#define PTRACE_GETSIGMASK	0x420a
     66#define PTRACE_SETSIGMASK	0x420b
     67
     68#define PTRACE_SECCOMP_GET_FILTER	0x420c
     69#define PTRACE_SECCOMP_GET_METADATA	0x420d
     70
     71struct seccomp_metadata {
     72	__u64 filter_off;	/* Input: which filter */
     73	__u64 flags;		/* Output: filter's flags */
     74};
     75
     76#define PTRACE_GET_SYSCALL_INFO		0x420e
     77#define PTRACE_SYSCALL_INFO_NONE	0
     78#define PTRACE_SYSCALL_INFO_ENTRY	1
     79#define PTRACE_SYSCALL_INFO_EXIT	2
     80#define PTRACE_SYSCALL_INFO_SECCOMP	3
     81
     82struct ptrace_syscall_info {
     83	__u8 op;	/* PTRACE_SYSCALL_INFO_* */
     84	__u8 pad[3];
     85	__u32 arch;
     86	__u64 instruction_pointer;
     87	__u64 stack_pointer;
     88	union {
     89		struct {
     90			__u64 nr;
     91			__u64 args[6];
     92		} entry;
     93		struct {
     94			__s64 rval;
     95			__u8 is_error;
     96		} exit;
     97		struct {
     98			__u64 nr;
     99			__u64 args[6];
    100			__u32 ret_data;
    101		} seccomp;
    102	};
    103};
    104
    105#define PTRACE_GET_RSEQ_CONFIGURATION	0x420f
    106
    107struct ptrace_rseq_configuration {
    108	__u64 rseq_abi_pointer;
    109	__u32 rseq_abi_size;
    110	__u32 signature;
    111	__u32 flags;
    112	__u32 pad;
    113};
    114
    115/*
    116 * These values are stored in task->ptrace_message
    117 * by ptrace_stop to describe the current syscall-stop.
    118 */
    119#define PTRACE_EVENTMSG_SYSCALL_ENTRY	1
    120#define PTRACE_EVENTMSG_SYSCALL_EXIT	2
    121
    122/* Read signals from a shared (process wide) queue */
    123#define PTRACE_PEEKSIGINFO_SHARED	(1 << 0)
    124
    125/* Wait extended result codes for the above trace options.  */
    126#define PTRACE_EVENT_FORK	1
    127#define PTRACE_EVENT_VFORK	2
    128#define PTRACE_EVENT_CLONE	3
    129#define PTRACE_EVENT_EXEC	4
    130#define PTRACE_EVENT_VFORK_DONE	5
    131#define PTRACE_EVENT_EXIT	6
    132#define PTRACE_EVENT_SECCOMP	7
    133/* Extended result codes which enabled by means other than options.  */
    134#define PTRACE_EVENT_STOP	128
    135
    136/* Options set using PTRACE_SETOPTIONS or using PTRACE_SEIZE @data param */
    137#define PTRACE_O_TRACESYSGOOD	1
    138#define PTRACE_O_TRACEFORK	(1 << PTRACE_EVENT_FORK)
    139#define PTRACE_O_TRACEVFORK	(1 << PTRACE_EVENT_VFORK)
    140#define PTRACE_O_TRACECLONE	(1 << PTRACE_EVENT_CLONE)
    141#define PTRACE_O_TRACEEXEC	(1 << PTRACE_EVENT_EXEC)
    142#define PTRACE_O_TRACEVFORKDONE	(1 << PTRACE_EVENT_VFORK_DONE)
    143#define PTRACE_O_TRACEEXIT	(1 << PTRACE_EVENT_EXIT)
    144#define PTRACE_O_TRACESECCOMP	(1 << PTRACE_EVENT_SECCOMP)
    145
    146/* eventless options */
    147#define PTRACE_O_EXITKILL		(1 << 20)
    148#define PTRACE_O_SUSPEND_SECCOMP	(1 << 21)
    149
    150#define PTRACE_O_MASK		(\
    151	0x000000ff | PTRACE_O_EXITKILL | PTRACE_O_SUSPEND_SECCOMP)
    152
    153#include <asm/ptrace.h>
    154
    155
    156#endif /* _UAPI_LINUX_PTRACE_H */