ptrace has some issues (sysdeps/mach/hurd/ptrace.c).
Our implementation (and the generic one in
misc/ptrace.c) differ from the Linux one (sysdeps/unix/sysv/linux/ptrace.c) w.r.t. handling of...the third argument:
int datavs.void *data;void *addr2-- Linux doesn't have this, but we provide some additional functionalty using this;function declaration: Linux has
longint ptrace (enum __ptrace_request __request, ...)__THROW, we haveint ptrace (enum __ptrace_request __request, ...);interface do differ, e.g., Linux'
PTRACE_GETREGSusesvoid *data, we usevoid *addrfor returning the struct, and in Linux this is astruct user_regs_structfromlinux/user.h, and for us it is astruct i386_thread_statefrommach/i386/thread_status.h;Linux provides some functionality that we don't provide:
PTRACE_GETFPXREGS,PTRACE_SINGLESTEP.
Some parts are wrongly implemented, e.g.,
PTRACE_GETREGSandPTRACE_SETREGSboth do the same thing.
Also consider the sysdeps/generic/sys/ptrace.h and
sysdeps/unix/sysv/linux/sys/ptrace.h files.