[Blackfin] arch: disable single stepping when delivering a signal
When delivering a signal, disable single stepping but call ptrace_notify if it was enabled before. The idea was taken from the x86 port. Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de> Signed-off-by: Bryan Wu <cooloney@kernel.org>
This commit is contained in:
parent
7d39270d31
commit
8513c42edb
1 changed files with 13 additions and 0 deletions
|
@ -42,6 +42,9 @@
|
||||||
|
|
||||||
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
||||||
|
|
||||||
|
/* Location of the trace bit in SYSCFG. */
|
||||||
|
#define TRACE_BITS 0x0001
|
||||||
|
|
||||||
struct fdpic_func_descriptor {
|
struct fdpic_func_descriptor {
|
||||||
unsigned long text;
|
unsigned long text;
|
||||||
unsigned long GOT;
|
unsigned long GOT;
|
||||||
|
@ -225,6 +228,16 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t * info,
|
||||||
regs->r1 = (unsigned long)(&frame->info);
|
regs->r1 = (unsigned long)(&frame->info);
|
||||||
regs->r2 = (unsigned long)(&frame->uc);
|
regs->r2 = (unsigned long)(&frame->uc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clear the trace flag when entering the signal handler, but
|
||||||
|
* notify any tracer that was single-stepping it. The tracer
|
||||||
|
* may want to single-step inside the handler too.
|
||||||
|
*/
|
||||||
|
if (regs->syscfg & TRACE_BITS) {
|
||||||
|
regs->syscfg &= ~TRACE_BITS;
|
||||||
|
ptrace_notify(SIGTRAP);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
give_sigsegv:
|
give_sigsegv:
|
||||||
|
|
Loading…
Reference in a new issue