Merge Harald Böhme's solaris patches
diff --git a/configure.in b/configure.in
index 8f60482..a7916b2 100644
--- a/configure.in
+++ b/configure.in
@@ -152,7 +152,7 @@
 AC_CHECK_LIB(nsl, main)
 fi
 AC_CHECK_FUNCS(sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl putpmsg prctl sendmsg inet_ntop if_indextoname)
-AC_CHECK_HEADERS(sys/reg.h sys/filio.h sys/acl.h sys/asynch.h sys/door.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h linux/ptrace.h asm/reg.h linux/icmp.h linux/in6.h sys/uio.h linux/netlink.h linux/if_packet.h sys/poll.h sys/vfs.h netinet/tcp.h netinet/udp.h)
+AC_CHECK_HEADERS(sys/reg.h sys/filio.h sys/acl.h sys/asynch.h sys/door.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h linux/ptrace.h asm/reg.h linux/icmp.h linux/in6.h sys/uio.h sys/aio.h linux/netlink.h linux/if_packet.h sys/poll.h sys/vfs.h netinet/tcp.h netinet/udp.h)
 AC_DECL_SYS_ERRLIST
 AC_DECL_SYS_SIGLIST
 AC_DECL__SYS_SIGLIST
diff --git a/defs.h b/defs.h
index 12d7193..ba65f84 100644
--- a/defs.h
+++ b/defs.h
@@ -496,3 +496,15 @@
 extern char *signalent2[];
 extern int nsignals2;
 #endif /* SUPPORTED_PERSONALITIES >= 3 */
+
+#if _LFS64_LARGEFILE
+/* _l refers to the lower numbered u_arg,
+ * _h refers to the higher numbered u_arg
+ */
+#if _LITTLE_ENDIAN || I386	/* FIXME! */
+#define get64(_l,_h) ((long long)((unsigned long long)(_l) | ((unsigned long long)(_h)<<32)))
+#else
+#define get64(_l,_h) ((long long)((unsigned long long)(_h) | ((unsigned long long)(_l)<<32)))
+#endif
+#endif
+
diff --git a/desc.c b/desc.c
index 539af8e..e1c43fb 100644
--- a/desc.c
+++ b/desc.c
@@ -64,6 +64,72 @@
 #ifdef F_GETSIG
 	{ F_GETSIG,	"F_GETSIG"	},
 #endif
+#ifdef F_CHKFL
+	{ F_CHKFL,	"F_CHKFL"	},
+#endif
+#ifdef F_DUP2FD
+	{ F_DUP2FD,	"F_DUP2FD"	},
+#endif
+#ifdef F_ALLOCSP
+	{ F_ALLOCSP,	"F_ALLOCSP"	},
+#endif
+#ifdef F_ISSTREAM
+	{ F_ISSTREAM,	"F_ISSTREAM"	},
+#endif
+#ifdef F_PRIV
+	{ F_PRIV,	"F_PRIV"	},
+#endif
+#ifdef F_NPRIV
+	{ F_NPRIV,	"F_NPRIV"	},
+#endif
+#ifdef F_QUOTACL
+	{ F_QUOTACL,	"F_QUOTACL"	},
+#endif
+#ifdef F_BLOCKS
+	{ F_BLOCKS,	"F_BLOCKS"	},
+#endif
+#ifdef F_BLKSIZE
+	{ F_BLKSIZE,	"F_BLKSIZE"	},
+#endif
+#ifdef F_GETOWN
+	{ F_GETOWN,	"F_GETOWN"	},
+#endif
+#ifdef F_SETOWN
+	{ F_SETOWN,	"F_SETOWN"	},
+#endif
+#ifdef F_REVOKE
+	{ F_REVOKE,	"F_REVOKE"	},
+#endif
+#ifdef F_SETLK
+	{ F_SETLK,	"F_SETLK"	},
+#endif
+#ifdef F_SETLKW
+	{ F_SETLKW,	"F_SETLKW"	},
+#endif
+#ifdef F_FREESP
+	{ F_FREESP,	"F_FREESP"	},
+#endif
+#ifdef F_GETLK
+	{ F_GETLK,	"F_GETLK"	},
+#endif
+#ifdef F_SETLK64
+	{ F_SETLK64,	"F_SETLK64"	},
+#endif
+#ifdef F_SETLKW64
+	{ F_SETLKW64,	"F_SETLKW64"	},
+#endif
+#ifdef F_FREESP64
+	{ F_FREESP64,	"F_FREESP64"	},
+#endif
+#ifdef F_GETLK64
+	{ F_GETLK64,	"F_GETLK64"	},
+#endif
+#ifdef F_SHARE
+	{ F_SHARE,	"F_SHARE"	},
+#endif
+#ifdef F_UNSHARE
+	{ F_UNSHARE,	"F_UNSHARE"	},
+#endif
 	{ 0,		NULL		},
 };
 
@@ -130,6 +196,32 @@
 		tprintf("}");
 }
 
+#if _LFS64_LARGEFILE
+/* fcntl/lockf */
+static void
+printflock64(tcp, addr, getlk)
+struct tcb *tcp;
+int addr;
+int getlk;
+{
+	struct flock64 fl;
+
+	if (umove(tcp, addr, &fl) < 0) {
+		tprintf("{...}");
+		return;
+	}
+	tprintf("{type=");
+	printxval(lockfcmds, fl.l_type, "F_???");
+	tprintf(", whence=");
+	printxval(whence, fl.l_whence, "SEEK_???");
+	tprintf(", start=%lld, len=%lld", fl.l_start, fl.l_len);
+	if (getlk)
+		tprintf(", pid=%lu}", (unsigned long) fl.l_pid);
+	else
+		tprintf("}");
+}
+#endif
+
 static char *
 sprintflags(xlat, flags)
 struct xlat *xlat;
@@ -178,10 +270,29 @@
 				tprintf("0");
 			break;
 		case F_SETLK: case F_SETLKW:
+#ifdef F_FREESP
+		case F_FREESP:
+#endif
 			tprintf(", ");
 			printflock(tcp, tcp->u_arg[2], 0);
 			break;
