Do not use SYS_ipc and SYS_socketcall
* 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.
diff --git a/syscall.c b/syscall.c
index eaf0f45..bbd2e58 100644
--- a/syscall.c
+++ b/syscall.c
@@ -1733,19 +1733,28 @@
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 @@
break;
#endif
}
+#endif /* SVR4 || FREEBSD || SUNOS4 */
internal_syscall(tcp);