1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Add PTRACE_GET_SYSCALL_INFO from Linux 5.3 to sys/ptrace.h.

Linux 5.3 adds a PTRACE_GET_SYSCALL_INFO constant, with an associated
structure and PTRACE_SYSCALL_INFO_* constants.

This patch adds these to sys/ptrace.h in glibc
(PTRACE_GET_SYSCALL_INFO in each architecture version, the rest in
bits/ptrace-shared.h).  As with previous such constants and associated
structures, the glibc version of the structure is named struct
__ptrace_syscall_info.

Tested for x86_64, and with build-many-glibcs.py.
This commit is contained in:
Joseph Myers
2019-10-14 23:43:52 +00:00
parent 2e4e75727e
commit d1e411e5c7
9 changed files with 96 additions and 7 deletions

View File

@ -52,6 +52,15 @@ enum __ptrace_eventcodes
PTRACE_EVENT_STOP = 128
};
/* Type of stop for PTRACE_GET_SYSCALL_INFO. */
enum __ptrace_get_syscall_info_op
{
PTRACE_SYSCALL_INFO_NONE = 0,
PTRACE_SYSCALL_INFO_ENTRY = 1,
PTRACE_SYSCALL_INFO_EXIT = 2,
PTRACE_SYSCALL_INFO_SECCOMP = 3
};
/* Arguments for PTRACE_PEEKSIGINFO. */
struct __ptrace_peeksiginfo_args
{
@ -73,6 +82,44 @@ struct __ptrace_seccomp_metadata
__uint64_t flags; /* Output: filter's flags. */
};
/* Results of PTRACE_GET_SYSCALL_INFO. */
struct __ptrace_syscall_info
{
__uint8_t op; /* One of the enum
__ptrace_get_syscall_info_op
values. */
__uint32_t arch __attribute__ ((__aligned__ (4))); /* AUDIT_ARCH_*
value. */
__uint64_t instruction_pointer; /* Instruction pointer. */
__uint64_t stack_pointer; /* Stack pointer. */
union
{
/* System call number and arguments, for
PTRACE_SYSCALL_INFO_ENTRY. */
struct
{
__uint64_t nr;
__uint64_t args[6];
} entry;
/* System call return value and error flag, for
PTRACE_SYSCALL_INFO_EXIT. */
struct
{
__int64_t rval;
__uint8_t is_error;
} exit;
/* System call number, arguments and SECCOMP_RET_DATA portion of
SECCOMP_RET_TRACE return value, for
PTRACE_SYSCALL_INFO_SECCOMP. */
struct
{
__uint64_t nr;
__uint64_t args[6];
__uint32_t ret_data;
} seccomp;
};
};
/* Perform process tracing functions. REQUEST is one of the values
above, and determines the action to be taken.
For all requests except PTRACE_TRACEME, PID specifies the process to be