1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +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

@ -136,8 +136,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };

View File

@ -196,8 +196,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };

View File

@ -52,6 +52,15 @@ enum __ptrace_eventcodes
PTRACE_EVENT_STOP = 128 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. */ /* Arguments for PTRACE_PEEKSIGINFO. */
struct __ptrace_peeksiginfo_args struct __ptrace_peeksiginfo_args
{ {
@ -73,6 +82,44 @@ struct __ptrace_seccomp_metadata
__uint64_t flags; /* Output: filter's flags. */ __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 /* Perform process tracing functions. REQUEST is one of the values
above, and determines the action to be taken. above, and determines the action to be taken.
For all requests except PTRACE_TRACEME, PID specifies the process to be For all requests except PTRACE_TRACEME, PID specifies the process to be

View File

@ -149,8 +149,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };

View File

@ -38,6 +38,7 @@ __BEGIN_DECLS
# undef PTRACE_GETREGSET # undef PTRACE_GETREGSET
# undef PTRACE_GETSIGINFO # undef PTRACE_GETSIGINFO
# undef PTRACE_GETSIGMASK # undef PTRACE_GETSIGMASK
# undef PTRACE_GET_SYSCALL_INFO
# undef PTRACE_GETVRREGS # undef PTRACE_GETVRREGS
# undef PTRACE_GETVSRREGS # undef PTRACE_GETVSRREGS
# undef PTRACE_INTERRUPT # undef PTRACE_INTERRUPT
@ -65,6 +66,10 @@ __BEGIN_DECLS
# undef PTRACE_SINGLEBLOCK # undef PTRACE_SINGLEBLOCK
# undef PTRACE_SINGLESTEP # undef PTRACE_SINGLESTEP
# undef PTRACE_SYSCALL # undef PTRACE_SYSCALL
# undef PTRACE_SYSCALL_INFO_NONE
# undef PTRACE_SYSCALL_INFO_ENTRY
# undef PTRACE_SYSCALL_INFO_EXIT
# undef PTRACE_SYSCALL_INFO_SECCOMP
# undef PTRACE_TRACEME # undef PTRACE_TRACEME
#endif #endif
@ -241,8 +246,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };

View File

@ -79,6 +79,11 @@ __BEGIN_DECLS
# undef PTRACE_EVENT_SECCOMP # undef PTRACE_EVENT_SECCOMP
# undef PTRACE_EVENT_STOP # undef PTRACE_EVENT_STOP
# undef PTRACE_PEEKSIGINFO_SHARED # undef PTRACE_PEEKSIGINFO_SHARED
# undef PTRACE_GET_SYSCALL_INFO
# undef PTRACE_SYSCALL_INFO_NONE
# undef PTRACE_SYSCALL_INFO_ENTRY
# undef PTRACE_SYSCALL_INFO_EXIT
# undef PTRACE_SYSCALL_INFO_SECCOMP
#endif #endif
/* Type of the REQUEST argument to `ptrace.' */ /* Type of the REQUEST argument to `ptrace.' */
enum __ptrace_request enum __ptrace_request
@ -198,6 +203,10 @@ enum __ptrace_request
PTRACE_SECCOMP_GET_METADATA = 0x420d, PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e,
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
PTRACE_PEEKUSR_AREA = 0x5000, PTRACE_PEEKUSR_AREA = 0x5000,
#define PTRACE_PEEKUSR_AREA PTRACE_PEEKUSR_AREA #define PTRACE_PEEKUSR_AREA PTRACE_PEEKUSR_AREA

View File

@ -217,8 +217,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };

View File

@ -166,8 +166,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };

View File

@ -186,8 +186,12 @@ enum __ptrace_request
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
/* Get seccomp BPF filter metadata. */ /* Get seccomp BPF filter metadata. */
PTRACE_SECCOMP_GET_METADATA = 0x420d PTRACE_SECCOMP_GET_METADATA = 0x420d,
#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
/* Get information about system call. */
PTRACE_GET_SYSCALL_INFO = 0x420e
#define PTRACE_GET_SYSCALL_INFO PTRACE_GET_SYSCALL_INFO
}; };