]> granicus.if.org Git - strace/commitdiff
Do not use SYS_ipc and SYS_socketcall
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Feb 2012 17:02:38 +0000 (17:02 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Feb 2012 17:02:38 +0000 (17:02 +0000)
* linux/dummy.h (sys_ipc, sys_socketcall): Remove redirections to
printargs.
* linux/ia64/syscallent.h: Likewise.
* linux/i386/syscallent.h: Remove native_scno initialization for "ipc"
and "socketcall".
* linux/syscall.h (sys_ipc, sys_socketcall): New prototypes.
(SYS_ipc, SYS_socketcall): Remove no longer used constants.
[IA64]: Remove undefining of ipc and socket SYS_* constants.
[SPARC || SPARC64]: Remove unused ipc SYS_* constants.
* ipc.c (sys_ipc): New function.
* sock.c (sys_socketcall): Likewise.
* syscall.c (trace_syscall_entering): Use sys_func to check for ipc and
socket subcalls.

ipc.c
linux/dummy.h
linux/i386/syscallent.h
linux/ia64/syscallent.h
linux/syscall.h
sock.c
syscall.c

diff --git a/ipc.c b/ipc.c
index bac99380e6e00bebad6bd06b303c5884f0cb08ee..c956b19a33f20b7f56b9e865b24a943afd83a262 100644 (file)
--- a/ipc.c
+++ b/ipc.c
@@ -560,3 +560,9 @@ sys_mq_getsetattr(struct tcb *tcp)
        return 0;
 }
 #endif
+
+int
+sys_ipc(struct tcb *tcp)
+{
+       return printargs(tcp);
+}
index e7ed992c0686c65f96f9b2db40c149afbcfa193f..0def94c4ae98baec17583405d9b2324cb18bb3af 100644 (file)
 #define        sys_timer_getoverrun    printargs
 #define        sys_vhangup             printargs
 
-/* subcall entry points */
-#define        sys_socketcall          printargs
-#define        sys_ipc                 printargs
-
 /* unimplemented */
 #define        sys_afs_syscall         printargs
 #define        sys_break               printargs
index 77543fe4ff878027771a0a3fb4f30e949b03b994..46d61f9bd50bc8126581fa3a7192bd85d4415033 100644 (file)
        { 2,    TF,     sys_statfs,             "statfs"        }, /* 99 */
        { 2,    TD,     sys_fstatfs,            "fstatfs"       }, /* 100 */
        { 3,    0,      sys_ioperm,             "ioperm"        }, /* 101 */
-       { 2,    TD,     sys_socketcall,         "socketcall", SYS_socketcall }, /* 102 */
+       { 2,    TD,     sys_socketcall,         "socketcall"    }, /* 102 */
        { 3,    0,      sys_syslog,             "syslog"        }, /* 103 */
        { 3,    0,      sys_setitimer,          "setitimer"     }, /* 104 */
        { 2,    0,      sys_getitimer,          "getitimer"     }, /* 105 */
        { 4,    TP,     sys_wait4,              "wait4",        }, /* 114 */
        { 1,    TF,     sys_swapoff,            "swapoff"       }, /* 115 */
        { 1,    0,      sys_sysinfo,            "sysinfo"       }, /* 116 */
-       { 6,    TI,     sys_ipc,                "ipc", SYS_ipc }, /* 117 */
+       { 6,    TI,     sys_ipc,                "ipc",          }, /* 117 */
        { 1,    TD,     sys_fsync,              "fsync"         }, /* 118 */
        { 0,    TS,     sys_sigreturn,          "sigreturn"     }, /* 119 */
        { 5,    TP,     sys_clone,              "clone", SYS_clone }, /* 120 */
index a588aed45122ef765970cc882ba3b3ea64159dfc..25f740293aacb529599205e00a25466ed84a0ab1 100644 (file)
@@ -80,7 +80,6 @@
 #define sys_statfs             printargs
 #define sys_fstatfs            printargs
 #define sys_ioperm             printargs
