]> granicus.if.org Git - strace/blobdiff - process.c
io.c: use printaddr and umove_or_printaddr
[strace] / process.c
index 72c09b7884fafb878eaf2ca0caea6e3c81777e6f..deeb74171d7b0ca977771f18a97edb4af664f2fb 100644 (file)
--- a/process.c
+++ b/process.c
 
 #include "xlat/nt_descriptor_types.h"
 
+#include "regs.h"
 #include "ptrace.h"
 #include "xlat/ptrace_cmds.h"
 #include "xlat/ptrace_setoptions_flags.h"
 
-#include "regs.h"
-
 #define uoff(member)   offsetof(struct user, member)
 #define XLAT_UOFF(member)      { uoff(member), "offsetof(struct user, " #member ")" }
 
@@ -56,8 +55,7 @@ static const struct xlat struct_user_offsets[] = {
        XLAT_END
 };
 
-int
-sys_ptrace(struct tcb *tcp)
+SYS_FUNC(ptrace)
 {
        const struct xlat *x;
        unsigned long addr;
@@ -75,22 +73,20 @@ sys_ptrace(struct tcb *tcp)
                                        break;
                        }
                        if (!x->str)
-                               tprintf("%#lx, ", addr);
+                               printaddr(addr);
                        else if (x->val > addr && x != struct_user_offsets) {
                                x--;
-                               tprintf("%s + %ld", x->str, addr - x->val);
+                               tprintf("%s + %ld", x->str, addr - x->val);
                        }
                        else
-                               tprintf("%s, ", x->str);
+                               tprints(x->str);
                } else
                if (tcp->u_arg[0] == PTRACE_GETREGSET
-                || tcp->u_arg[0] == PTRACE_SETREGSET
-               ) {
+                || tcp->u_arg[0] == PTRACE_SETREGSET)
                        printxval(nt_descriptor_types, tcp->u_arg[2], "NT_???");
-                       tprints(", ");
-               } else
-                       tprintf("%#lx, ", addr);
-
+               else
+                       printaddr(addr);
+               tprints(", ");
 
                switch (tcp->u_arg[0]) {
 #ifndef IA64
@@ -120,7 +116,7 @@ sys_ptrace(struct tcb *tcp)
                        /* Don't print anything, do it at syscall return. */
                        break;
                default:
-                       tprintf("%#lx", tcp->u_arg[3]);
+                       printaddr(tcp->u_arg[3]);
                        break;
                }
        } else {
@@ -131,7 +127,7 @@ sys_ptrace(struct tcb *tcp)
 #ifdef IA64
                        return RVAL_HEX;
 #else
-                       printnum(tcp, tcp->u_arg[3], "%#lx");
+                       printnum_long(tcp, tcp->u_arg[3], "%#lx");
                        break;
 #endif
                case PTRACE_GETSIGINFO: {