-		}
+#if _LFS64_LARGEFILE
+#ifdef F_FREESP64
+		case F_FREESP64:
+#endif
+		/* Linux glibc defines SETLK64 as SETLK, 
+		   even though the kernel has different values - as does Solaris. */
+#if defined(F_SETLK64) && F_SETLK64+0!=F_SETLK
+		case F_SETLK64:
+#endif
+#if defined(F_SETLKW64) && F_SETLKW64+0!=F_SETLKW
+		case F_SETLKW64:
+#endif
+			tprintf(", ");
+			printflock64(tcp, tcp->u_arg[2], 0);
+			break;
+#endif
+ 		}
 	}
 	else {
 		switch (tcp->u_arg[1]) {
@@ -202,7 +313,15 @@
 			tprintf(", ");
 			printflock(tcp, tcp->u_arg[2], 1);
 			break;
-		default:
+#if _LFS64_LARGEFILE
+#if defined(F_GETLK64) && F_GETLK64+0!=F_GETLK
+		case F_GETLK64:
+#endif
+			tprintf(", ");
+			printflock64(tcp, tcp->u_arg[2], 1);
+			break;
+#endif
+ 		default:
 			tprintf(", %#lx", tcp->u_arg[2]);
 			break;
 		}
diff --git a/file.c b/file.c
index 50fdd4a..3ec97e3 100644
--- a/file.c
+++ b/file.c
@@ -411,6 +411,23 @@
 }
 #endif
 
+#if _LFS_LARGEFILE
+int
+sys_lseek64 (tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+		long long offset = get64(tcp->u_arg [1], tcp->u_arg[2]);
+		if (tcp->u_arg[3] == SEEK_SET)
+			tprintf("%ld, %llu, ", tcp->u_arg[0], offset);
+		else
+			tprintf("%ld, %lld, ", tcp->u_arg[0], offset);
+		printxval(whence, tcp->u_arg[3], "SEEK_???");
+	}
+	return RVAL_LUDECIMAL;
+}
+#endif
+
 int
 sys_truncate(tcp)
 struct tcb *tcp;
@@ -1787,6 +1804,75 @@
 	return 0;
 }
 
+
+#if _LFS64_LARGEFILE
+int
+sys_getdents64(tcp)
+struct tcb *tcp;
+{
+	int i, len, dents = 0;
+	char *buf;
+
+	if (entering(tcp)) {
+		tprintf("%lu, ", tcp->u_arg[0]);
+		return 0;
+	}
+	if (syserror(tcp) || !verbose(tcp)) {
+		tprintf("%#lx, %lu", tcp->u_arg[1], tcp->u_arg[2]);
+		return 0;
+	}
+	len = tcp->u_rval;
+	if ((buf = malloc(len)) == NULL) {
+		tprintf("out of memory\n");
+		return 0;
+	}
+	if (umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
+		tprintf("{...}, %lu", tcp->u_arg[2]);
+		free(buf);
+		return 0;
+	}
+	if (!abbrev(tcp))
+		tprintf("{");
+	for (i = 0; i < len;) {
+		struct dirent64 *d = (struct dirent64 *) &buf[i];
+#ifdef linux
+		if (!abbrev(tcp)) {
+			tprintf("%s{d_ino=%lu, d_off=%lu, ",
+				i ? " " : "", d->d_ino, d->d_off);
+			tprintf("d_reclen=%u, d_name=\"%s\"}",
+				d->d_reclen, d->d_name);
+		}
+#endif /* linux */
+#ifdef SVR4
+		if (!abbrev(tcp)) {
+			tprintf("%s{d_ino=%llu, d_off=%llu, ",
+				i ? " " : "", d->d_ino, d->d_off);
+			tprintf("d_reclen=%u, d_name=\"%s\"}",
+				d->d_reclen, d->d_name);
+		}
+#endif /* SVR4 */
+#ifdef SUNOS4
+		if (!abbrev(tcp)) {
+			tprintf("%s{d_off=%lu, d_fileno=%lu, d_reclen=%u, ",
+				i ? " " : "", d->d_off, d->d_fileno,
+				d->d_reclen);
+			tprintf("d_namlen=%u, d_name=\"%.*s\"}",
+				d->d_namlen, d->d_namlen, d->d_name);
+		}
+#endif /* SUNOS4 */
+		i += d->d_reclen;
+		dents++;
+	}
+	if (!abbrev(tcp))
+		tprintf("}");
+	else
+		tprintf("/* %u entries */", dents);
+	tprintf(", %lu", tcp->u_arg[2]);
+	free(buf);
+	return 0;
+}
+#endif
+ 
 #ifdef FREEBSD
 int
 sys_getdirentries(tcp)
@@ -1955,20 +2041,3 @@
 }
 
 #endif /* HAVE_SYS_ASYNCH_H */
-
-#if UNIXWARE >= 7
-int
-sys_lseek64 (tcp)
-struct tcb *tcp;
-{
-	if (entering(tcp)) {
-		long long offset = * (long long *) & tcp->u_arg [1];
-		if (tcp->u_arg[3] == SEEK_SET)
-			tprintf("%ld, %llu, ", tcp->u_arg[0], offset);
-		else
-			tprintf("%ld, %lld, ", tcp->u_arg[0], offset);
-		printxval(whence, tcp->u_arg[3], "SEEK_???");
-	}
-	return RVAL_LDECIMAL;
-}
-#endif
diff --git a/io.c b/io.c
index a819c11..0fe8c3d 100644
--- a/io.c
+++ b/io.c
@@ -279,6 +279,36 @@
 
 #endif /* LINUX */
 
+#if _LFS64_LARGEFILE
+int
+sys_pread64(tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+		tprintf("%ld, ", tcp->u_arg[0]);
+	} else {
+		if (syserror(tcp))
+			tprintf("%#lx", tcp->u_arg[1]);
+		else
+			printstr(tcp, tcp->u_arg[1], tcp->u_rval);
+		tprintf(", %lu, %#llx", tcp->u_arg[2], get64(tcp->u_arg[3], tcp->u_arg[4]));
+	}
+	return 0;
+}
+
+int
+sys_pwrite64(tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+		tprintf("%ld, ", tcp->u_arg[0]);
+		printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+		tprintf(", %lu, %#llx", tcp->u_arg[2], get64(tcp->u_arg[3], tcp->u_arg[4]));
+	}
+	return 0;
+}
+#endif
+ 
 int
 sys_ioctl(tcp)
 struct tcb *tcp;
diff --git a/mem.c b/mem.c
index 0d72870..ec9b441 100644
--- a/mem.c
+++ b/mem.c
@@ -224,6 +224,50 @@
     return print_mmap(tcp, tcp->u_arg);
 }
 
