]> granicus.if.org Git - strace/commitdiff
2008-05-08 David S. Miller <davem@davemloft.net>
authorRoland McGrath <roland@redhat.com>
Mon, 19 May 2008 23:50:24 +0000 (23:50 +0000)
committerRoland McGrath <roland@redhat.com>
Mon, 19 May 2008 23:50:24 +0000 (23:50 +0000)
* syscall.c (socket_map, sparc_socket_decode): Delete.
(trace_syscall): Use common socketcall and ipc subcall
support on sparc.
* linux/sparc/syscall.h (sys_semtimedop): Declare.
(SYS_socket_subcall, SYS_sub_socket, SYS_sub_bind,
SYS_sub_connect, SYS_sub_listen, SYS_sub_accept,
SYS_sub_getsockname, SYS_sub_getpeername,
SYS_sub_socketpair, SYS_sub_send, SYS_sub_recv,
SYS_sub_sendto, SYS_sub_recvfrom, SYS_sub_shutdown,
SYS_sub_setsockopt, SYS_sub_getsockopt, SYS_sub_sendmsg,
SYS_sub_recvmsg, SYS_socket_nsubcalls, SYS_ipc_subcall,
SYS_sub_semop, SYS_sub_semget, SYS_sub_semctl,
SYS_sub_semtimedop, SYS_sub_msgsnd, SYS_sub_msgrcv,
SYS_sub_msgget, SYS_sub_msgctl, SYS_sub_shmat,
SYS_sub_shmdt, SYS_sub_shmget, SYS_sub_shmctl,
SYS_ipc_nsubcalls): Define
* linux/sparc/syscallent.h: Add socketcall and ipc entries.

linux/sparc/syscall.h
linux/sparc/syscallent.h
syscall.c

index 7fed2863be6df0d4d1db147d01b778a59241e10e..ca92e8bb4d577c885eabfdb4dae8362a675a5f0c 100644 (file)
@@ -92,7 +92,7 @@ int   sys_truncate(),sys_ftruncate(),sys_access(),sys_fsync(),sys_sysctl();
 int    sys_statfs(),sys_fstatfs(),sys_msync();
 int sys_stat64(), sys_lstat64(), sys_fstat64();
 int sys_truncate64(), sys_ftruncate64();
-
+int sys_semtimedop();
 
 /* 2.3 communications */
 int    sys_socket(),sys_bind(),sys_listen(),sys_accept(),sys_connect();
@@ -214,4 +214,41 @@ int        sys_move_pages(), sys_getcpu();
 int    sys_epoll_pwait();
 int    sys_signalfd(), sys_timerfd(), sys_eventfd();
 
+#  define SYS_socket_subcall   353
+#define SYS_sub_socket         (SYS_socket_subcall + 1)
+#define SYS_sub_bind           (SYS_socket_subcall + 2)
+#define SYS_sub_connect                (SYS_socket_subcall + 3)
+#define SYS_sub_listen         (SYS_socket_subcall + 4)
+#define SYS_sub_accept         (SYS_socket_subcall + 5)
+#define SYS_sub_getsockname    (SYS_socket_subcall + 6)
+#define SYS_sub_getpeername    (SYS_socket_subcall + 7)
+#define SYS_sub_socketpair     (SYS_socket_subcall + 8)
+#define SYS_sub_send           (SYS_socket_subcall + 9)
+#define SYS_sub_recv           (SYS_socket_subcall + 10)
+#define SYS_sub_sendto         (SYS_socket_subcall + 11)
+#define SYS_sub_recvfrom       (SYS_socket_subcall + 12)
+#define SYS_sub_shutdown       (SYS_socket_subcall + 13)
+#define SYS_sub_setsockopt     (SYS_socket_subcall + 14)
+#define SYS_sub_getsockopt     (SYS_socket_subcall + 15)
+#define SYS_sub_sendmsg                (SYS_socket_subcall + 16)
+#define SYS_sub_recvmsg                (SYS_socket_subcall + 17)
+
+#define SYS_socket_nsubcalls   18
+
+#define SYS_ipc_subcall                ((SYS_socket_subcall)+(SYS_socket_nsubcalls))
+#define SYS_sub_semop          (SYS_ipc_subcall + 1)
+#define SYS_sub_semget         (SYS_ipc_subcall + 2)
+#define SYS_sub_semctl         (SYS_ipc_subcall + 3)
+#define SYS_sub_semtimedop     (SYS_ipc_subcall + 4)
+#define SYS_sub_msgsnd         (SYS_ipc_subcall + 11)
+#define SYS_sub_msgrcv         (SYS_ipc_subcall + 12)
+#define SYS_sub_msgget         (SYS_ipc_subcall + 13)
+#define SYS_sub_msgctl         (SYS_ipc_subcall + 14)
+#define SYS_sub_shmat          (SYS_ipc_subcall + 21)
+#define SYS_sub_shmdt          (SYS_ipc_subcall + 22)
+#define SYS_sub_shmget         (SYS_ipc_subcall + 23)
+#define SYS_sub_shmctl         (SYS_ipc_subcall + 24)
+
+#define SYS_ipc_nsubcalls      25
+
 #include "syscall1.h"
