-diff -Nur strace-4.4.orig/linux/syscall.h strace-4.4/linux/syscall.h
---- strace-4.4.orig/linux/syscall.h Sun Apr 8 21:14:05 2001
-+++ strace-4.4/linux/syscall.h Fri Oct 19 15:28:02 2001
-@@ -84,6 +84,12 @@
- int sys_sendfile(), sys_old_mmap(), sys_stat64(), sys_lstat64(), sys_fstat64();
- int sys_truncate64(), sys_ftruncate64(), sys_pivotroot();
-
-+/* 32bit uids */
-+int sys_getuid32(), sys_getgid32(), sys_geteuid32(), sys_getegid32();
-+int sys_setreuid32(), sys_setregid32(), sys_getgroups32(), sys_setgroups32();
-+int sys_setresuid32(), sys_getresuid32(), sys_setresgid32();
-+int sys_getresgid32(), sys_setuid32(), sys_setgid32();
-+int sys_setfsuid32(), sys_setfsgid32();
-
- /* sys_socketcall subcalls */
-
-diff -Nur strace-4.4.orig/process.c strace-4.4/process.c
---- strace-4.4.orig/process.c Fri Oct 19 15:27:34 2001
-+++ strace-4.4/process.c Fri Oct 19 15:28:02 2001
-@@ -884,6 +884,80 @@
- return 0;
- }
-
-+int
-+sys_setuid32(tcp)
-+struct tcb *tcp;
-+{
-+ if (entering(tcp)) {
-+ tprintf("%u", (__kernel_uid32_t) tcp->u_arg[0]);
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_setgid32(tcp)
-+struct tcb *tcp;
-+{
-+ if (entering(tcp)) {
-+ tprintf("%u", (__kernel_gid32_t) tcp->u_arg[0]);
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_getresuid32(tcp)
-+ struct tcb *tcp;
-+{
-+ if (exiting(tcp)) {
-+ __kernel_uid32_t uid;
-+ 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], &uid) < 0)
-+ tprintf("%#lx, ", tcp->u_arg[0]);
-+ else
-+ tprintf("ruid %lu, ", (unsigned long) uid);
-+ if (umove(tcp, tcp->u_arg[0], &uid) < 0)
-+ tprintf("%#lx, ", tcp->u_arg[0]);
-+ else
-+ tprintf("euid %lu, ", (unsigned long) uid);
-+ if (umove(tcp, tcp->u_arg[0], &uid) < 0)
-+ tprintf("%#lx", tcp->u_arg[0]);
-+ else
-+ tprintf("suid %lu", (unsigned long) uid);
-+ }
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_getresgid32(tcp)
-+struct tcb *tcp;
-+{
-+ if (exiting(tcp)) {
-+ __kernel_gid32_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("rgid %lu, ", (unsigned long) gid);
-+ if (umove(tcp, tcp->u_arg[0], &gid) < 0)
-+ tprintf("%#lx, ", tcp->u_arg[0]);
-+ else
-+ tprintf("egid %lu, ", (unsigned long) gid);
-+ if (umove(tcp, tcp->u_arg[0], &gid) < 0)
-+ tprintf("%#lx", tcp->u_arg[0]);
-+ else
-+ tprintf("sgid %lu", (unsigned long) gid);
-+ }
-+ }
-+ return 0;
-+}
-+
- #endif /* LINUX */
-
- int
-@@ -912,6 +986,30 @@
-
- #if defined(LINUX) || defined(FREEBSD)
- int
-+sys_setreuid32(tcp)
-+struct tcb *tcp;
-+{
-+ if (entering(tcp)) {
-+ tprintf("%lu, %lu",
-+ (unsigned long) (__kernel_uid32_t) tcp->u_arg[0],
-+ (unsigned long) (__kernel_uid32_t) tcp->u_arg[1]);
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_setregid32(tcp)
-+struct tcb *tcp;
-+{
-+ if (entering(tcp)) {
-+ tprintf("%lu, %lu",
-+ (unsigned long) (__kernel_gid32_t) tcp->u_arg[0],
-+ (unsigned long) (__kernel_gid32_t) tcp->u_arg[1]);
-+ }
-+ return 0;
-+}
-+
-+int
- sys_setresuid(tcp)
- struct tcb *tcp;
- {
-@@ -929,9 +1027,35 @@
- {
- if (entering(tcp)) {
- tprintf("rgid %u, egid %u, sgid %u",
-- (uid_t) tcp->u_arg[0],
-- (uid_t) tcp->u_arg[1],
-- (uid_t) tcp->u_arg[2]);
-+ (gid_t) tcp->u_arg[0],
-+ (gid_t) tcp->u_arg[1],
-+ (gid_t) tcp->u_arg[2]);
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_setresuid32(tcp)
-+ struct tcb *tcp;
-+{
-+ if (entering(tcp)) {
-+ tprintf("ruid %u, euid %u, suid %u",
-+ (__kernel_uid32_t) tcp->u_arg[0],
-+ (__kernel_uid32_t) tcp->u_arg[1],
-+ (__kernel_uid32_t) tcp->u_arg[2]);
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_setresgid32(tcp)
-+ struct tcb *tcp;
-+{
-+ if (entering(tcp)) {
-+ tprintf("rgid %u, egid %u, sgid %u",
-+ (__kernel_gid32_t) tcp->u_arg[0],
-+ (__kernel_gid32_t) tcp->u_arg[1],
-+ (__kernel_gid32_t) tcp->u_arg[2]);
- }
- return 0;
- }
-@@ -1014,6 +1138,84 @@
- return 0;
- }
-
-+#ifdef LINUX
-+int
-+sys_setgroups32(tcp)
-+struct tcb *tcp;
-+{
-+ int i, len;
-+ __kernel_gid32_t *gidset;
-+
-+ if (entering(tcp)) {
-+ len = tcp->u_arg[0];
-+ tprintf("%u, ", len);
-+ if (len <= 0) {
-+ tprintf("[]");
-+ return 0;
-+ }
-+ gidset = (__kernel_gid32_t *) malloc(len * sizeof(GETGROUPS_T));
-+ if (gidset == NULL) {
-+ fprintf(stderr, "sys_setgroups: out of memory\n");
-+ return -1;
-+ }
-+ if (!verbose(tcp))
-+ tprintf("%#lx", tcp->u_arg[1]);
-+ else if (umoven(tcp, tcp->u_arg[1],
-+ len * sizeof(__kernel_gid32_t), (char *) gidset) < 0)
-+ tprintf("[?]");
-+ else {
-+ tprintf("[");
-+ for (i = 0; i < len; i++)
-+ tprintf("%s%lu", i ? ", " : "",
-+ (unsigned long) gidset[i]);
-+ tprintf("]");
-+ }
-+ free((char *) gidset);
-+ }
-+ return 0;
-+}
-+
-+int
-+sys_getgroups32(tcp)
-+struct tcb *tcp;
-+{
-+ int i, len;
-+ __kernel_gid32_t *gidset;
-+
-+ if (entering(tcp)) {
-+ len = tcp->u_arg[0];
-+ tprintf("%u, ", len);
-+ } else {
-+ len = tcp->u_rval;
-+ if (len <= 0) {
-+ tprintf("[]");
-+ return 0;
-+ }
-+ gidset = (__kernel_gid32_t *) malloc(len * sizeof(GETGROUPS_T));
-+ if (gidset == NULL) {
-+ fprintf(stderr, "sys_getgroups: out of memory\n");
-+ return -1;
-+ }
-+ if (!tcp->u_arg[1])
-+ tprintf("NULL");
-+ else if (!verbose(tcp) || tcp->u_arg[0] == 0)
-+ tprintf("%#lx", tcp->u_arg[1]);
-+ else if (umoven(tcp, tcp->u_arg[1],
-+ len * sizeof(GETGROUPS_T), (char *) gidset) < 0)
-+ tprintf("[?]");
-+ else {
-+ tprintf("[");
-+ for (i = 0; i < len; i++)
-+ tprintf("%s%lu", i ? ", " : "",
-+ (unsigned long) gidset[i]);
-+ tprintf("]");
-+ }
-+ free((char *)gidset);
-+ }
-+ return 0;
-+}
-+#endif
-+
- int
- sys_setpgrp(tcp)
- struct tcb *tcp;
---- strace-4.4.91/linux/syscallent.h.orig Tue Jan 14 20:02:35 2003
-+++ strace-4.4.91/linux/syscallent.h Tue Jan 14 21:03:13 2003
-@@ -246,23 +246,23 @@
- { 3, TF, sys_chown, "lchown32" }, /* 198 */
- { 0, 0, sys_getuid, "getuid32" }, /* 199 */