• Breno Leitao's avatar
    powerpc/ptrace: Add support for PTRACE_SYSEMU · 5521eb4b
    Breno Leitao authored
    This is a patch that adds support for PTRACE_SYSEMU ptrace request in
    PowerPC architecture.
    
    When ptrace(PTRACE_SYSEMU, ...) request is called, it will be handled by
    the arch independent function ptrace_resume(), which will tag the task with
    the TIF_SYSCALL_EMU flag. This flag needs to be handled from a platform
    dependent point of view, which is what this patch does.
    
    This patch adds this task's flag as part of the _TIF_SYSCALL_DOTRACE, which
    is the MACRO that is used to trace syscalls at entrance/exit.
    
    Since TIF_SYSCALL_EMU is now part of _TIF_SYSCALL_DOTRACE, if the task has
    _TIF_SYSCALL_DOTRACE set, it will hit do_syscall_trace_enter() at syscall
    entrance and do_syscall_trace_leave() at syscall leave.
    do_syscall_trace_enter() needs to handle the TIF_SYSCALL_EMU flag properly,
    which will interrupt the syscall executing if TIF_SYSCALL_EMU is set. The
    output values should not be changed, i.e. the return value (r3) should
    contain the original syscall argument on exit.
    
    With this flag set, the syscall is not executed fundamentally, because
    do_syscall_trace_enter() is returning -1 which is bigger than NR_syscall,
    thus, skipping the syscall execution and exiting userspace.
    Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    5521eb4b
ptrace.h 7.5 KB