m68knommu: convert to using tracehook_report_syscall_*
Break up syscall_trace() into separate entry and exit routines that use tracehook_report_syscall_entry() and tracehook_report_syscall_exit(). Signed-off-by: Greg Ungerer <gerg@uclinux.org>
This commit is contained in:
parent
41a2159b5b
commit
55f411de48
4 changed files with 19 additions and 22 deletions
|
@ -18,6 +18,7 @@
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/user.h>
|
#include <linux/user.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
|
#include <linux/tracehook.h>
|
||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
@ -241,21 +242,17 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage void syscall_trace(void)
|
asmlinkage int syscall_trace_enter(void)
|
||||||
{
|
{
|
||||||
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
int ret = 0;
|
||||||
return;
|
|
||||||
if (!(current->ptrace & PT_PTRACED))
|
if (test_thread_flag(TIF_SYSCALL_TRACE))
|
||||||
return;
|
ret = tracehook_report_syscall_entry(task_pt_regs(current));
|
||||||
ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
|
return ret;
|
||||||
? 0x80 : 0));
|
|
||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
asmlinkage void syscall_trace_leave(void)
|
||||||
|
{
|
||||||
|
if (test_thread_flag(TIF_SYSCALL_TRACE))
|
||||||
|
tracehook_report_syscall_exit(task_pt_regs(current), 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ do_trace:
|
||||||
movel #-ENOSYS,%sp@(PT_OFF_D0) /* needed for strace*/
|
movel #-ENOSYS,%sp@(PT_OFF_D0) /* needed for strace*/
|
||||||
subql #4,%sp
|
subql #4,%sp
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace_enter
|
||||||
RESTORE_SWITCH_STACK
|
RESTORE_SWITCH_STACK
|
||||||
addql #4,%sp
|
addql #4,%sp
|
||||||
movel %sp@(PT_OFF_ORIG_D0),%d1
|
movel %sp@(PT_OFF_ORIG_D0),%d1
|
||||||
|
@ -60,7 +60,7 @@ do_trace:
|
||||||
1: movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
1: movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
||||||
subql #4,%sp /* dummy return address */
|
subql #4,%sp /* dummy return address */
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace_leave
|
||||||
|
|
||||||
ret_from_signal:
|
ret_from_signal:
|
||||||
RESTORE_SWITCH_STACK
|
RESTORE_SWITCH_STACK
|
||||||
|
|
|
@ -42,7 +42,7 @@ do_trace:
|
||||||
movel #-ENOSYS,%sp@(PT_OFF_D0) /* needed for strace*/
|
movel #-ENOSYS,%sp@(PT_OFF_D0) /* needed for strace*/
|
||||||
subql #4,%sp
|
subql #4,%sp
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace_enter
|
||||||
RESTORE_SWITCH_STACK
|
RESTORE_SWITCH_STACK
|
||||||
addql #4,%sp
|
addql #4,%sp
|
||||||
movel %sp@(PT_OFF_ORIG_D0),%d1
|
movel %sp@(PT_OFF_ORIG_D0),%d1
|
||||||
|
@ -56,7 +56,7 @@ do_trace:
|
||||||
1: movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
1: movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
||||||
subql #4,%sp /* dummy return address */
|
subql #4,%sp /* dummy return address */
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace_leave
|
||||||
|
|
||||||
ret_from_signal:
|
ret_from_signal:
|
||||||
RESTORE_SWITCH_STACK
|
RESTORE_SWITCH_STACK
|
||||||
|
|
|
@ -88,7 +88,7 @@ ENTRY(system_call)
|
||||||
movel %d2,PT_OFF_D0(%sp) /* on syscall entry */
|
movel %d2,PT_OFF_D0(%sp) /* on syscall entry */
|
||||||
subql #4,%sp
|
subql #4,%sp
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace_enter
|
||||||
RESTORE_SWITCH_STACK
|
RESTORE_SWITCH_STACK
|
||||||
addql #4,%sp
|
addql #4,%sp
|
||||||
movel %d3,%a0
|
movel %d3,%a0
|
||||||
|
@ -96,7 +96,7 @@ ENTRY(system_call)
|
||||||
movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
movel %d0,%sp@(PT_OFF_D0) /* save the return value */
|
||||||
subql #4,%sp /* dummy return address */
|
subql #4,%sp /* dummy return address */
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
jbsr syscall_trace
|
jbsr syscall_trace_leave
|
||||||
|
|
||||||
ret_from_signal:
|
ret_from_signal:
|
||||||
RESTORE_SWITCH_STACK
|
RESTORE_SWITCH_STACK
|
||||||
|
|
Loading…
Add table
Reference in a new issue