+#if _LFS64_LARGEFILE
+int
+sys_mmap64(tcp)
+struct tcb *tcp;
+{
+#ifdef linux
+#ifdef ALPHA
+	long *u_arg = tcp->u_arg;
+#else /* !ALPHA */
+	long u_arg[7];
+#endif /* !ALPHA */
+#else /* !linux */
+	long *u_arg = tcp->u_arg;
+#endif /* !linux */
+
+	if (entering(tcp)) {
+#ifdef linux
+#ifndef ALPHA
+		if (umoven(tcp, tcp->u_arg[0], sizeof u_arg,
+				(char *) u_arg) == -1)
+			return 0;
+#endif /* ALPHA */
+#endif /* linux */
+
+		/* addr */
+		tprintf("%#lx, ", u_arg[0]);
+		/* len */
+		tprintf("%lu, ", u_arg[1]);
+		/* prot */
+		printflags(mmap_prot, u_arg[2]);
+		tprintf(", ");
+		/* flags */
+		printxval(mmap_flags, u_arg[3] & MAP_TYPE, "MAP_???");
+		addflags(mmap_flags, u_arg[3] & ~MAP_TYPE);
+		/* fd */
+		tprintf(", %ld, ", u_arg[4]);
+		/* offset */
+		tprintf("%#llx", get64(u_arg[5], u_arg[6]));
+	}
+	return RVAL_HEX;
+}
+#endif
+
+ 
 int
 sys_munmap(tcp)
 struct tcb *tcp;
diff --git a/net.c b/net.c
index 0c123e7..082197d 100644
--- a/net.c
+++ b/net.c
@@ -807,6 +807,33 @@
 }
 
 int
+sys_so_socket(tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+		/* not sure really what these args are... but this
+		 * is how truss prints it
+		 */
+		tprintf("%ld, %ld, %ld, ",
+		  tcp->u_arg[0], tcp->u_arg[1], tcp->u_arg[2]);
+		printpath(tcp, tcp->u_arg[3]);
+		tprintf(", %ld", tcp->u_arg[4]);
+	}
+	return 0;
+}
+
+int
+sys_so_socketpair(tcp)
+struct tcb *tcp;
+{
+	if (entering(tcp)) {
+	  	/* not sure what this arg is */
+		tprintf("0x%lx", tcp->u_arg[0]);
+	}
+	return 0;
+}
+
+int
 sys_bind(tcp)
 struct tcb *tcp;
 {
diff --git a/resource.c b/resource.c
index be776ce..833e0f6 100644
--- a/resource.c
+++ b/resource.c
@@ -142,6 +142,67 @@
 	return 0;
 }
 
