extern void count_syscall(struct tcb *, struct timeval *);
extern void printxval(const struct xlat *, int, const char *);
extern int printargs(struct tcb *);
+extern int printargs_lu(struct tcb *);
+extern int printargs_ld(struct tcb *);
extern void addflags(const struct xlat *, int);
extern int printflags(const struct xlat *, int, const char *);
extern const char *sprintflags(const char *, const struct xlat *, int);
{ 0, NULL }
};
+/* Not aliased to printargs_ld: we want it to have a distinct address */
int
sys_epoll_create(struct tcb *tcp)
{
- if (entering(tcp))
- tprintf("%ld", tcp->u_arg[0]);
- return 0;
+ return printargs_ld(tcp);
}
static const struct xlat epollflags[] = {
#define sys_dup sys_close
#define sys_fchdir sys_close
#define sys_fdatasync sys_close
-#define sys_getegid sys_getuid
#define sys_geteuid sys_getuid
+#define sys_getegid sys_getuid
#define sys_getgid sys_getuid
+#define sys_getresgid sys_getresuid
+#define sys_setgid sys_setuid
+#define sys_setregid sys_setreuid
+#define sys_setresgid sys_setresuid
+#define sys_setfsgid sys_setfsuid
#define sys_mlock sys_munmap
#define sys_mq_unlink sys_chdir
#define sys_munlock sys_munmap
#define sys_rename sys_link
#define sys_rmdir sys_chdir
#define sys_sched_get_priority_max sys_sched_get_priority_min
-#define sys_setfsgid sys_setfsuid
#define sys_swapoff sys_chdir
#define sys_swapon sys_chdir
#define sys_symlink sys_link
/* printargs does the right thing */
#define sys_getpgid printargs
-#define sys_getpgrp printargs
#define sys_getpid printargs
#define sys_getppid printargs
#define sys_gettid printargs
+#define sys_setsid printargs
#define sys_idle printargs
#define sys_inotify_init printargs
#define sys_munlockall printargs
#define sys_pause printargs
#define sys_rt_sigreturn printargs
#define sys_sched_yield printargs
-#define sys_setsid printargs
#define sys_setup printargs
#define sys_set_tid_address printargs
#define sys_sync printargs
#define sys_timer_getoverrun printargs
#define sys_vhangup printargs
+/* printargs_lu/ld does the right thing */
+#define sys_getsid printargs_lu
+#define sys_getpgrp printargs_lu
+#define sys_setpgid printargs_lu
+#define sys_setpgrp printargs_lu
+#define sys_alarm printargs_lu
+#define sys_nice printargs_ld
+
/* unimplemented */
#define sys_afs_syscall printargs
#define sys_break printargs
int sys_accept4();
int sys_access();
int sys_adjtimex();
-int sys_alarm();
int sys_arch_prctl();
int sys_bind();
int sys_brk();
int sys_getpeername();
int sys_getpmsg();
int sys_getpriority();
-int sys_getresgid();
int sys_getresuid();
int sys_getrlimit();
int sys_getrusage();
-int sys_getsid();
int sys_getsockname();
int sys_getsockopt();
int sys_gettimeofday();
int sys_munmap();
int sys_nanosleep();
int sys_newfstatat();
-int sys_nice();
int sys_old_mmap();
int sys_oldfstat();
int sys_oldlstat();
int sys_set_thread_area();
int sys_setdomainname();
int sys_setfsuid();
-int sys_setgid();
int sys_setgroups();
int sys_setgroups32();
int sys_sethostname();
int sys_setitimer();
-int sys_setpgid();
-int sys_setpgrp();
int sys_setpriority();
-int sys_setregid();
-int sys_setresgid();
int sys_setresuid();
int sys_setreuid();
int sys_setrlimit();
return 0;
}
-int
-sys_setgid(struct tcb *tcp)
-{
- if (entering(tcp)) {
- tprintf("%u", (gid_t) tcp->u_arg[0]);
- }
- return 0;
-}
-
int
sys_getresuid(struct tcb *tcp)
{
return 0;
}
-int
-sys_getresgid(struct tcb *tcp)
-{
- if (exiting(tcp)) {
- __kernel_gid_t gid;
- if (syserror(tcp))
- tprintf("%#lx, %#lx, %#lx", tcp->u_arg[0],
- tcp->u_arg[1], tcp->u_arg[2]);
- else {
- if (umove(tcp, tcp->u_arg[0], &gid) < 0)
- tprintf("%#lx, ", tcp->u_arg[0]);
- else
- tprintf("[%lu], ", (unsigned long) gid);
- if (umove(tcp, tcp->u_arg[1], &gid) < 0)
- tprintf("%#lx, ", tcp->u_arg[1]);
- else
- tprintf("[%lu], ", (unsigned long) gid);
- if (umove(tcp, tcp->u_arg[2], &gid) < 0)
- tprintf("%#lx", tcp->u_arg[2]);
- else
- tprintf("[%lu]", (unsigned long) gid);
- }
- }
- return 0;
-}
-
int
sys_setreuid(struct tcb *tcp)
{
return 0;
}
-int
-sys_setregid(struct tcb *tcp)
-{
- if (entering(tcp)) {
- printuid("", tcp->u_arg[0]);
- printuid(", ", tcp->u_arg[1]);
- }
- return 0;
-}
-
int
sys_setresuid(struct tcb *tcp)
{
}
return 0;
}
-int
-sys_setresgid(struct tcb *tcp)
-{
- if (entering(tcp)) {
- printuid("", tcp->u_arg[0]);
- printuid(", ", tcp->u_arg[1]);
- printuid(", ", tcp->u_arg[2]);
- }
- return 0;
-}
int
sys_setgroups(struct tcb *tcp)
return 0;
}
-#if defined(ALPHA)
-int
-sys_setpgrp(struct tcb *tcp)
-{
- if (entering(tcp)) {
- tprintf("%lu, %lu", tcp->u_arg[0], tcp->u_arg[1]);
- }
- return 0;
-}
-#endif
-
-int
-sys_getpgrp(struct tcb *tcp)
-{
- if (entering(tcp)) {
- tprintf("%lu", tcp->u_arg[0]);
- }
- return 0;
-}
-
-int
-sys_getsid(struct tcb *tcp)
-{
- if (entering(tcp)) {
- tprintf("%lu", tcp->u_arg[0]);
- }
- return 0;
-}
-
-int
-sys_setsid(struct tcb *tcp)
-{
- return 0;
-}
-
-int
-sys_getpgid(struct tcb *tcp)
-{
- if (entering(tcp)) {
- tprintf("%lu", tcp->u_arg[0]);
- }
- return 0;
-}
-
-int
-sys_setpgid(struct tcb *tcp)
-{
- if (entering(tcp)) {
- tprintf("%lu, %lu", tcp->u_arg[0], tcp->u_arg[1]);
- }
- return 0;
-}
-
static void
printargv(struct tcb *tcp, long addr)
{
return 0;
}
-int
-sys_alarm(struct tcb *tcp)
-{
- if (entering(tcp))
- tprintf("%lu", tcp->u_arg[0]);
- return 0;
-}
-
int
sys_uname(struct tcb *tcp)
{
return 0;
}
-int
-sys_nice(struct tcb *tcp)
-{
- if (entering(tcp))
- tprintf("%ld", tcp->u_arg[0]);
- return 0;
-}
-
int
sys_times(struct tcb *tcp)
{
return 0;
}
+int
+printargs_lu(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ int i;
+
+ for (i = 0; i < tcp->u_nargs; i++)
+ tprintf("%s%lu", i ? ", " : "", tcp->u_arg[i]);
+ }
+ return 0;
+}
+
+int
+printargs_ld(struct tcb *tcp)
+{
+ if (entering(tcp)) {
+ int i;
+
+ for (i = 0; i < tcp->u_nargs; i++)
+ tprintf("%s%ld", i ? ", " : "", tcp->u_arg[i]);
+ }
+ return 0;
+}
+
long
getrval2(struct tcb *tcp)
{