index aadb269fdf1167708c8c419fc169064d7ae3d25e..ecb40187a78b3c7e3c034ac268fa184f64b707e7 100644 (file)
        { 5,    0,      printargs,      "SYS_350" },            /* 350 */
        { 5,    0,      printargs,      "SYS_351" },            /* 351 */
        { 5,    0,      printargs,      "SYS_352" },            /* 352 */
+#if SYS_socket_subcall != 353
+ #error fix me
+#endif
+       { 8,    0,      printargs,              "socket_subcall"}, /* 353 */
+       { 3,    TN,     sys_socket,             "socket"        }, /* 354 */
+       { 3,    TN,     sys_bind,               "bind"          }, /* 355 */
+       { 3,    TN,     sys_connect,            "connect"       }, /* 356 */
+       { 2,    TN,     sys_listen,             "listen"        }, /* 357 */
+       { 3,    TN,     sys_accept,             "accept"        }, /* 358 */
+       { 3,    TN,     sys_getsockname,        "getsockname"   }, /* 359 */
+       { 3,    TN,     sys_getpeername,        "getpeername"   }, /* 360 */
+       { 4,    TN,     sys_socketpair,         "socketpair"    }, /* 361 */
+       { 4,    TN,     sys_send,               "send"          }, /* 362 */
+       { 4,    TN,     sys_recv,               "recv"          }, /* 363 */
+       { 6,    TN,     sys_sendto,             "sendto"        }, /* 364 */
+       { 6,    TN,     sys_recvfrom,           "recvfrom"      }, /* 365 */
+       { 2,    TN,     sys_shutdown,           "shutdown"      }, /* 366 */
+       { 5,    TN,     sys_setsockopt,         "setsockopt"    }, /* 367 */
+       { 5,    TN,     sys_getsockopt,         "getsockopt"    }, /* 368 */
+       { 5,    TN,     sys_sendmsg,            "sendmsg"       }, /* 369 */
+       { 5,    TN,     sys_recvmsg,            "recvmsg"       }, /* 370 */
+#if SYS_ipc_subcall != 371
+ #error fix me
+#endif
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 371 */
+       { 4,    TI,     printargs,              "semop"         }, /* 372 */
+       { 4,    TI,     sys_semget,             "semget"        }, /* 373 */
+       { 4,    TI,     sys_semctl,             "semctl"        }, /* 374 */
+       { 5,    TI,     sys_semtimedop,         "semtimedop"    }, /* 375 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 376 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 377 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 378 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 379 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 380 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 381 */
+       { 4,    TI,     sys_msgsnd,             "msgsnd"        }, /* 382 */
+       { 4,    TI,     sys_msgrcv,             "msgrcv"        }, /* 383 */
+       { 4,    TI,     sys_msgget,             "msgget"        }, /* 384 */
+       { 4,    TI,     sys_msgctl,             "msgctl"        }, /* 385 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 386 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 387 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 388 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 389 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 390 */
+       { 4,    0,      printargs,              "ipc_subcall"   }, /* 391 */
+       { 4,    TI,     sys_shmat,              "shmat"         }, /* 392 */
+       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 393 */
+       { 4,    TI,     sys_shmget,             "shmget"        }, /* 394 */
+       { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 395 */
+       { 5,    0,      printargs,              "SYS_343"       }, /* 396 */
+       { 5,    0,      printargs,              "SYS_344"       }, /* 397 */
+       { 5,    0,      printargs,              "SYS_345"       }, /* 398 */
+       { 5,    0,      printargs,              "SYS_346"       }, /* 399 */
+       { 5,    0,      printargs,              "SYS_347"       }, /* 400 */
index ba176458e0193766b3e3e3b374e2ea40c8f7837c..f42b121808952c0c6ecec5bf38f1b3fca4b7dbea 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -584,50 +584,6 @@ static const struct subcall subcalls_table[] = {
 
 #if !(defined(LINUX) && ( defined(ALPHA) || defined(MIPS) ))
 
-static const int socket_map [] = {
-              /* SYS_SOCKET      */ 97,
-              /* SYS_BIND        */ 104,
-              /* SYS_CONNECT     */ 98,
-              /* SYS_LISTEN      */ 106,
-              /* SYS_ACCEPT      */ 99,
-              /* SYS_GETSOCKNAME */ 150,
-              /* SYS_GETPEERNAME */ 141,
-              /* SYS_SOCKETPAIR  */ 135,
-              /* SYS_SEND        */ 101,
-              /* SYS_RECV        */ 102,
-              /* SYS_SENDTO      */ 133,
-              /* SYS_RECVFROM    */ 125,
-              /* SYS_SHUTDOWN    */ 134,
-              /* SYS_SETSOCKOPT  */ 105,
-              /* SYS_GETSOCKOPT  */ 118,
-              /* SYS_SENDMSG     */ 114,
-              /* SYS_RECVMSG     */ 113
-};
-
-#if defined (SPARC) || defined (SPARC64)
-static void
-sparc_socket_decode (tcp)
-struct tcb *tcp;
-{
-       volatile long addr;
-       volatile int i, n;
-
-       if (tcp->u_arg [0] < 1 || tcp->u_arg [0] > sizeof(socket_map)/sizeof(int)+1){
-               return;
-       }
-       tcp->scno = socket_map [tcp->u_arg [0]-1];
-       n = tcp->u_nargs = sysent [tcp->scno].nargs;
-       addr = tcp->u_arg [1];
-       for (i = 0; i < n; i++){
-               int arg;
-               if (umoven (tcp, addr, sizeof (arg), (void *) &arg) < 0)
-                       arg = 0;
-               tcp->u_arg [i] = arg;
-               addr += sizeof (arg);
-       }
-}
-#endif
-
 static void
 decode_subcall(tcp, subcall, nsubcalls, style)
 struct tcb *tcp;
@@ -2394,7 +2350,7 @@ trace_syscall(struct tcb *tcp)
 
        switch (known_scno(tcp)) {
 #ifdef LINUX
-#if !defined (ALPHA) && !defined(SPARC) && !defined(SPARC64) && !defined(MIPS) && !defined(HPPA)
+#if !defined (ALPHA) && !defined(MIPS) && !defined(HPPA)
        case SYS_socketcall:
                decode_subcall(tcp, SYS_socket_subcall,
                        SYS_socket_nsubcalls, deref_style);
@@ -2403,12 +2359,7 @@ trace_syscall(struct tcb *tcp)
                decode_subcall(tcp, SYS_ipc_subcall,
                        SYS_ipc_nsubcalls, shift_style);
                break;
-#endif /* !ALPHA && !MIPS && !SPARC && !SPARC64 && !HPPA */
-#if defined (SPARC) || defined (SPARC64)
-       case SYS_socketcall:
-               sparc_socket_decode (tcp);
-               break;
-#endif
+#endif /* !(ALPHA || MIPS || HPPA) */
 #endif /* LINUX */
 #ifdef SVR4
 #ifdef SYS_pgrpsys_subcall