diff --git a/configure.in b/configure.in index 8f60482f..a7916b28 100644 --- a/configure.in +++ b/configure.in @@ -152,7 +152,7 @@ if test x$OPSYS != xLINUX; then 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 12d71932..ba65f84a 100644 --- a/defs.h +++ b/defs.h @@ -496,3 +496,15 @@ extern int nioctlents2; 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 539af8e1..e1c43fb1 100644 --- a/desc.c +++ b/desc.c @@ -63,6 +63,72 @@ static struct xlat fcntlcmds[] = { #endif #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 @@ int getlk; 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 @@ struct tcb *tcp; 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 @@ struct tcb *tcp; 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 50fdd4ac..3ec97e31 100644 --- a/file.c +++ b/file.c @@ -411,6 +411,23 @@ struct tcb *tcp; } #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 @@ struct tcb *tcp; 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 @@ struct tcb *tcp; } #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 a819c111..0fe8c3d5 100644 --- a/io.c +++ b/io.c @@ -279,6 +279,36 @@ struct tcb *tcp; #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 0d728703..ec9b4414 100644 --- a/mem.c +++ b/mem.c @@ -224,6 +224,50 @@ struct tcb *tcp; 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 0c123e7f..082197da 100644 --- a/net.c +++ b/net.c @@ -806,6 +806,33 @@ struct tcb *tcp; return 0; } +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 be776cec..833e0f6b 100644 --- a/resource.c +++ b/resource.c @@ -142,6 +142,67 @@ struct tcb *tcp; 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 9f5d18ae..fd16b1fc 100644 --- a/signal.c +++ b/signal.c @@ -316,7 +316,18 @@ int rt; /* set might include realtime sigs */ *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 85d805b4..86fed562 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 64599327..f0c5d9c6 100644 --- a/svr4/syscall.h +++ b/svr4/syscall.h @@ -106,27 +106,28 @@ extern int sys_getmsg(); 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_signal(); 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_settime(); 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 @@ extern int sys_getcontext(), sys_setcontext(); #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 @@ extern int sys_getcontext(), sys_setcontext(); #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 a537a35d..4f852389 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 c9da309e..c5ba0088 100644 --- a/syscall.c +++ b/syscall.c @@ -1583,6 +1583,12 @@ struct tcb *tcp; 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: