HomeFreeBSD

Add a mask of optional ptrace() events.

Description

Add a mask of optional ptrace() events.

ptrace() now stores a mask of optional events in p_ptevents. Currently
this mask is a single integer, but it can be expanded into an array of
integers in the future.

Two new ptrace requests can be used to manipulate the event mask:
PT_GET_EVENT_MASK fetches the current event mask and PT_SET_EVENT_MASK
sets the current event mask.

The current set of events include:

  • PTRACE_EXEC: trace calls to execve().
  • PTRACE_SCE: trace system call entries.
  • PTRACE_SCX: trace syscam call exits.
  • PTRACE_FORK: trace forks and auto-attach to new child processes.
  • PTRACE_LWP: trace LWP events.

The S_PT_SCX and S_PT_SCE events in the procfs p_stops flags have
been replaced by PTRACE_SCE and PTRACE_SCX. PTRACE_FORK replaces
P_FOLLOW_FORK and PTRACE_LWP replaces P2_LWP_EVENTS.

The PT_FOLLOW_FORK and PT_LWP_EVENTS ptrace requests remain for
compatibility but now simply toggle corresponding flags in the
event mask.

While here, document that PT_SYSCALL, PT_TO_SCE, and PT_TO_SCX both
modify the event mask and continue the traced process.

Reviewed by: kib
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D7044

Details

Provenance
jhbAuthored on
Reviewer
kib
Differential Revision
D7044: Add a mask of optional ptrace() events.
Parents
rS302901: MFC r297187
Branches
Unknown
Tags
Unknown