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: