Revision 11dbc963a8f6128595d0f6ecf138dc369e144997 authored by TAKADA Yoshihito on 30 June 2008, 04:44:45 UTC, committed by Ingo Molnar on 30 June 2008, 12:35:18 UTC
When I update kernel 2.6.25 from 2.6.24, gdb does not work. On 2.6.25, ptrace(PTRACE_GETFPXREGS, ...) returns ENODEV. But 2.6.24 kernel's ptrace() returns EIO. It is issue of compatibility. I attached test program as pt.c and patch for fix it. #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <errno.h> #include <sys/ptrace.h> #include <sys/types.h> struct user_fxsr_struct { unsigned short cwd; unsigned short swd; unsigned short twd; unsigned short fop; long fip; long fcs; long foo; long fos; long mxcsr; long reserved; long st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ long xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ long padding[56]; }; int main(void) { pid_t pid; pid = fork(); switch(pid){ case -1:/* error */ break; case 0:/* child */ child(); break; default: parent(pid); break; } return 0; } int child(void) { ptrace(PTRACE_TRACEME); kill(getpid(), SIGSTOP); sleep(10); return 0; } int parent(pid_t pid) { int ret; struct user_fxsr_struct fpxregs; ret = ptrace(PTRACE_GETFPXREGS, pid, 0, &fpxregs); if(ret < 0){ printf("%d: %s.\n", errno, strerror(errno)); } kill(pid, SIGCONT); wait(pid); return 0; } /* in the kerel, at kernel/i387.c get_fpxregs() */ Signed-off-by: Ingo Molnar <mingo@elte.hu>
1 parent fcb4304
File | Mode | Size |
---|---|---|
802 | ||
8021q | ||
9p | ||
appletalk | ||
atm | ||
ax25 | ||
bluetooth | ||
bridge | ||
can | ||
core | ||
dccp | ||
decnet | ||
econet | ||
ethernet | ||
ieee80211 | ||
ipv4 | ||
ipv6 | ||
ipx | ||
irda | ||
iucv | ||
key | ||
lapb | ||
llc | ||
mac80211 | ||
netfilter | ||
netlabel | ||
netlink | ||
netrom | ||
packet | ||
rfkill | ||
rose | ||
rxrpc | ||
sched | ||
sctp | ||
sunrpc | ||
tipc | ||
unix | ||
wanrouter | ||
wireless | ||
x25 | ||
xfrm | ||
Kconfig | -rw-r--r-- | 8.5 KB |
Makefile | -rw-r--r-- | 1.6 KB |
TUNABLE | -rw-r--r-- | 2.2 KB |
compat.c | -rw-r--r-- | 22.6 KB |
nonet.c | -rw-r--r-- | 528 bytes |
socket.c | -rw-r--r-- | 55.0 KB |
sysctl_net.c | -rw-r--r-- | 1.8 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...