• Breno Leitao's avatar
    selftests/powerpc: New PTRACE_SYSEMU test · fc35ef12
    Breno Leitao authored
    This patch adds a new test for the new PTRACE_SYSEMU ptrace request.
    
    This test also relies on PTRACE_GETREGS and PTRACE_SETREGS requests to
    run properly, since the trace instruction (gettid() syscall) is being
    modified at run-time (by PTRACE_SETREGS) and re-executed three times.
    PTRACE_GETREGS is being used to check that the registers are still
    sane.
    
    This test basically creates a child process that executes syscalls
    and the parent process check if it is being traced appropriately.  The
    parent process guarantees that the SYSCALLs are being traced, with
    PTRACE_SYSEMU, and ptrace stops the child application before a syscall is
    executed. The way the tests validates it, is by guaranteeing that the
    system calls arguments, as argv[0] (r3) which is the same register that
    will have the syscall return value on powerpc, are not being corrupted on
    PTRACE_SYSEMU with a return value, i.e, it continues to have the current
    arguments instead, meaning that the registers where not clobbered.
    
    This test is basically the same test for x86 located at
    tools/testing/selftests/x86/ptrace_syscall.c, limited to test PTRACE_SYSEMU
    request, and ported to PowerPC.
    Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    fc35ef12
ptrace-syscall.c 6.09 KB