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);