]> granicus.if.org Git - strace/commitdiff
2005-06-06 Roland McGrath <roland@redhat.com>
authorRoland McGrath <roland@redhat.com>
Tue, 7 Jun 2005 23:21:20 +0000 (23:21 +0000)
committerRoland McGrath <roland@redhat.com>
Tue, 7 Jun 2005 23:21:20 +0000 (23:21 +0000)
* process.c (struct_user_offsets) [X86_64]: Reorder elements so
matching works right.
Fixes RH#159787.
* defs.h (struct sysent): New member `native_scno'.
(known_scno): Declare new function.
* linux/syscallent.h: Add new final field to interesting syscalls.
* syscall.c (known_scno): New function.
(dumpio, internal_syscall, syscall_fixup, trace_syscall): Use it.
* process.c (internal_fork, internal_exit): Likewise.
[IA64] (ARG_STACKSIZE, ARG_PTID, ARG_CTID, ARG_TLS): Likewise.
* strace.c (proc_open): Likewise.
* util.c [LINUX] (setbpt): Likewise.
* linux/syscall.h: Remove [!defined(X86_64)] from conditional
for defining SYS_socket_subcall et al.
* linux/syscallent.h: Likewise for #error check.
* syscall.c (trace_syscall): Likewise for SYS_{socketcall,ipc} cases.
Fixes RH#158934.

process.c

index bc116a4778077e8f0d70fbad517cb6d0ea5d6d7a..2d8cb0ae42e462a9686840db78a272568f52d447 100644 (file)
--- a/process.c
+++ b/process.c
@@ -396,7 +396,7 @@ struct tcb *tcp;
                                tcp->flags |= TCB_GROUP_EXITING;
                } else
 # endif
-               if (tcp->scno == __NR_exit_group)
+               if (known_scno(tcp) == __NR_exit_group)
                        tcp->flags |= TCB_GROUP_EXITING;
 #endif
        }
@@ -463,7 +463,7 @@ struct tcb *tcp;
 
        if (exiting(tcp)) {
 #ifdef SYS_rfork
-               if (tcp->scno == SYS_rfork && !(tcp->u_arg[0]&RFPROC))
+               if (known_scno(tcp) == SYS_rfork && !(tcp->u_arg[0]&RFPROC))
                        return 0;
 #endif
                if (getrval2(tcp))
@@ -542,10 +542,10 @@ extern void print_ldt_entry();
 # if defined IA64
 #  define ARG_FLAGS    0
 #  define ARG_STACK    1
-#  define ARG_STACKSIZE        (tcp->scno == SYS_clone2 ? 2 : -1)
-#  define ARG_PTID     (tcp->scno == SYS_clone2 ? 3 : 2)
-#  define ARG_CTID     (tcp->scno == SYS_clone2 ? 4 : 3)
-#  define ARG_TLS      (tcp->scno == SYS_clone2 ? 5 : 4)
+#  define ARG_STACKSIZE        (known_scno(tcp) == SYS_clone2 ? 2 : -1)
+#  define ARG_PTID     (known_scno(tcp) == SYS_clone2 ? 3 : 2)
+#  define ARG_CTID     (known_scno(tcp) == SYS_clone2 ? 4 : 3)
+#  define ARG_TLS      (known_scno(tcp) == SYS_clone2 ? 5 : 4)
 # elif defined S390 || defined S390X
 #  define ARG_STACK    0
 #  define ARG_FLAGS    1
@@ -931,7 +931,7 @@ struct tcb *tcp;
        int dont_follow = 0;
 
 #ifdef SYS_vfork
-       if (tcp->scno == SYS_vfork) {
+       if (known_scno(tcp) == SYS_vfork) {
                /* Attempt to make vfork into fork, which we can follow. */
                if (!followvfork ||
                    change_syscall(tcp, SYS_fork) < 0)
@@ -2587,33 +2587,33 @@ const struct xlat struct_user_offsets[] = {
        { 4*SS,                 "4*SS"                                  },
 #else /* !I386 */
 #ifdef X86_64
-       { 8*RDI,                "8*RDI"                                 },
-       { 8*RSI,                "8*RSI"                                 },
-       { 8*RDX,                "8*RDX"                                 },
-       { 8*R10,                "8*R10" },
-       { 8*R8,                 "8*R8" },
-       { 8*R9,                 "8*R9" },
-       { 8*RBX,                "8*RBX"                                 },
-       { 8*RCX,                "8*RCX"                                 },
+       { 8*R15,                "8*R15"                                 },
+       { 8*R14,                "8*R14"                                 },
+       { 8*R13,                "8*R13"                                 },
+       { 8*R12,                "8*R12"                                 },
        { 8*RBP,                "8*RBP"                                 },
+       { 8*RBX,                "8*RBX"                                 },
+       { 8*R11,                "8*R11"                                 },
+       { 8*R10,                "8*R10"                                 },
+       { 8*R9,                 "8*R9"                                  },
+       { 8*R8,                 "8*R8"                                  },
        { 8*RAX,                "8*RAX"                                 },
+       { 8*RCX,                "8*RCX"                                 },
+       { 8*RDX,                "8*RDX"                                 },
+       { 8*RSI,                "8*RSI"                                 },
+       { 8*RDI,                "8*RDI"                                 },
 #if 0
-       { 8*DS,                 "8*DS"                                  },
-       { 8*ES,                 "8*ES"                                  },
-       { 8*FS,                 "8*FS"                                  },
-       { 8*GS,                 "8*GS"                                  },
+       { DS,                   "DS"                                    },
+       { ES,                   "ES"                                    },
+       { FS,                   "FS"                                    },
+       { GS,                   "GS"                                    },
 #endif
-       { 8*ORIG_RAX,           "8*ORIG_EAX"                            },
+       { 8*ORIG_RAX,           "8*ORIG_RAX"                            },
        { 8*RIP,                "8*RIP"                                 },
        { 8*CS,                 "8*CS"                                  },
        { 8*EFLAGS,             "8*EFL"                                 },
-       { 8*RSP,                "8*RSP"                         },
+       { 8*RSP,                "8*RSP"                                 },
        { 8*SS,                 "8*SS"                                  },
-       { 8*R11,                "8*R11" },
-       { 8*R12,                "8*R12" },
-       { 8*R13,                "8*R13" },
-       { 8*R14,                "8*R14" },
-       { 8*R15,                "8*R15" },
 #endif
 #ifdef M68K
        { 4*PT_D1,              "4*PT_D1"                               },