2003-01-14 Roland McGrath <roland@redhat.com>
* process.c: Use <linux/ptrace.h> regardless of <sys/reg.h>.
(sys_ptrace): Use printxval.
(ptrace_cmds): Make PTRACE_GETREGS et al conditional on #ifdef PTRACE_*
instead of only #ifdef SUNOS4. Add PTRACE_[GS]ETFPXREGS.
diff --git a/process.c b/process.c
index 965822c..c66e7c2 100644
--- a/process.c
+++ b/process.c
@@ -70,6 +70,11 @@
#endif
#endif /* HAVE_ASM_REG_H */
+#ifdef HAVE_LINUX_PTRACE_H
+#undef PTRACE_SYSCALL
+#include <linux/ptrace.h>
+#endif
+
#ifdef HAVE_SYS_REG_H
# include <sys/reg.h>
#ifndef PTRACE_PEEKUSR
@@ -78,9 +83,6 @@
#ifndef PTRACE_POKEUSR
# define PTRACE_POKEUSR PTRACE_POKEUSER
#endif
-#elif defined(HAVE_LINUX_PTRACE_H)
-#undef PTRACE_SYSCALL
-#include <linux/ptrace.h>
#endif
#ifdef HAVE_LINUX_FUTEX_H
@@ -1945,11 +1947,25 @@
{ PTRACE_SINGLESTEP, "PTRACE_SINGLESTEP" },
{ PTRACE_ATTACH, "PTRACE_ATTACH" },
{ PTRACE_DETACH, "PTRACE_DETACH" },
-#ifdef SUNOS4
+#ifdef PTRACE_GETREGS
{ PTRACE_GETREGS, "PTRACE_GETREGS" },
+#endif
+#ifdef PTRACE_SETREGS
{ PTRACE_SETREGS, "PTRACE_SETREGS" },
+#endif
+#ifdef PTRACE_GETFPREGS
{ PTRACE_GETFPREGS, "PTRACE_GETFPREGS", },
+#endif
+#ifdef PTRACE_SETFPREGS
{ PTRACE_SETFPREGS, "PTRACE_SETFPREGS", },
+#endif
+#ifdef PTRACE_GETFPXREGS
+ { PTRACE_GETFPXREGS, "PTRACE_GETFPXREGS", },
+#endif
+#ifdef PTRACE_SETFPXREGS
+ { PTRACE_SETFPXREGS, "PTRACE_SETFPXREGS", },
+#endif
+#ifdef SUNOS4
{ PTRACE_READDATA, "PTRACE_READDATA" },
{ PTRACE_WRITEDATA, "PTRACE_WRITEDATA" },
{ PTRACE_READTEXT, "PTRACE_READTEXT" },
@@ -2500,19 +2516,18 @@
sys_ptrace(tcp)
struct tcb *tcp;
{
- char *cmd;
struct xlat *x;
long addr;
- cmd = xlookup(ptrace_cmds, tcp->u_arg[0]);
- if (!cmd)
-#ifndef FREEBSD
- cmd = "PTRACE_???";
-#else
- cmd = "PT_???";
-#endif
if (entering(tcp)) {
- tprintf("%s, %lu, ", cmd, tcp->u_arg[1]);
+ printxval(ptrace_cmds, tcp->u_arg[0],
+#ifndef FREEBSD
+ "PTRACE_???"
+#else
+ "PT_???"
+#endif
+ );
+ tprintf(", %lu, ", tcp->u_arg[1]);
addr = tcp->u_arg[2];
#ifndef FREEBSD
if (tcp->u_arg[0] == PTRACE_PEEKUSER