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 data
vs.void *data
;void *addr2
-- Linux doesn't have this, but we provide some additional functionalty using this;function declaration: Linux has
long
int ptrace (enum __ptrace_request __request, ...)
__THROW
, we haveint ptrace (enum __ptrace_request __request, ...)
;interface do differ, e.g., Linux'
PTRACE_GETREGS
usesvoid *data
, we usevoid *addr
for returning the struct, and in Linux this is astruct user_regs_struct
fromlinux/user.h
, and for us it is astruct i386_thread_state
frommach/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_GETREGS
andPTRACE_SETREGS
both do the same thing.
Also consider the sysdeps/generic/sys/ptrace.h
and
sysdeps/unix/sysv/linux/sys/ptrace.h
files.