-#define sys_socketcall         printargs
 #define sys_setitimer          printargs
 #define sys_getitimer          printargs
 #define sys_stat               printargs
@@ -92,7 +91,6 @@
 #define sys_vm86old            printargs
 #define sys_wait4              printargs
 #define sys_sysinfo            printargs
-#define sys_ipc                        printargs
 #define sys_sigreturn          printargs
 #define sys_uname              printargs
 #define sys_modify_ldt         printargs
 #undef sys_statfs
 #undef sys_fstatfs
 #undef sys_ioperm
-#undef sys_socketcall
 #undef sys_setitimer
 #undef sys_getitimer
 #undef sys_stat
 #undef sys_vm86old
 #undef sys_wait4
 #undef sys_sysinfo
-#undef sys_ipc
 #undef sys_sigreturn
 #undef sys_uname
 #undef sys_modify_ldt
index f1833b88d3b7b6b4d04f820a5e811bd21158d620..de33c106b4073401c6538739b3d4d02529c58f4a 100644 (file)
@@ -122,6 +122,7 @@ int sys_io_getevents();
 int sys_io_setup();
 int sys_io_submit();
 int sys_ioctl();
+int sys_ipc();
 int sys_kill();
 int sys_link();
 int sys_linkat();
@@ -259,6 +260,7 @@ int sys_sigreturn();
 int sys_sigsetmask();
 int sys_sigsuspend();
 int sys_socket();
+int sys_socketcall();
 int sys_socketpair();
 int sys_splice();
 int sys_stat();
@@ -315,32 +317,6 @@ int sys_osf_wait4();
 
 #if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \
        !defined(__ARM_EABI__)
-# ifdef        IA64
-/*
- *  IA64 syscall numbers (the only ones available from standard header
- *  files) are disjoint from IA32 syscall numbers.  We need to define
- *  the IA32 socket call number here.
- */
-#  define SYS_socketcall       102
-
-#  undef SYS_socket
-#  undef SYS_bind
-#  undef SYS_connect
-#  undef SYS_listen
-#  undef SYS_accept
-#  undef SYS_getsockname
-#  undef SYS_getpeername
-#  undef SYS_socketpair
-#  undef SYS_send
-#  undef SYS_recv
-#  undef SYS_sendto
-#  undef SYS_recvfrom
-#  undef SYS_shutdown
-#  undef SYS_setsockopt
-#  undef SYS_getsockopt
-#  undef SYS_sendmsg
-#  undef SYS_recvmsg
-# endif /* IA64 */
 # if defined(SPARC) || defined(SPARC64)
 #  define SYS_socket_subcall   353
 # else
@@ -352,41 +328,10 @@ int sys_osf_wait4();
 
 #if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \
        !defined(__ARM_EABI__)
-# ifdef        IA64
-   /*
-    * IA64 syscall numbers (the only ones available from standard
-    * header files) are disjoint from IA32 syscall numbers.  We need
-    * to define the IA32 socket call number here.  Fortunately, this
-    * symbol, `SYS_ipc', is not used by any of the IA64 code so
-    * re-defining this symbol will not cause a problem.
-   */
-#  undef SYS_ipc
-#  define SYS_ipc              117
-#  undef SYS_semop
-#  undef SYS_semget
-#  undef SYS_semctl
-#  undef SYS_semtimedop
-#  undef SYS_msgsnd
-#  undef SYS_msgrcv
-#  undef SYS_msgget
-#  undef SYS_msgctl
-#  undef SYS_shmat
-#  undef SYS_shmdt
-#  undef SYS_shmget
-#  undef SYS_shmctl
-# endif /* IA64 */
 #define SYS_ipc_subcall                ((SYS_socket_subcall)+(SYS_socket_nsubcalls))
-
 #define SYS_ipc_nsubcalls      25
 #endif /* !(ALPHA || MIPS || HPPA) */
 
