x86 ptrace: unify syscall tracing
commitd4d67150165df8bf1cc05e532f6efca96f907cab
authorRoland McGrath <roland@redhat.com>
Wed, 9 Jul 2008 09:38:07 +0000 (9 02:38 -0700)
committerRoland McGrath <roland@redhat.com>
Wed, 16 Jul 2008 19:15:17 +0000 (16 12:15 -0700)
tree390d5951231c2a1d97d6453d70c42da7af49eeae
parent64f097331928b01d704047c1dbc738bb6d2a9bf9
x86 ptrace: unify syscall tracing

This unifies and cleans up the syscall tracing code on i386 and x86_64.

Using a single function for entry and exit tracing on 32-bit made the
do_syscall_trace() into some terrible spaghetti.  The logic is clear and
simple using separate syscall_trace_enter() and syscall_trace_leave()
functions as on 64-bit.

The unification adds PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP support
on x86_64, for 32-bit ptrace() callers and for 64-bit ptrace() callers
tracing either 32-bit or 64-bit tasks.  It behaves just like 32-bit.

Changing syscall_trace_enter() to return the syscall number shortens
all the assembly paths, while adding the SYSEMU feature in a simple way.

Signed-off-by: Roland McGrath <roland@redhat.com>
arch/x86/ia32/ia32entry.S
arch/x86/kernel/entry_32.S
arch/x86/kernel/entry_64.S
arch/x86/kernel/ptrace.c
include/asm-x86/calling.h
include/asm-x86/ptrace-abi.h
include/asm-x86/thread_info.h