+#if _LFS64_LARGEFILE
+static char *
+sprintrlim64(lim)
+rlim64_t lim;
+{
+	static char buf[64];
+
+	if (lim == RLIM64_INFINITY)
+		sprintf(buf, "RLIM64_INFINITY");
+	else if (lim > 1024 && lim%1024 == 0)
+		sprintf(buf, "%lld*1024", lim/1024);
+	else
+		sprintf(buf, "%lld", lim);
+	return buf;
+}
+
+int
+sys_getrlimit64(tcp)
+struct tcb *tcp;
+{
+	struct rlimit64 rlim;
+
+	if (entering(tcp)) {
+		printxval(resources, tcp->u_arg[0], "RLIMIT_???");
+		tprintf(", ");
+	}
+	else {
+		if (syserror(tcp) || !verbose(tcp))
+			tprintf("%#lx", tcp->u_arg[1]);
+		else if (umove(tcp, tcp->u_arg[1], &rlim) < 0)
+			tprintf("{...}");
+		else {
+			tprintf("{rlim_cur=%s,", sprintrlim64(rlim.rlim_cur));
+			tprintf(" rlim_max=%s}", sprintrlim64(rlim.rlim_max));
+		}
+	}
+	return 0;
+}
+
+int
+sys_setrlimit64(tcp)
+struct tcb *tcp;
+{
+	struct rlimit64 rlim;
+
+	if (entering(tcp)) {
+		printxval(resources, tcp->u_arg[0], "RLIMIT_???");
+		tprintf(", ");
+		if (!verbose(tcp))
+			tprintf("%#lx", tcp->u_arg[1]);
+		else if (umove(tcp, tcp->u_arg[1], &rlim) < 0)
+			tprintf("{...}");
+		else {
+			tprintf("{rlim_cur=%s,", sprintrlim64(rlim.rlim_cur));
+			tprintf(" rlim_max=%s}", sprintrlim64(rlim.rlim_max));
+		}
+	}
+	return 0;
+}
+#endif
+
 #ifndef SVR4
 
 static struct xlat usagewho[] = {
diff --git a/signal.c b/signal.c
index 9f5d18a..fd16b1f 100644
--- a/signal.c
+++ b/signal.c
@@ -316,7 +316,18 @@
 	*s++ = '[';
 	for (i = 1; i < maxsigs; i++) {
 		if (sigismember(mask, i) == 1) {
-			sprintf(s, format, signame(i) + 3); s += strlen(s);
+			/* real-time signals on solaris don't have
+			 * signalent entries
+			 */
+			if (i < nsignals) {
+				sprintf(s, format, signalent[i] + 3);
+			}
+			else {
+				char tsig[32];
+				sprintf(tsig, "%u", i);
+				sprintf(s, format, tsig);
+			}
+			s += strlen(s);
 			format = " %s";
 		}
 	}
diff --git a/svr4/dummy.h b/svr4/dummy.h
index 85d805b..86fed56 100644
--- a/svr4/dummy.h
+++ b/svr4/dummy.h
@@ -58,6 +58,7 @@
 #define sys_priocntl printargs
 #define sys_ksigqueue printargs
 #define sys_lwp_sema_wait printargs
+#define sys_lwp_sema_trywait printargs
 #define sys_memcntl printargs
 #define sys_syscall printargs
 #define sys_clocal printargs
@@ -108,7 +109,9 @@
 #define sys_lwp_cond_wait printargs
 #define sys_lwp_cond_signal printargs
 #define sys_lwp_cond_broadcast printargs
+#if !_LFS64_LARGEFILE
 #define sys_llseek printargs
+#endif
 #define sys_inst_sync printargs
 #define sys_auditsys printargs
 #define sys_processor_bind printargs
@@ -183,16 +186,6 @@
 #define sys_priocntllst printargs
 #define sys_lwp_sema_trywait printargs
 #define sys_xsetsockaddr printargs
-#define sys_fstatvfs64 printargs
-#define sys_statvfs64 printargs
-#define sys_ftruncate64 printargs
-#define sys_truncate64 printargs
-#define sys_getrlimit64 printargs
-#define sys_setrlimit64 printargs
-#define sys_mmap64 printargs
-#define sys_pread64 printargs
-#define sys_pwrite64 printargs
-#define sys_creat64 printargs
 #define sys_dshmsys printargs
 #define sys_invlpg printargs
 #define sys_rfork1 printargs
@@ -202,6 +195,25 @@
 #define sys_kill3 printargs
 #define sys_ssisys printargs
 #define sys_xbindresvport printargs
+#define sys_lwp_sema_trywait printargs
+#define sys_tsolsys printargs
+#ifndef HAVE_SYS_ACL_H
+#define sys_acl printargs
+#define sys_facl printargs
+#define sys_aclipc printargs
+#endif
+#define sys_install_utrap printargs
+#define sys_signotify printargs
+#define sys_schedctl printargs
+#define sys_pset printargs
+#define sys_resolvepath printargs
+#define sys_signotifywait printargs
+#define sys_lwp_sigredirect printargs
+#define sys_lwp_alarm printargs
+#define sys_rpcsys printargs
+#define sys_sockconfig printargs
+#define sys_ntp_gettime printargs
+#define sys_ntp_adjtime printargs
 
 /* like another call */
 #define sys_lchown sys_chown
@@ -227,6 +239,51 @@
 #define sys_fork1 sys_fork
 #define sys_forkall sys_fork
 
+/* aio */
+#define sys_aionotify printargs
+#define sys_aioinit printargs
+#define sys_aiostart printargs
+#define sys_aiolio printargs
+#define sys_aiosuspend printargs
+#define sys_aioerror printargs
+#define sys_aioliowait printargs
+#define sys_aioaread printargs
+#define sys_aioawrite printargs
+#define sys_aiolio64 printargs
+#define sys_aiosuspend64 printargs
+#define sys_aioerror64 printargs
+#define sys_aioliowait64 printargs
+#define sys_aioaread64 printargs
+#define sys_aioaread64 printargs
+#define sys_aioawrite64 printargs
+#define sys_aiocancel64 printargs
+#define sys_aiofsync printargs
+
+/* the various 64-bit file stuff */
+#if !_LFS64_LARGEFILE
+/* we've implemented these */
+#define sys_getdents64 printargs
+#define sys_mmap64 printargs
+#define sys_stat64 printargs
+#define sys_lstat64 printargs
+#define sys_fstat64 printargs
+#define sys_setrlimit64 printargs
+#define sys_getrlimit64 printargs
+#define sys_pread64 printargs
+#define sys_pwrite64 printargs
+#endif
+
+/* unimplemented 64-bit stuff */
+#define sys_statvfs64 printargs
+#define sys_fstatvfs64 printargs
+#define sys_ftruncate64 printargs
+#define sys_truncate64 printargs
+
+/* like another call */
+#define sys_creat64 sys_creat
+#define sys_open64 sys_open
+#define sys_llseek sys_lseek64
+
 /* printargs does the right thing */
 #define sys_sync printargs
 #define sys_profil printargs
@@ -245,6 +302,7 @@
 #define sys_spcall printargs
 #define sys_context printargs
 #define sys_door printargs
+#define sys_kaio printargs
 
 #if DONE
 #define sys_mount printargs
diff --git a/svr4/syscall.h b/svr4/syscall.h
index 6459932..f0c5d9c 100644
--- a/svr4/syscall.h
+++ b/svr4/syscall.h
@@ -106,27 +106,28 @@
 extern int sys_putmsg();
 extern int sys_poll();
 extern int sys_dup2();
-#ifdef MIPS
-extern int sys_sigreturn();
-extern int sys_accept();
 extern int sys_bind();
+extern int sys_listen();
+extern int sys_accept();
 extern int sys_connect();
-extern int sys_gethostid();
+extern int sys_shutdown();
+extern int sys_recv();
+extern int sys_recvfrom();
+extern int sys_send();
+extern int sys_sendto();
 extern int sys_getpeername();
 extern int sys_getsockname();
 extern int sys_getsockopt();
-extern int sys_listen();
-extern int sys_recv();
-extern int sys_recvfrom();
+extern int sys_setsockopt();
+#ifdef MIPS
+extern int sys_sigreturn();
+extern int sys_gethostid();
 extern int sys_recvmsg();
 extern int sys_select();
-extern int sys_send();
 extern int sys_sendmsg();
-extern int sys_sendto();
 extern int sys_sethostid();
-extern int sys_setsockopt();
-extern int sys_shutdown();
 extern int sys_socket();
+extern int sys_listen();
 extern int sys_gethostname();
 extern int sys_sethostname();
 extern int sys_getdomainname();
@@ -278,7 +279,6 @@
 extern int sys_lwp_cond_broadcast();
 extern int sys_pread();
 extern int sys_pwrite();
-extern int sys_llseek();
 extern int sys_inst_sync();
 extern int sys_auditsys();
 extern int sys_processor_bind();
@@ -294,6 +294,8 @@
 extern int sys_timer_gettime();
 extern int sys_timer_getoverrun();
 extern int sys_nanosleep();
+extern int sys_setreuid();
+extern int sys_setregid();
 #ifdef HAVE_SYS_ACL_H
 extern int sys_acl();
 extern int sys_facl();
@@ -460,6 +462,33 @@
 
 #endif /* !MIPS */
 
+
+#ifdef HAVE_SYS_AIO_H
+extern int sys_aioread();
+extern int sys_aiowrite();
+extern int sys_aiowait();
+extern int sys_aiocancel();
+#endif /* HAVE_SYS_AIO_H */
+
+/* 64-bit file stuff */
+
+#if _LFS64_LARGEFILE
+extern int sys_getdents64();
+extern int sys_mmap64();
+extern int sys_stat64();
+extern int sys_lstat64();
+extern int sys_fstat64();
+extern int sys_setrlimit64();
+extern int sys_getrlimit64();
+extern int sys_pread64();
+extern int sys_pwrite64();
+extern int sys_lseek64();
+#endif
+
+/* solaris 2.6 stuff */
+extern int sys_so_socket();
+extern int sys_so_socketpair();
+
 #ifdef HAVE_SYS_DOOR_H
 
 #define SYS_door_subcall	390 + SGI_KLUDGE
@@ -473,3 +502,32 @@
 #define SYS_door_nsubcalls	6
 
 #endif /* HAVE_SYS_DOOR_H */
+
+#ifdef HAVE_SYS_AIO_H
+
+#define SYS_kaio_subcall	400 + SGI_KLUDGE
+#define SYS_aioread		(SYS_kaio_subcall + 0)
+#define SYS_aiowrite		(SYS_kaio_subcall + 1)
+#define SYS_aiowait		(SYS_kaio_subcall + 2)
+#define SYS_aiocancel		(SYS_kaio_subcall + 3)
+#define SYS_aionotify		(SYS_kaio_subcall + 4)
+#define SYS_aioinit		(SYS_kaio_subcall + 5)
+#define SYS_aiostart		(SYS_kaio_subcall + 6)
+#define SYS_aiolio		(SYS_kaio_subcall + 7)
+#define SYS_aiosuspend		(SYS_kaio_subcall + 8)
+#define SYS_aioerror		(SYS_kaio_subcall + 9)
+#define SYS_aioliowait		(SYS_kaio_subcall + 10)
+#define SYS_aioaread		(SYS_kaio_subcall + 11)
+#define SYS_aioawrite		(SYS_kaio_subcall + 12)
+#define SYS_aiolio64		(SYS_kaio_subcall + 13)
+#define SYS_aiosuspend64	(SYS_kaio_subcall + 14)
+#define SYS_aioerror64		(SYS_kaio_subcall + 15)
+#define SYS_aioliowait64	(SYS_kaio_subcall + 16)
+#define SYS_aioaread64		(SYS_kaio_subcall + 17)
+#define SYS_aioawrite64		(SYS_kaio_subcall + 18)
+#define SYS_aiocancel64		(SYS_kaio_subcall + 19)
+#define SYS_aiofsync		(SYS_kaio_subcall + 20)
+
+#define SYS_kaio_nsubcalls	21
+
+#endif /* HAVE_SYS_AIO_H */
diff --git a/svr4/syscallent.h b/svr4/syscallent.h
index a537a35..4f85238 100644
--- a/svr4/syscallent.h
+++ b/svr4/syscallent.h
@@ -302,6 +302,11 @@
 	{ -1,	0,	printargs,		"SYS_248"	}, /* 248 */
 	{ -1,	0,	printargs,		"SYS_249"	}, /* 249 */
 	{ -1,	0,	printargs,		"SYS_250"	}, /* 250 */
+	{ -1,	0,	printargs,		"SYS_251"	}, /* 251 */
+	{ -1,	0,	printargs,		"SYS_252"	}, /* 252 */
+	{ -1,	0,	printargs,		"SYS_253"	}, /* 253 */
+	{ -1,	0,	printargs,		"SYS_254"	}, /* 254 */
+	{ -1,	0,	printargs,		"SYS_255"	}, /* 255 */
 #else /* !MIPS */
 	{ -1,	TF,	sys_lstat,		"lstat"		}, /* 88 */
 	{ -1,	TF,	sys_symlink,		"symlink"	}, /* 89 */
@@ -430,89 +435,6 @@
 	{ -1,	0,	sys_lwp_sema_wait,	"lwp_sema_wait"	}, /* 207 */
 	{ -1,	0,	sys_lwp_sema_post,	"lwp_sema_post"	}, /* 208 */
 	{ -1,	0,	sys_lwp_sema_trywait,	"lwp_sema_trywait"}, /* 209 */
-#else
-	{ -1,	0,	sys_seteuid,		"seteuid"	}, /* 141 */
-	{ -1,	0,	sys_vtrace,		"vtrace"	}, /* 142 */
-	{ -1,	TP,	sys_fork1,		"fork1"		}, /* 143 */
-	{ -1,	TS,	sys_sigtimedwait,	"sigtimedwait"	}, /* 144 */
-	{ -1,	0,	sys_lwp_info,		"lwp_info"	}, /* 145 */
-	{ -1,	0,	sys_yield,		"yield"		}, /* 146 */
-	{ -1,	0,	sys_lwp_sema_wait,	"lwp_sema_wait"	}, /* 147 */
-	{ -1,	0,	sys_lwp_sema_post,	"lwp_sema_post"	}, /* 148 */
-	{ -1,	0,	printargs,		"SYS_149"	}, /* 149 */
-	{ -1,	0,	printargs,		"SYS_150"	}, /* 150 */
-	{ -1,	0,	printargs,		"SYS_151"	}, /* 151 */
-	{ -1,	0,	sys_modctl,		"modctl"	}, /* 152 */
-	{ -1,	0,	sys_fchroot,		"fchroot"	}, /* 153 */
-	{ -1,	TF,	sys_utimes,		"utimes"	}, /* 154 */
-	{ -1,	0,	sys_vhangup,		"vhangup"	}, /* 155 */
-	{ -1,	0,	sys_gettimeofday,	"gettimeofday"	}, /* 156 */
-	{ -1,	0,	sys_getitimer,		"getitimer"	}, /* 157 */
-	{ -1,	0,	sys_setitimer,		"setitimer"	}, /* 158 */
-	{ -1,	0,	sys_lwp_create,		"lwp_create"	}, /* 159 */
-	{ -1,	0,	sys_lwp_exit,		"lwp_exit"	}, /* 160 */
-	{ -1,	0,	sys_lwp_suspend,	"lwp_suspend"	}, /* 161 */
-	{ -1,	0,	sys_lwp_continue,	"lwp_continue"	}, /* 162 */
-	{ -1,	0,	sys_lwp_kill,		"lwp_kill"	}, /* 163 */
-	{ -1,	0,	sys_lwp_self,		"lwp_self"	}, /* 164 */
-	{ -1,	0,	sys_lwp_setprivate,	"lwp_setprivate"}, /* 165 */
-	{ -1,	0,	sys_lwp_getprivate,	"lwp_getprivate"}, /* 166 */
-	{ -1,	0,	sys_lwp_wait,		"lwp_wait"	}, /* 167 */
-	{ -1,	0,	sys_lwp_mutex_unlock,	"lwp_mutex_unlock"}, /* 168 */
-	{ -1,	0,	sys_lwp_mutex_lock,	"lwp_mutex_lock"}, /* 169 */
-	{ -1,	0,	sys_lwp_cond_wait,	"lwp_cond_wait"}, /* 170 */
-	{ -1,	0,	sys_lwp_cond_signal,	"lwp_cond_signal"}, /* 171 */
-	{ -1,	0,	sys_lwp_cond_broadcast,	"lwp_cond_broadcast"}, /* 172 */
-	{ -1,	0,	sys_pread,		"pread"		}, /* 173 */
-	{ -1,	0,	sys_pwrite,		"pwrite"	}, /* 174 */
-	{ -1,	0,	sys_llseek,		"llseek"	}, /* 175 */
-	{ -1,	0,	sys_inst_sync,		"inst_sync"	}, /* 176 */
-	{ -1,	0,	printargs,		"SYS_177"	}, /* 177 */
-	{ -1,	0,	printargs,		"SYS_178"	}, /* 178 */
-	{ -1,	0,	printargs,		"SYS_179"	}, /* 179 */
-	{ -1,	0,	printargs,		"SYS_180"	}, /* 180 */
-	{ -1,	0,	printargs,		"SYS_181"	}, /* 181 */
-	{ -1,	0,	printargs,		"SYS_182"	}, /* 182 */
-	{ -1,	0,	printargs,		"SYS_183"	}, /* 183 */
-	{ -1,	0,	printargs,		"SYS_184"	}, /* 184 */
-#ifdef HAVE_SYS_ACL_H
-	{ -1,	TF,	sys_acl,		"acl"		}, /* 185 */
-#else
-	{ -1,	0,	printargs,		"SYS_185"	}, /* 185 */
-#endif
-	{ -1,	0,	sys_auditsys,		"auditsys"	}, /* 186 */
-	{ -1,	0,	sys_processor_bind,	"processor_bind"}, /* 187 */
-	{ -1,	0,	sys_processor_info,	"processor_info"}, /* 188 */
-	{ -1,	0,	sys_p_online,		"p_online"	}, /* 189 */
-	{ -1,	0,	sys_sigqueue,		"sigqueue"	}, /* 190 */
-	{ -1,	0,	sys_clock_gettime,	"clock_gettime"	}, /* 191 */
-	{ -1,	0,	sys_clock_settime,	"clock_settime"	}, /* 192 */
-	{ -1,	0,	sys_clock_getres,	"clock_getres"	}, /* 193 */
-	{ -1,	0,	sys_timer_create,	"timer_create"	}, /* 194 */
-	{ -1,	0,	sys_timer_delete,	"timer_delete"	}, /* 195 */
-	{ -1,	0,	sys_timer_settime,	"timer_settime"	}, /* 196 */
-	{ -1,	0,	sys_timer_gettime,	"timer_gettime"	}, /* 197 */
-	{ -1,	0,	sys_timer_getoverrun,	"timer_getoverrun"}, /* 198 */
-	{ -1,	0,	sys_nanosleep,		"nanosleep"	}, /* 199 */
-#ifdef HAVE_SYS_ACL_H
-	{ -1,	0,	sys_facl,		"facl"		}, /* 200 */
-#else
-	{ -1,	0,	printargs,		"SYS_200"	}, /* 200 */
-#endif
-#ifdef HAVE_SYS_DOOR_H
-	{ -1,	0,	sys_door,		"door"		}, /* 201 */
-#else
-	{ -1,	0,	printargs,		"SYS_201"	}, /* 201 */
-#endif
-	{ -1,	0,	sys_setreuid,		"setreuid"	}, /* 202 */
-	{ -1,	0,	sys_setregid,		"setregid"	}, /* 203 */
-	{ -1,	0,	printargs,		"SYS_204"	}, /* 204 */
-	{ -1,	0,	printargs,		"SYS_205"	}, /* 205 */
-	{ -1,	0,	printargs,		"SYS_206"	}, /* 206 */
-	{ -1,	0,	printargs,		"SYS_207"	}, /* 207 */
-	{ -1,	0,	printargs,		"SYS_208"	}, /* 208 */
-	{ -1,	0,	printargs,		"SYS_209"	}, /* 209 */
-#endif
 	{ -1,	0,	printargs,		"SYS_210"	}, /* 210 */
 	{ -1,	0,	printargs,		"SYS_211"	}, /* 211 */
 	{ -1,	0,	printargs,		"SYS_212"	}, /* 212 */
@@ -553,7 +475,7 @@
 	{ -1,	TN,	sys_xshutdown,		"xshutdown"	}, /* 246 */
 	{ -1,	TN,	sys_xsocket,		"xsocket"	}, /* 247 */
 	{ -1,	TN,	sys_xsocketpair,	"xsocketpair"	}, /* 248 */
-#else
+#else	/* UNIXWARE 2 */
 	{ -1,	0,	printargs,		"SYS_216"	}, /* 216 */
 	{ -1,	0,	printargs,		"SYS_217"	}, /* 217 */
 	{ -1,	0,	printargs,		"SYS_218"	}, /* 218 */
@@ -587,15 +509,145 @@
 	{ -1,	0,	printargs,		"SYS_246"	}, /* 246 */
 	{ -1,	0,	printargs,		"SYS_247"	}, /* 247 */
 	{ -1,	0,	printargs,		"SYS_248"	}, /* 248 */
-#endif
+#endif	/* UNIXWARE 2 */
 	{ -1,	0,	printargs,		"SYS_249"	}, /* 249 */
 	{ -1,	0,	printargs,		"SYS_250"	}, /* 250 */
-#endif /* !MIPS */
 	{ -1,	0,	printargs,		"SYS_251"	}, /* 251 */
 	{ -1,	0,	printargs,		"SYS_252"	}, /* 252 */
 	{ -1,	0,	printargs,		"SYS_253"	}, /* 253 */
 	{ -1,	0,	printargs,		"SYS_254"	}, /* 254 */
 	{ -1,	0,	printargs,		"SYS_255"	}, /* 255 */
+#else   /* !UNIXWARE */
+	{ -1,	0,	sys_seteuid,		"seteuid"	}, /* 141 */
+	{ -1,	0,	sys_vtrace,		"vtrace"	}, /* 142 */
+	{ -1,	TP,	sys_fork1,		"fork1"		}, /* 143 */
+	{ -1,	TS,	sys_sigtimedwait,	"sigtimedwait"	}, /* 144 */
+	{ -1,	0,	sys_lwp_info,		"lwp_info"	}, /* 145 */
+	{ -1,	0,	sys_yield,		"yield"		}, /* 146 */
+	{ -1,	0,	sys_lwp_sema_wait,	"lwp_sema_wait"	}, /* 147 */
+	{ -1,	0,	sys_lwp_sema_post,	"lwp_sema_post"	}, /* 148 */
+	{ -1,	0,	sys_lwp_sema_trywait,"lwp_sema_trywait"	}, /* 149 */
+	{ -1,	0,	printargs,		"SYS_150"	}, /* 150 */
+	{ -1,	0,	printargs,		"SYS_151"	}, /* 151 */
+	{ -1,	0,	sys_modctl,		"modctl"	}, /* 152 */
+	{ -1,	0,	sys_fchroot,		"fchroot"	}, /* 153 */
+	{ -1,	TF,	sys_utimes,		"utimes"	}, /* 154 */
+	{ -1,	0,	sys_vhangup,		"vhangup"	}, /* 155 */
+	{ -1,	0,	sys_gettimeofday,	"gettimeofday"	}, /* 156 */
+	{ -1,	0,	sys_getitimer,		"getitimer"	}, /* 157 */
+	{ -1,	0,	sys_setitimer,		"setitimer"	}, /* 158 */
+	{ -1,	0,	sys_lwp_create,		"lwp_create"	}, /* 159 */
+	{ -1,	0,	sys_lwp_exit,		"lwp_exit"	}, /* 160 */
+	{ -1,	0,	sys_lwp_suspend,	"lwp_suspend"	}, /* 161 */
+	{ -1,	0,	sys_lwp_continue,	"lwp_continue"	}, /* 162 */
+	{ -1,	0,	sys_lwp_kill,		"lwp_kill"	}, /* 163 */
+	{ -1,	0,	sys_lwp_self,		"lwp_self"	}, /* 164 */
+	{ -1,	0,	sys_lwp_setprivate,	"lwp_setprivate"}, /* 165 */
+	{ -1,	0,	sys_lwp_getprivate,	"lwp_getprivate"}, /* 166 */
+	{ -1,	0,	sys_lwp_wait,		"lwp_wait"	}, /* 167 */
+	{ -1,	0,	sys_lwp_mutex_unlock,	"lwp_mutex_unlock"}, /* 168 */
+	{ -1,	0,	sys_lwp_mutex_lock,	"lwp_mutex_lock"}, /* 169 */
+	{ -1,	0,	sys_lwp_cond_wait,	"lwp_cond_wait"}, /* 170 */
+	{ -1,	0,	sys_lwp_cond_signal,	"lwp_cond_signal"}, /* 171 */
+	{ -1,	0,	sys_lwp_cond_broadcast,	"lwp_cond_broadcast"}, /* 172 */
+	{ -1,	0,	sys_pread,		"pread"		}, /* 173 */
+	{ -1,	0,	sys_pwrite,		"pwrite"	}, /* 174 */
+	{ -1,	0,	sys_llseek,		"llseek"	}, /* 175 */
+	{ -1,	0,	sys_inst_sync,		"inst_sync"	}, /* 176 */
+	{ -1,	0,	printargs,		"srmlimitsys"	}, /* 177 */
+	{ -1,	0,	sys_kaio,		"kaio"		}, /* 178 */
+	{ -1,	0,	printargs,		"cpc"		}, /* 179 */
+	{ -1,	0,	printargs,		"SYS_180"	}, /* 180 */
+	{ -1,	0,	printargs,		"SYS_181"	}, /* 181 */
+	{ -1,	0,	printargs,		"SYS_182"	}, /* 182 */
+	{ -1,	0,	printargs,		"SYS_183"	}, /* 183 */
+	{ -1,	0,	sys_tsolsys,		"tsolsys"	}, /* 184 */
+#ifdef HAVE_SYS_ACL_H
+	{ -1,	TF,	sys_acl,		"acl"		}, /* 185 */
+#else
+	{ -1,	0,	printargs,		"SYS_185"	}, /* 185 */
+#endif
+	{ -1,	0,	sys_auditsys,		"auditsys"	}, /* 186 */
+	{ -1,	0,	sys_processor_bind,	"processor_bind"}, /* 187 */
+	{ -1,	0,	sys_processor_info,	"processor_info"}, /* 188 */
+	{ -1,	0,	sys_p_online,		"p_online"	}, /* 189 */
+	{ -1,	0,	sys_sigqueue,		"sigqueue"	}, /* 190 */
+	{ -1,	0,	sys_clock_gettime,	"clock_gettime"	}, /* 191 */
+	{ -1,	0,	sys_clock_settime,	"clock_settime"	}, /* 192 */
+	{ -1,	0,	sys_clock_getres,	"clock_getres"	}, /* 193 */
+	{ -1,	0,	sys_timer_create,	"timer_create"	}, /* 194 */
+	{ -1,	0,	sys_timer_delete,	"timer_delete"	}, /* 195 */
+	{ -1,	0,	sys_timer_settime,	"timer_settime"	}, /* 196 */
+	{ -1,	0,	sys_timer_gettime,	"timer_gettime"	}, /* 197 */
+	{ -1,	0,	sys_timer_getoverrun,	"timer_getoverrun"}, /* 198 */
+	{ -1,	0,	sys_nanosleep,		"nanosleep"	}, /* 199 */
+#ifdef HAVE_SYS_ACL_H
+	{ -1,	0,	sys_facl,		"facl"		}, /* 200 */
+#else
+	{ -1,	0,	printargs,		"SYS_200"	}, /* 200 */
+#endif
+#ifdef HAVE_SYS_DOOR_H
+	{ -1,	0,	sys_door,		"door"		}, /* 201 */
+#else
+	{ -1,	0,	printargs,		"SYS_201"	}, /* 201 */
+#endif
+	{ -1,	0,	sys_setreuid,		"setreuid"	}, /* 202 */
+	{ -1,	0,	sys_setregid,		"setregid"	}, /* 203 */
+	{ -1,	0,	sys_install_utrap,	"install_utrap"	}, /* 204 */
+	{ -1,	0,	sys_signotify,		"signotify"	}, /* 205 */
+	{ -1,	0,	sys_schedctl,		"schedctl"	}, /* 206 */
+	{ -1,	0,	sys_pset,		"pset"	}, /* 207 */
+	{ -1,	0,	printargs,		"__sparc_utrap_install"	}, /* 208 */
+	{ -1,	0,	sys_resolvepath,	"resolvepath"	}, /* 209 */
+	{ -1,	0,	sys_signotifywait,	"signotifywait"	}, /* 210 */
+	{ -1,	0,	sys_lwp_sigredirect,	"lwp_sigredirect"	}, /* 211 */
+	{ -1,	0,	sys_lwp_alarm,		"lwp_alarm"	}, /* 212 */
+	{ -1,	0,	sys_getdents64,		"getdents64"	}, /* 213 */
+	{ -1,	0,	sys_mmap64,		"mmap64"	}, /* 214 */
+	{ -1,	0,	sys_stat64,		"stat64"	}, /* 215 */
+	{ -1,	0,	sys_lstat64,		"lstat64"	}, /* 216 */
+	{ -1,	0,	sys_fstat64,		"fstat64"	}, /* 217 */
+	{ -1,	0,	sys_statvfs64,		"statvfs64"	}, /* 218 */
+	{ -1,	0,	sys_fstatvfs64,		"fstatvfs64"	}, /* 219 */
+	{ -1,	0,	sys_setrlimit64,	"setrlimit64"	}, /* 220 */
+	{ -1,	0,	sys_getrlimit64,	"getrlimit64"	}, /* 221 */
+	{ -1,	0,	sys_pread64,		"pread64"	}, /* 222 */
+	{ -1,	0,	sys_pwrite64,		"pwrite64"	}, /* 223 */
+	{ -1,	0,	sys_creat64,		"creat64"	}, /* 224 */
+	{ -1,	0,	sys_open64,		"open64"	}, /* 225 */
+	{ -1,	0,	sys_rpcsys,		"rpcsys"	}, /* 226 */
+	{ -1,	0,	printargs,		"SYS_227"	}, /* 227 */
+	{ -1,	0,	printargs,		"SYS_228"	}, /* 228 */
+	{ -1,	0,	printargs,		"SYS_229"	}, /* 229 */
+	{ -1,	TN,	sys_so_socket,		"so_socket"	}, /* 230 */
+	{ -1,	TN,	sys_so_socketpair,	"so_socketpair"	}, /* 231 */
+	{ -1,	TN,	sys_bind,		"bind"		}, /* 232 */
+	{ -1,	TN,	sys_listen,		"listen"	}, /* 233 */
+	{ -1,	TN,	sys_accept,		"accept"	}, /* 234 */
+	{ -1,	TN,	sys_connect,		"connect"	}, /* 235 */
+	{ -1,	TN,	sys_shutdown,		"shutdown"	}, /* 236 */
+	{ -1,	TN,	sys_recv,		"recv"		}, /* 237 */
+	{ -1,	TN,	sys_recvfrom,		"recvfrom"	}, /* 238 */
+	{ -1,	TN,	sys_recvmsg,		"recvmsg"	}, /* 239 */
+	{ -1,	TN,	sys_send,		"send"		}, /* 240 */
+	{ -1,	TN,	sys_sendmsg,		"sendmsg"	}, /* 241 */
+	{ -1,	TN,	sys_sendto,		"sendto"	}, /* 242 */
+	{ -1,	TN,	sys_getpeername,	"getpeername"	}, /* 243 */
+	{ -1,	TN,	sys_getsockname,	"getsockname"	}, /* 244 */
+	{ -1,	TN,	sys_getsockopt,		"getsockopt"	}, /* 245 */
+	{ -1,	TN,	sys_setsockopt,		"setsockopt"	}, /* 246 */
+	{ -1,	TN,	sys_sockconfig,		"sockconfig"	}, /* 247 */
+	{ -1,	0,	sys_ntp_gettime,	"ntp_gettime"	}, /* 248 */
+	{ -1,	0,	sys_ntp_adjtime,	"ntp_adjtime"	}, /* 249 */
+	{ -1,	0,	sys_ntp_adjtime,	"ntp_adjtime"	}, /* 249 */
+	{ -1,	0,	printargs,		"lwp_mutex_unlock"	}, /* 250 */
+	{ -1,	0,	printargs,		"lwp_mutex_trylock"	}, /* 251 */
+	{ -1,	0,	printargs,		"lwp_mutex_init"	}, /* 252 */
+	{ -1,	0,	printargs,		"cladm"		}, /* 253 */
+	{ -1,	0,	printargs,		"lwp_sig_timedwait"	}, /* 254 */
+	{ -1,	0,	printargs,		"umount2"	}, /* 255 */
+#endif /* !UNIXWARE */
+#endif /* !MIPS */
 	{ -1,	0,	printargs,		"SYS_256"	}, /* 256 */
 	{ -1,	0,	printargs,		"SYS_257"	}, /* 257 */
 	{ -1,	0,	printargs,		"SYS_258"	}, /* 258 */
@@ -750,3 +802,27 @@
 	{ -1,	0,	printargs,		"SYS_397"	}, /* 397 */
 	{ -1,	0,	printargs,		"SYS_398"	}, /* 398 */
 	{ -1,	0,	printargs,		"SYS_399"	}, /* 399 */
+
+#ifdef HAVE_SYS_AIO_H
+	{ -1,	TF,	sys_aioread,		"aioread"	}, /* 400 */
+	{ -1,	TF,	sys_aiowrite,		"aiowrite"	}, /* 401 */
+	{ -1,	TF,	sys_aiowait,		"aiowait"	}, /* 402 */
+	{ -1,	TF,	sys_aiocancel,		"aiocancel"	}, /* 403 */
+	{ -1,	TF,	sys_aionotify,		"aionotify"	}, /* 404 */
+	{ -1,	TF,	sys_aioinit,		"aioinit"	}, /* 405 */
+	{ -1,	TF,	sys_aiostart,		"aiostart"	}, /* 406 */
+	{ -1,	TF,	sys_aiolio,		"aiolio"	}, /* 407 */
+	{ -1,	TF,	sys_aiosuspend,		"aiosuspend"	}, /* 408 */
+	{ -1,	TF,	sys_aioerror,		"aioerror"	}, /* 409 */
+	{ -1,	TF,	sys_aioliowait,		"aioliowait"	}, /* 410 */
+	{ -1,	TF,	sys_aioaread,		"aioaread"	}, /* 411 */
+	{ -1,	TF,	sys_aioawrite,		"aioawrite"	}, /* 412 */
+	{ -1,	TF,	sys_aiolio64,		"aiolio64"	}, /* 413 */
+	{ -1,	TF,	sys_aiosuspend64,	"aiosuspend64"	}, /* 414 */
+	{ -1,	TF,	sys_aioerror64,		"aioerror64"	}, /* 415 */
+	{ -1,	TF,	sys_aioliowait64,	"aioliowait64"	}, /* 416 */
+	{ -1,	TF,	sys_aioaread64,		"aioaread64"	}, /* 417 */
+	{ -1,	TF,	sys_aioawrite64,	"aioawrite64"	}, /* 418 */
+	{ -1,	TF,	sys_aiocancel64,	"aiocancel64"	}, /* 419 */
+	{ -1,	TF,	sys_aiofsync,		"aiofsync"	}, /* 420 */ 
+#endif
diff --git a/syscall.c b/syscall.c
index c9da309..c5ba008 100644
--- a/syscall.c
+++ b/syscall.c
@@ -1583,6 +1583,12 @@
 			SYS_door_nsubcalls, door_style);
 		break;
 #endif /* SYS_door_subcall */
+#ifdef SYS_kaio_subcall
+	case SYS_kaio:
+		decode_subcall(tcp, SYS_kaio_subcall,
+			SYS_kaio_nsubcalls, shift_style);
+		break;
+#endif	
 #endif /* SVR4 */
 #ifdef FREEBSD
 	case SYS_msgsys: