X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Ffrv%2Fkernel%2Fptrace.c;fp=arch%2Ffrv%2Fkernel%2Fptrace.c;h=fcff819b4340669003e1e0966f174a4677f004ed;hb=e0ff8aa1acd079b70e796571917ae0449b7c465b;hp=44d3df57e03316149ce703ac0fafc3592910b0b6;hpb=bef9ea3086d47cf98cfd0ea389953a0af0b60114;p=linux-2.6.git diff --git a/arch/frv/kernel/ptrace.c b/arch/frv/kernel/ptrace.c index 44d3df57e..fcff819b4 100644 --- a/arch/frv/kernel/ptrace.c +++ b/arch/frv/kernel/ptrace.c @@ -700,11 +700,24 @@ asmlinkage void do_syscall_trace(int leaving) if (!test_thread_flag(TIF_SYSCALL_TRACE)) return; + if (!(current->ptrace & PT_PTRACED)) + return; + /* we need to indicate entry or exit to strace */ if (leaving) __frame->__status |= REG__STATUS_SYSC_EXIT; else __frame->__status |= REG__STATUS_SYSC_ENTRY; - tracehook_report_syscall(regs, leaving); + ptrace_notify(SIGTRAP); + + /* + * this isn't the same as continuing with a signal, but it will do + * for normal use. strace only continues with a signal if the + * stopping signal is not SIGTRAP. -brl + */ + if (current->exit_code) { + send_sig(current->exit_code, current, 1); + current->exit_code = 0; + } }