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:
committed by
Linus Torvalds
parent
fa8e26ccd4
commit
c45aea2761
@@ -289,4 +289,27 @@ static inline void tracehook_finish_release_task(struct task_struct *task)
|
|||||||
ptrace_release_task(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> */
|
#endif /* <linux/tracehook.h> */
|
||||||
|
Reference in New Issue
Block a user