tracehook: tracehook_signal_handler
This defines tracehook_signal_handler() as a hook for the arch signal handling code to call. It gives ptrace the opportunity to stop for a pseudo-single-step trap immediately after signal handler setup is done. Signed-off-by: Roland McGrath <roland@redhat.com> Cc: Oleg Nesterov <oleg@tv-sign.ru> Reviewed-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fa8e26ccd4
commit
c45aea2761
@ -289,4 +289,27 @@ static inline void tracehook_finish_release_task(struct task_struct *task)
|
||||
ptrace_release_task(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* tracehook_signal_handler - signal handler setup is complete
|
||||
* @sig: number of signal being delivered
|
||||
* @info: siginfo_t of signal being delivered
|
||||
* @ka: sigaction setting that chose the handler
|
||||
* @regs: user register state
|
||||
* @stepping: nonzero if debugger single-step or block-step in use
|
||||
*
|
||||
* Called by the arch code after a signal handler has been set up.
|
||||
* Register and stack state reflects the user handler about to run.
|
||||
* Signal mask changes have already been made.
|
||||
*
|
||||
* Called without locks, shortly before returning to user mode
|
||||
* (or handling more signals).
|
||||
*/
|
||||
static inline void tracehook_signal_handler(int sig, siginfo_t *info,
|
||||
const struct k_sigaction *ka,
|
||||
struct pt_regs *regs, int stepping)
|
||||
{
|
||||
if (stepping)
|
||||
ptrace_notify(SIGTRAP);
|
||||
}
|
||||
|
||||
#endif /* <linux/tracehook.h> */
|
||||
|
Loading…
Reference in New Issue
Block a user