-#if defined SYS_ipc_subcall && !defined SYS_ipc
-# define SYS_ipc SYS_ipc_subcall
-#endif
-#if defined SYS_socket_subcall && !defined SYS_socketcall
-# define SYS_socketcall SYS_socket_subcall
-#endif
-
 #ifdef IA64
   /*
    * IA64 syscall numbers (the only ones available from standard header
@@ -434,19 +379,8 @@ int sys_semsys();
 int sys_shmsys();
 #define SYS_semsys_subcall     200
 #define SYS_semsys_nsubcalls   3
-#define SYS_semctl             (SYS_semsys_subcall + 0)
-#define SYS_semget             (SYS_semsys_subcall + 1)
-#define SYS_semop              (SYS_semsys_subcall + 2)
 #define SYS_msgsys_subcall     203
 #define SYS_msgsys_nsubcalls   4
-#define SYS_msgget             (SYS_msgsys_subcall + 0)
-#define SYS_msgctl             (SYS_msgsys_subcall + 1)
-#define SYS_msgrcv             (SYS_msgsys_subcall + 2)
-#define SYS_msgsnd             (SYS_msgsys_subcall + 3)
 #define SYS_shmsys_subcall     207
 #define SYS_shmsys_nsubcalls   4
-#define SYS_shmat              (SYS_shmsys_subcall + 0)
-#define SYS_shmctl             (SYS_shmsys_subcall + 1)
-#define SYS_shmdt              (SYS_shmsys_subcall + 2)
-#define SYS_shmget             (SYS_shmsys_subcall + 3)
 #endif
diff --git a/sock.c b/sock.c
index f48fd46ada099bf2773b8595bc9c424edf443165..d3a510a19544fc4f8a8d109ba125ccc88f468038 100644 (file)
--- a/sock.c
+++ b/sock.c
@@ -291,3 +291,9 @@ sock_ioctl(struct tcb *tcp, long code, long arg)
                return 0;
        }
 }
+
+int
+sys_socketcall(struct tcb *tcp)
+{
+       return printargs(tcp);
+}
index eaf0f45bc2593358aad479064ecd2169551651da..bbd2e583afc11ba705f35c7c4b41db237c8a02a7 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -1733,19 +1733,28 @@ trace_syscall_entering(struct tcb *tcp)
                goto ret;
        }
 
-       switch (known_scno(tcp)) {
+#if defined(SYS_socket_subcall) || defined(SYS_ipc_subcall)
+       while (SCNO_IN_RANGE(tcp->scno)) {
 #ifdef SYS_socket_subcall
-       case SYS_socketcall:
-               decode_subcall(tcp, SYS_socket_subcall,
-                       SYS_socket_nsubcalls, deref_style);
-               break;
+               if (sysent[tcp->scno].sys_func == sys_socketcall) {
+                       decode_subcall(tcp, SYS_socket_subcall,
+                               SYS_socket_nsubcalls, deref_style);
+                       break;
+               }
 #endif
 #ifdef SYS_ipc_subcall
-       case SYS_ipc:
-               decode_subcall(tcp, SYS_ipc_subcall,
-                       SYS_ipc_nsubcalls, shift_style);
-               break;
+               if (sysent[tcp->scno].sys_func == sys_ipc) {
+                       decode_subcall(tcp, SYS_ipc_subcall,
+                               SYS_ipc_nsubcalls, shift_style);
+                       break;
+               }
 #endif
+               break;
+       }
+#endif /* SYS_socket_subcall || SYS_ipc_subcall */
+
+#if defined(SVR4) || defined(FREEBSD) || defined(SUNOS4)
+       switch (known_scno(tcp)) {
 #ifdef SVR4
 #ifdef SYS_pgrpsys_subcall
        case SYS_pgrpsys:
@@ -1820,6 +1829,7 @@ trace_syscall_entering(struct tcb *tcp)
                break;
 #endif
        }
+#endif /* SVR4 || FREEBSD || SUNOS4 */
 
        internal_syscall(tcp);