diff --git a/.mailmap b/.mailmap
index a04a2f8..b8565ae 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1,7 +1,9 @@
 # Map git author names and email addresses to canonical/preferred form.
 <ak@linux.intel.com>	<ak@suse.de>
+<dgilbert@redhat.com>	<dave@treblig.org>
 <holger@freyther.de>	<zecke@selfish.org>
 <kirill@shutemov.name>	<kirill.shutemov@linux.intel.com>
 <schwab@linux-m68k.org>	<schwab@redhat.com>
 <schwab@linux-m68k.org>	<schwab@suse.de>
 <vda.linux@googlemail.com>	<dvlasenk@redhat.com>
+Eugene Syromyatnikov	<evgsyr@gmail.com>
diff --git a/.travis.yml b/.travis.yml
index d3307a0..0eba591 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -39,3 +39,6 @@
     - compiler: clang-3.6
       env:
         - TARGET=x86
+    - compiler: musl-gcc
+      env:
+        - TARGET=x86
diff --git a/Android.mk b/Android.mk
index a75a812..717d60c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -74,8 +74,9 @@
     fetch_struct_flock.c \
     fetch_struct_mmsghdr.c \
     fetch_struct_msghdr.c \
+    fetch_struct_stat.c \
+    fetch_struct_stat64.c \
     fetch_struct_statfs.c \
-    file.c \
     file_handle.c \
     file_ioctl.c \
     flock.c \
@@ -121,6 +122,7 @@
     net.c \
     netlink.c \
     numa.c \
+    oldstat.c \
     open.c \
     pathtrace.c \
     perf.c \
@@ -131,6 +133,7 @@
     print_msgbuf.c \
     print_sigevent.c \
     print_statfs.c \
+    print_struct_stat.c \
     print_time.c \
     print_timex.c \
     printmode.c \
@@ -159,6 +162,8 @@
     socketcall.c \
     socketutils.c \
     sram_alloc.c \
+    stat.c \
+    stat64.c \
     statfs.c \
     statfs64.c \
     strace.c \
@@ -242,7 +247,6 @@
     -DHAVE_SIGINFO_T_SI_OVERRUN=1 \
     -DHAVE_SIGINFO_T_SI_SYSCALL=1 \
     -DHAVE_SIGINFO_T_SI_TIMERID=1 \
-    -UHAVE_STAT64 \
     -DHAVE_STATFS64=1 \
     -DHAVE_STDBOOL_H=1 \
     -DHAVE_STRERROR=1 \
@@ -290,7 +294,7 @@
 
 LOCAL_CFLAGS += -fno-strict-aliasing
 
-LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 -DSIZEOF_RLIM_T=4 -DHAVE_STAT64=1
+LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 -DSIZEOF_RLIM_T=4 -DHAVE_STRUCT_STAT64=1
 LOCAL_CFLAGS_64 += -DSIZEOF_LONG=8 -DSIZEOF_RLIM_T=8
 
 LOCAL_CFLAGS_arm += -DARM=1
diff --git a/Makefile.am b/Makefile.am
index 1e7554e..d1ad1fe 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -112,8 +112,9 @@
 	fetch_struct_flock.c \
 	fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c \
+	fetch_struct_stat.c \
+	fetch_struct_stat64.c \
 	fetch_struct_statfs.c \
-	file.c		\
 	file_handle.c	\
 	file_ioctl.c	\
 	fs_x_ioctl.c	\
@@ -147,6 +148,7 @@
 	link.c		\
 	linux/asm_stat.h \
 	linux/x32/asm_stat.h \
+	linux/x86_64/asm_stat.h \
 	lookup_dcookie.c \
 	loop.c		\
 	lseek.c		\
@@ -165,6 +167,7 @@
 	net.c		\
 	netlink.c       \
 	numa.c		\
+	oldstat.c	\
 	open.c		\
 	or1k_atomic.c	\
 	pathtrace.c	\
@@ -176,13 +179,13 @@
 	print_msgbuf.c	\
 	print_sigevent.c \
 	print_statfs.c	\
+	print_struct_stat.c \
 	print_time.c	\
 	print_timex.c	\
 	printmode.c	\
 	printrusage.c	\
 	printsiginfo.c	\
 	printsiginfo.h	\
-	printstat.h	\
 	process.c	\
 	process_vm.c	\
 	ptp.c		\
@@ -209,6 +212,9 @@
 	sockaddr.c	\
 	socketutils.c	\
 	sram_alloc.c	\
+	stat.c		\
+	stat.h		\
+	stat64.c	\
 	statfs.c	\
 	statfs.h	\
 	strace.c	\
@@ -250,7 +256,7 @@
 @CODE_COVERAGE_RULES@
 CODE_COVERAGE_BRANCH_COVERAGE = 1
 CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
-	--prefix $(shell realpath -Ls $(abs_top_srcdir)/..)
+	--prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .)
 CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*'
 strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS += $(CODE_COVERAGE_CFLAGS)
@@ -497,6 +503,18 @@
 	linux/powerpc64/syscallent1.h	\
 	linux/powerpc64/userent.h	\
 	linux/ptp_clock.h		\
+	linux/riscv/arch_regs.c		\
+	linux/riscv/errnoent1.h		\
+	linux/riscv/get_error.c		\
+	linux/riscv/get_scno.c		\
+	linux/riscv/get_syscall_args.c	\
+	linux/riscv/ioctls_arch0.h	\
+	linux/riscv/ioctls_arch1.h	\
+	linux/riscv/ioctls_inc0.h	\
+	linux/riscv/ioctls_inc1.h	\
+	linux/riscv/signalent1.h	\
+	linux/riscv/syscallent.h	\
+	linux/riscv/syscallent1.h	\
 	linux/s390/arch_regs.c		\
 	linux/s390/arch_regs.h		\
 	linux/s390/arch_sigreturn.c	\
@@ -713,7 +731,7 @@
 ioctl_redefs%.h: ioctlent%.h ioctlent0.h
 	sort $< > $<-t
 	sort ioctlent0.h | comm -23 $<-t - | \
-		sed -n 's/^{ "\([^"]\+\)", \(0x[[:xdigit:]]\+\) },$$/#ifdef \1\n# undef \1\n# define \1 \2\n#endif/p' \
+		sed -r -n 's/^\{ "([^"]+)", (0x[[:xdigit:]]+) \},$$/#ifdef \1\n# undef \1\n# define \1 \2\n#endif/p' \
 		> $@-t
 	rm -f $<-t
 	mv $@-t $@
@@ -754,7 +772,7 @@
 
 mpers-m%.stamp: $(srcdir_mpers_source_files) | printers.h
 	for f in $^; do \
-		CC="$(CC)" CFLAGS="$(mpers_sh_opts)" \
+		CC="$(CC)" CFLAGS="$(mpers_sh_opts) -DMPERS_IS_$(mpers_NAME)" \
 		CPP="$(CPP)" CPPFLAGS="$(mpers_sh_opts) -DIN_MPERS -DMPERS_IS_$(mpers_NAME)" \
 		$(srcdir)/mpers.sh -$(mpers_NAME) $$f || exit; \
 	done
@@ -762,7 +780,7 @@
 
 m%_type_defs.h: $(srcdir_mpers_source_files)
 	for f in $^; do \
-		sed -n 's/^#include DEF_MPERS_TYPE(\([^)]\+\))/#ifdef MPERS_$(mpers_PREFIX)\1\n# define \1 MPERS_$(mpers_PREFIX)\1\n#endif/p' $$f || exit; \
+		sed -r -n 's/^#include DEF_MPERS_TYPE\(([^)]+)\)/#ifdef MPERS_$(mpers_PREFIX)\1\n# define \1 MPERS_$(mpers_PREFIX)\1\n#endif/p' $$f || exit; \
 	done > $@-t
 	echo '#undef MPERS_PRINTER_NAME' >> $@-t
 	echo '#define MPERS_PRINTER_NAME(printer_name) printer_name' >> $@-t
@@ -772,7 +790,7 @@
 
 m%_funcs.h: $(srcdir_mpers_source_files)
 	for f in $^; do \
-		sed -n 's/^SYS_FUNC(\([^)]\+\))/#undef sys_\1\n#define sys_\1 $(mpers_PREFIX)sys_\1/p' $$f || exit; \
+		sed -r -n 's/^SYS_FUNC\(([^)]+)\)/#undef sys_\1\n#define sys_\1 $(mpers_PREFIX)sys_\1/p' $$f || exit; \
 	done > $@-t && \
 	echo '#include "sys_func.h"' >> $@-t
 	mv $@-t $@
@@ -782,13 +800,13 @@
 %.c.mpers.i: $(srcdir)/%.c
 	$(CPP) -P $(mpers_sh_opts) -DIN_MPERS_BOOTSTRAP $< -o $@
 
-mpers_printer_decl_pattern = ^MPERS_PRINTER_DECL(\([^,)]\+\),[[:space:]]*\([^,)]\+\),[[:space:]]*\([^)]\+\))$$
+mpers_printer_decl_pattern = ^MPERS_PRINTER_DECL\(([^,)]+),[[:space:]]*([^,)]+),[[:space:]]*([^)]+)\)$$
 
 printers.h: $(mpers_preproc_files)
 	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
 	echo 'typedef struct {' >> $@-t
 	for f in $^; do \
-		sed -n 's/$(mpers_printer_decl_pattern)/ \1 (*\2)(\3);\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f \
+		sed -r -n 's/$(mpers_printer_decl_pattern)/ \1 (*\2)(\3);\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f \
 		|| exit; \
 	done >> $@-t
 	echo '} struct_printers;' >> $@-t
@@ -799,7 +817,7 @@
 %_printer_decls.h: $(mpers_preproc_files)
 	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
 	for f in $^; do \
-		sed -n 's/$(mpers_printer_decl_pattern)/extern \1 $(mpers_PREFIX)\2(\3);/p' $$f \
+		sed -r -n 's/$(mpers_printer_decl_pattern)/extern \1 $(mpers_PREFIX)\2(\3);/p' $$f \
 		|| exit; \
 	done >> $@-t
 	mv $@-t $@
@@ -807,7 +825,7 @@
 %_printer_defs.h: $(mpers_preproc_files)
 	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
 	for f in $^; do \
-		sed -n 's/$(mpers_printer_decl_pattern)/\.\2 = $(mpers_PREFIX)\2,/p' $$f \
+		sed -r -n 's/$(mpers_printer_decl_pattern)/.\2 = $(mpers_PREFIX)\2,/p' $$f \
 		|| exit; \
 	done >> $@-t
 	mv $@-t $@
@@ -869,7 +887,7 @@
 	(								\
 	  cd $(srcdir);							\
 	  sed '/^##/,$$d' CREDITS.in;					\
-	  { sed -n '1,/^##>/d; s/  \+/\t/; s/^./&/p' CREDITS.in;	\
+	  { sed -n '1,/^##>/d; s/   */\t/; s/^./&/p' CREDITS.in;	\
 	    git log --pretty=format:'%aN	%aE';			\
 	  } | LC_ALL=C sort -u						\
 	    | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}';		\
diff --git a/NEWS b/NEWS
index 19a870d..47ffe02 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,40 @@
-Noteworthy changes in release ?.?? (????-??-??)
+Noteworthy changes in release 4.14 (2016-10-04)
 ===============================================
 
+* Changes in behavior
+  * When using -p option without a command and no processes has been attached,
+    strace exits with exit status 1.
+
+* Improvements
+  * Added printing of the mode argument of open and openat syscalls
+    when O_TMPFILE flag is set.  (Addresses Fedora bug #1377846).
+  * Enhanced -e abbrev=set, -e raw=set, and -e verbose=set.
+  * Enhanced decoding of futex, keyctl, quotactl, timerfd_settime,
+    and aio family syscalls.
+  * Implemented fetching of the 7th subcall argument on mips o32.
+  * Updated lists of BPF_*, ETH_P_*, KEXEC_ARCH_*, SCTP_*, TCP_*, and *_MAGIC
+    constants.
+  * Updated lists of ioctl commands from Linux 4.8.
+  * Added decoding of new syscalls on sh and sh64.
+  * Added RISC-V architecture support.
+
+* Bug fixes
+  * Marked io_setup and io_destroy as memory mapping related syscalls.
+  * Fixed leakage of placeholder descriptors to tracees.
+  * Fixed printing of mode_t, umode_t, and umask types.
+  * Fixed decoding of iovec arrays without a limit on total data size.
+  * Fixed decoding of fadvise64, fallocate, futex, keyctl, quotactl, readahead,
+    and ipc family syscalls.
+  * Fixed decoding of invalid syscalls mapped to indirect subcalls.
+  * Fixed decoding of struct btrfs_ioctl_vol_args_v2 on non-native
+    personalities.
+  * Fixed decoding of PTRACE_DETACH on sparc and sparc64.
+  * Fixed decoding of struct stat64 on sparc64.
+  * Fixed decoding of uid and gid-related syscalls on sparc64.
+  * Fixed decoding of the forth argument of semctl syscall on sparc64.
+  * Fixed values of tty ioctl constants on sparc64.
+  * Fixed sparc personality support on sparc64.
+
 Noteworthy changes in release 4.13 (2016-07-26)
 ===============================================
 
diff --git a/aio.c b/aio.c
index 29562d2..7caccdd 100644
--- a/aio.c
+++ b/aio.c
@@ -36,13 +36,13 @@
 	if (entering(tcp))
 		tprintf("%u, ", (unsigned int) tcp->u_arg[0]);
 	else
-		printnum_ulong(tcp, tcp->u_arg[1]);
+		printnum_ptr(tcp, tcp->u_arg[1]);
 	return 0;
 }
 
 SYS_FUNC(io_destroy)
 {
-	tprintf("%lu", tcp->u_arg[0]);
+	printaddr(tcp->u_arg[0]);
 
 	return RVAL_DECODED;
 }
@@ -78,12 +78,14 @@
 }
 
 static void
-print_common_flags(const struct iocb *cb)
+print_common_flags(struct tcb *tcp, const struct iocb *cb)
 {
 /* IOCB_FLAG_RESFD is available since v2.6.22-rc1~47 */
 #ifdef IOCB_FLAG_RESFD
-	if (cb->aio_flags & IOCB_FLAG_RESFD)
-		tprintf(", resfd=%d", cb->aio_resfd);
+	if (cb->aio_flags & IOCB_FLAG_RESFD) {
+		tprints(", resfd=");
+		printfd(tcp, cb->aio_resfd);
+	}
 	if (cb->aio_flags & ~IOCB_FLAG_RESFD)
 		tprintf(", flags=%x", cb->aio_flags);
 #endif
@@ -98,7 +100,7 @@
 }
 
 static enum iocb_sub
-print_iocb_header(const struct iocb *cb)
+print_iocb_header(struct tcb *tcp, const struct iocb *cb)
 {
 	enum iocb_sub sub;
 
@@ -113,7 +115,8 @@
 	if (cb->aio_reqprio)
 		tprintf(", reqprio=%hd", cb->aio_reqprio);
 
-	tprintf(", fildes=%d", cb->aio_fildes);
+	tprints(", fildes=");
+	printfd(tcp, cb->aio_fildes);
 
 	return sub;
 }
@@ -121,7 +124,7 @@
 static void
 print_iocb(struct tcb *tcp, const struct iocb *cb)
 {
-	enum iocb_sub sub = print_iocb_header(cb);
+	enum iocb_sub sub = print_iocb_header(tcp, cb);
 
 	switch (sub) {
 	case SUB_COMMON:
@@ -134,7 +137,7 @@
 		}
 		tprintf(", nbytes=%" PRIu64 ", offset=%" PRId64,
 			(uint64_t) cb->aio_nbytes, (int64_t) cb->aio_offset);
-		print_common_flags(cb);
+		print_common_flags(tcp, cb);
 		break;
 	case SUB_VECTOR:
 		if (iocb_is_valid(cb)) {
@@ -149,7 +152,7 @@
 				(uint64_t) cb->aio_nbytes);
 		}
 		tprintf(", offset=%" PRId64, (int64_t) cb->aio_offset);
-		print_common_flags(cb);
+		print_common_flags(tcp, cb);
 		break;
 	case SUB_NONE:
 		break;
@@ -182,7 +185,8 @@
 	const unsigned long addr = tcp->u_arg[2];
 	unsigned long iocbp;
 
-	tprintf("%lu, %ld, ", tcp->u_arg[0], nr);
+	printaddr(tcp->u_arg[0]);
+	tprintf(", %ld, ", nr);
 
 	if (nr < 0)
 		printaddr(addr);
@@ -209,12 +213,14 @@
 SYS_FUNC(io_cancel)
 {
 	if (entering(tcp)) {
-		tprintf("%lu, ", tcp->u_arg[0]);
+		printaddr(tcp->u_arg[0]);
+		tprints(", ");
+
 		struct iocb cb;
 
 		if (!umove_or_printaddr(tcp, tcp->u_arg[1], &cb)) {
 			tprints("{");
-			print_iocb_header(&cb);
+			print_iocb_header(tcp, &cb);
 			tprints("}");
 		}
 		tprints(", ");
@@ -230,8 +236,8 @@
 SYS_FUNC(io_getevents)
 {
 	if (entering(tcp)) {
-		tprintf("%lu, %ld, %ld, ",
-			tcp->u_arg[0],
+		printaddr(tcp->u_arg[0]);
+		tprintf(", %ld, %ld, ",
 			widen_to_long(tcp->u_arg[1]),
 			widen_to_long(tcp->u_arg[2]));
 	} else {
diff --git a/bootstrap b/bootstrap
index 395fc80..f7ef6f7 100755
--- a/bootstrap
+++ b/bootstrap
@@ -5,7 +5,9 @@
 	rm -rf $tests
 	mkdir $tests
 	s='[[:space:]]*'
-	sed "s/@arch@/@arch_$m@/;s/^MPERS_NAME$s=.*/& $m/;s/^ARCH_MFLAGS$s=.*/& -$m/" \
+	sed "s/@arch@/@arch_$m@/;
+	     s/^MPERS_NAME$s=.*/& $m/;
+	     s/^ARCH_MFLAGS$s=.*/& -DMPERS_IS_\$(MPERS_NAME) -$m/" \
 		tests/Makefile.am > $tests/Makefile.am
 	for f in tests/*; do
 		case "${f##*/}" in
diff --git a/btrfs.c b/btrfs.c
index 9c71768..1306cef 100644
--- a/btrfs.c
+++ b/btrfs.c
@@ -32,6 +32,7 @@
 #include DEF_MPERS_TYPE(struct_btrfs_ioctl_dev_replace_args)
 #include DEF_MPERS_TYPE(struct_btrfs_ioctl_send_args)
 #include DEF_MPERS_TYPE(struct_btrfs_ioctl_received_subvol_args)
+#include DEF_MPERS_TYPE(struct_btrfs_ioctl_vol_args_v2)
 
 # include <linux/btrfs.h>
 
@@ -41,6 +42,8 @@
 	struct_btrfs_ioctl_send_args;
 typedef struct btrfs_ioctl_received_subvol_args
 	struct_btrfs_ioctl_received_subvol_args;
+typedef struct btrfs_ioctl_vol_args_v2
+	struct_btrfs_ioctl_vol_args_v2;
 
 #endif /* HAVE_LINUX_BTRFS_H */
 
@@ -373,14 +376,14 @@
 }
 
 static void
-btrfs_print_qgroup_inherit(struct tcb *tcp, const uint64_t qgi_addr)
+btrfs_print_qgroup_inherit(struct tcb *tcp, const unsigned long qgi_addr)
 {
 	struct btrfs_qgroup_inherit inherit;
 
 	if (umove_or_printaddr(tcp, qgi_addr, &inherit))
 		return;
 
-	tprintf("{flags=");
+	tprints("{flags=");
 	printflags64(btrfs_qgroup_inherit_flags, inherit.flags,
 		     "BTRFS_QGROUP_INHERIT_???");
 	tprintf(", num_qgroups=%" PRI__u64 ", num_ref_copies=%" PRI__u64
@@ -420,7 +423,7 @@
 			uint64_t buf_addr, uint64_t buf_size, bool print_size)
 {
 	if (entering(tcp)) {
-		tprintf("{key={tree_id=");
+		tprints("{key={tree_id=");
 		btrfs_print_objectid(key->tree_id);
 
 		if (key->min_objectid != BTRFS_FIRST_FREE_OBJECTID ||
@@ -1294,7 +1297,7 @@
 
 	case BTRFS_IOC_SNAP_CREATE_V2:
 	case BTRFS_IOC_SUBVOL_CREATE_V2: { /* code is W, but is actually RW */
-		struct btrfs_ioctl_vol_args_v2 args;
+		struct_btrfs_ioctl_vol_args_v2 args;
 
 		if (entering(tcp))
 			tprints(", ");
@@ -1313,19 +1316,19 @@
 			printflags64(btrfs_snap_flags_v2, args.flags,
 				     "BTRFS_SUBVOL_???");
 			if (args.flags & BTRFS_SUBVOL_QGROUP_INHERIT) {
-				tprintf(", size=%" PRI__u64 ", qgroup_inherit=",
-					args.size);
+				tprintf(", size=%llu, qgroup_inherit=",
+					(unsigned long long) args.size);
 
 				btrfs_print_qgroup_inherit(tcp,
-					(unsigned long)args.qgroup_inherit);
+					(unsigned long) args.qgroup_inherit);
 			}
-			tprintf(", name=");
+			tprints(", name=");
 			print_quoted_string(args.name, sizeof(args.name),
 					    QUOTE_0_TERMINATED);
 			tprints("}");
 			return 0;
 		}
-		tprintf("{transid=%" PRI__u64 "}", args.transid);
+		tprintf("{transid=%llu}", (unsigned long long) args.transid);
 		break;
 	}
 
diff --git a/chmod.c b/chmod.c
index 83741c9..fd76490 100644
--- a/chmod.c
+++ b/chmod.c
@@ -4,7 +4,8 @@
 decode_chmod(struct tcb *tcp, const int offset)
 {
 	printpath(tcp, tcp->u_arg[offset]);
-	tprintf(", %#lo", tcp->u_arg[offset + 1]);
+	tprints(", ");
+	print_numeric_umode_t(tcp->u_arg[offset + 1]);
 }
 
 SYS_FUNC(chmod)
@@ -25,7 +26,8 @@
 SYS_FUNC(fchmod)
 {
 	printfd(tcp, tcp->u_arg[0]);
-	tprintf(", %#lo", tcp->u_arg[1]);
+	tprints(", ");
+	print_numeric_umode_t(tcp->u_arg[1]);
 
 	return RVAL_DECODED;
 }
diff --git a/clone.c b/clone.c
index 99d0da7..604a695 100644
--- a/clone.c
+++ b/clone.c
@@ -42,10 +42,10 @@
 #if defined IA64
 # define ARG_FLAGS	0
 # define ARG_STACK	1
-# define ARG_STACKSIZE	(tcp->scno == SYS_clone2 ? 2 : -1)
-# define ARG_PTID	(tcp->scno == SYS_clone2 ? 3 : 2)
-# define ARG_CTID	(tcp->scno == SYS_clone2 ? 4 : 3)
-# define ARG_TLS	(tcp->scno == SYS_clone2 ? 5 : 4)
+# define ARG_STACKSIZE	(tcp->scno == __NR_clone2 ? 2 : -1)
+# define ARG_PTID	(tcp->scno == __NR_clone2 ? 3 : 2)
+# define ARG_CTID	(tcp->scno == __NR_clone2 ? 4 : 3)
+# define ARG_TLS	(tcp->scno == __NR_clone2 ? 5 : 4)
 #elif defined S390 || defined S390X || defined CRISV10 || defined CRISV32
 # define ARG_STACK	0
 # define ARG_FLAGS	1
@@ -59,7 +59,7 @@
 # define ARG_PTID	2
 # define ARG_CTID	((current_personality != 1) ? 3 : 4)
 # define ARG_TLS	((current_personality != 1) ? 4 : 3)
-#elif defined ALPHA || defined TILE || defined OR1K
+#elif defined ALPHA || defined TILE || defined OR1K || defined RISCV
 # define ARG_FLAGS	0
 # define ARG_STACK	1
 # define ARG_PTID	2
diff --git a/configure.ac b/configure.ac
index 4af1649..404dfb9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -187,6 +187,11 @@
 	AC_DEFINE([XTENSA], 1, [Define for the Xtensa architecture])
 	;;
 
+riscv*)
+	arch=riscv
+	AC_DEFINE([RISCV], 1, [Define for the RISC-V architecture])
+	;;
+
 *)
 	AC_MSG_RESULT([NO!])
 	AC_MSG_ERROR([architecture $host_cpu is not supported by strace])
@@ -202,6 +207,7 @@
 AC_SUBST(arch_m32)
 AC_SUBST(arch_mx32)
 
+MIPS_ABI=
 if test "$arch" = mips; then
 	AC_CACHE_CHECK([for _MIPS_SIM], [st_cv__MIPS_SIM],
 		       [AC_COMPUTE_INT([st_cv__MIPS_SIM], [_MIPS_SIM],
@@ -229,7 +235,9 @@
 		n64) AC_DEFINE([LINUX_MIPSN64], [1], [Define for _MIPS_SIM_ABI64.]);;
 		*) AC_MSG_ERROR([Unsupported _MIPS_SIM]);;
 	esac
+	MIPS_ABI="$st_cv_mips_abi"
 fi
+AC_SUBST(MIPS_ABI)
 
 AC_ARG_ENABLE([arm-oabi],
 	      [AS_HELP_STRING([--enable-arm-oabi],
@@ -267,22 +275,13 @@
 AC_SUBST([WARN_CFLAGS])
 
 AC_C_BIGENDIAN
-AC_C_CONST
 AC_C_TYPEOF
 
-AC_TYPE_GETGROUPS
-AC_TYPE_MODE_T
-AC_TYPE_SIGNAL
 AC_TYPE_UID_T
 
-AC_HEADER_DIRENT
-AC_HEADER_MAJOR
-AC_HEADER_STAT
-AC_HEADER_STDBOOL
-AC_HEADER_STDC
-
 AC_CHECK_FUNCS(m4_normalize([
 	accept4
+	fallocate
 	fanotify_mark
 	fopen64
 	fork
@@ -297,7 +296,7 @@
 	preadv
 	process_vm_readv
 	pwritev
-	sigaction
+	readahead
 	signalfd
 	stpcpy
 	strerror
@@ -317,6 +316,12 @@
 [#include <sys/types.h>
 #include <asm/stat.h>])
 
+AC_CHECK_MEMBERS([struct stat.st_mtime_nsec, struct stat64.st_mtime_nsec],,,
+[#include <sys/types.h>
+#include <asm/stat.h>])
+
+AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
+
 AC_CHECK_TYPES(m4_normalize([
 	struct pt_all_user_regs,
 	struct ia64_fpreg,
@@ -332,30 +337,11 @@
 [#include <sys/types.h>
 #include <linux/fcntl.h>])
 
-AC_CHECK_MEMBERS(m4_normalize([
-	struct stat.st_atim.tv_nsec,
-	struct stat.st_blksize,
-	struct stat.st_blocks,
-	struct stat.st_ctim.tv_nsec,
-	struct stat.st_flags,
-	struct stat.st_fstype,
-	struct stat.st_gen,
-	struct stat.st_mtim.tv_nsec,
-	struct stat.st_rdev
-]))
-
 AC_CHECK_MEMBERS([struct timex.tai],,, [#include <sys/timex.h>])
 
 AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
 
 AC_CHECK_MEMBERS(m4_normalize([
-	struct stat.st_atime_nsec,
-	struct stat.st_ctime_nsec,
-	struct stat.st_mtime_nsec
-]),,, [#include <sys/types.h>
-#include <asm/stat.h>])
-
-AC_CHECK_MEMBERS(m4_normalize([
 	siginfo_t.si_syscall,
 	siginfo_t.si_timerid,
 	siginfo_t.si_overrun
@@ -368,6 +354,7 @@
 	elf.h
 	inttypes.h
 	linux/bsg.h
+	linux/dqblk_xfs.h
 	linux/falloc.h
 	linux/fiemap.h
 	linux/filter.h
@@ -377,6 +364,7 @@
 	linux/mmtimer.h
 	linux/msg.h
 	linux/perf_event.h
+	linux/quota.h
 	linux/seccomp.h
 	linux/securebits.h
 	linux/sem.h
@@ -393,6 +381,7 @@
 	sys/fanotify.h
 	sys/ipc.h
 	sys/msg.h
+	sys/quota.h
 	sys/reg.h
 	sys/sem.h
 	sys/shm.h
diff --git a/defs.h b/defs.h
index 4b7e8ed..2b4118b 100644
--- a/defs.h
+++ b/defs.h
@@ -27,20 +27,19 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_DEFS_H
+#define STRACE_DEFS_H
+
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
 
 #include <features.h>
-#ifdef HAVE_STDBOOL_H
-# include <stdbool.h>
-#endif
+#include <stdbool.h>
 #include <stdint.h>
 #include <inttypes.h>
 #include <sys/types.h>
-#ifdef STDC_HEADERS
-# include <stddef.h>
-#endif
+#include <stddef.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -52,7 +51,7 @@
 #include <errno.h>
 #include <time.h>
 #include <sys/time.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #include "mpers_type.h"
 #include "gcc_compat.h"
@@ -69,11 +68,6 @@
 extern char *stpcpy(char *dst, const char *src);
 #endif
 
-#ifndef offsetof
-# define offsetof(type, member)	\
-	(((char *) &(((type *) NULL)->member)) - ((char *) (type *) NULL))
-#endif
-
 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
 
 /* macros */
@@ -148,130 +142,53 @@
 # define ERESTART_RESTARTBLOCK 516
 #endif
 
-#if defined(SPARC) || defined(SPARC64)
-# define PERSONALITY0_WORDSIZE 4
-# if defined(SPARC64)
-#  define SUPPORTED_PERSONALITIES 2
-#  define PERSONALITY1_WORDSIZE 8
-#  ifdef HAVE_M32_MPERS
-#   define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
-#   define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
-#   define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
-#   define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
-#  endif
-# endif
-#endif
-
-#ifdef X86_64
+#if defined X86_64
 # define SUPPORTED_PERSONALITIES 3
-# define PERSONALITY0_WORDSIZE 8
-# define PERSONALITY1_WORDSIZE 4
 # define PERSONALITY2_WORDSIZE 4
-# ifdef HAVE_M32_MPERS
-#  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
-#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
-# endif
-# ifdef HAVE_MX32_MPERS
-#  define PERSONALITY2_INCLUDE_FUNCS "mx32_funcs.h"
-#  define PERSONALITY2_INCLUDE_PRINTERS_DECLS "mx32_printer_decls.h"
-#  define PERSONALITY2_INCLUDE_PRINTERS_DEFS "mx32_printer_defs.h"
-#  define MPERS_mx32_IOCTL_MACROS "ioctl_redefs2.h"
-# endif
-#endif
-
-#ifdef X32
+#elif defined AARCH64 \
+   || defined POWERPC64 \
+   || defined RISCV \
+   || defined SPARC64 \
+   || defined TILE \
+   || defined X32
 # define SUPPORTED_PERSONALITIES 2
-# define PERSONALITY0_WORDSIZE 4
-# define PERSONALITY1_WORDSIZE 4
-# ifdef HAVE_M32_MPERS
-#  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
-#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
-# endif
-#endif
-
-#ifdef ARM
-/* one personality */
-#endif
-
-#ifdef AARCH64
-/* The existing ARM personality, then AArch64 */
-# define SUPPORTED_PERSONALITIES 2
-# define PERSONALITY0_WORDSIZE 8
-# define PERSONALITY1_WORDSIZE 4
-# ifdef HAVE_M32_MPERS
-#  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
-#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
-# endif
-#endif
-
-#ifdef POWERPC64
-# define SUPPORTED_PERSONALITIES 2
-# define PERSONALITY0_WORDSIZE 8
-# define PERSONALITY1_WORDSIZE 4
-# ifdef HAVE_M32_MPERS
-#  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
-#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
-# endif
-#endif
-
-#ifdef TILE
-# define SUPPORTED_PERSONALITIES 2
-# define PERSONALITY0_WORDSIZE 8
-# define PERSONALITY1_WORDSIZE 4
-# ifdef __tilepro__
-#  define DEFAULT_PERSONALITY 1
-# endif
-# ifdef HAVE_M32_MPERS
-#  define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
-#  define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
-#  define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
-# endif
-#endif
-
-#ifndef SUPPORTED_PERSONALITIES
+#else
 # define SUPPORTED_PERSONALITIES 1
 #endif
-#ifndef DEFAULT_PERSONALITY
+
+#if defined TILE && defined __tilepro__
+# define DEFAULT_PERSONALITY 1
+#else
 # define DEFAULT_PERSONALITY 0
 #endif
-#ifndef PERSONALITY0_WORDSIZE
-# define PERSONALITY0_WORDSIZE SIZEOF_LONG
+
+#define PERSONALITY0_WORDSIZE SIZEOF_LONG
+#define PERSONALITY0_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
+#define PERSONALITY0_INCLUDE_PRINTERS_DEFS "native_printer_defs.h"
+
+#if SUPPORTED_PERSONALITIES > 1
+# define PERSONALITY1_WORDSIZE 4
 #endif
 
-#ifndef PERSONALITY0_INCLUDE_PRINTERS_DECLS
-# define PERSONALITY0_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
-#endif
-#ifndef PERSONALITY0_INCLUDE_PRINTERS_DEFS
-# define PERSONALITY0_INCLUDE_PRINTERS_DEFS "native_printer_defs.h"
-#endif
-
-#ifndef PERSONALITY1_INCLUDE_PRINTERS_DECLS
+#if SUPPORTED_PERSONALITIES > 1 && defined HAVE_M32_MPERS
+# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
+# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
+# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
+# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
+#else
 # define PERSONALITY1_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
-#endif
-#ifndef PERSONALITY1_INCLUDE_PRINTERS_DEFS
 # define PERSONALITY1_INCLUDE_PRINTERS_DEFS "native_printer_defs.h"
-#endif
-
-#ifndef PERSONALITY2_INCLUDE_PRINTERS_DECLS
-# define PERSONALITY2_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
-#endif
-#ifndef PERSONALITY2_INCLUDE_PRINTERS_DEFS
-# define PERSONALITY2_INCLUDE_PRINTERS_DEFS "native_printer_defs.h"
-#endif
-
-#ifndef PERSONALITY1_INCLUDE_FUNCS
 # define PERSONALITY1_INCLUDE_FUNCS "empty.h"
 #endif
-#ifndef PERSONALITY2_INCLUDE_FUNCS
+
+#if SUPPORTED_PERSONALITIES > 2 && defined HAVE_MX32_MPERS
+# define PERSONALITY2_INCLUDE_FUNCS "mx32_funcs.h"
+# define PERSONALITY2_INCLUDE_PRINTERS_DECLS "mx32_printer_decls.h"
+# define PERSONALITY2_INCLUDE_PRINTERS_DEFS "mx32_printer_defs.h"
+# define MPERS_mx32_IOCTL_MACROS "ioctl_redefs2.h"
+#else
+# define PERSONALITY2_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
+# define PERSONALITY2_INCLUDE_PRINTERS_DEFS "native_printer_defs.h"
 # define PERSONALITY2_INCLUDE_FUNCS "empty.h"
 #endif
 
@@ -299,7 +216,7 @@
 	int flags;		/* See below for TCB_ values */
 	int pid;		/* If 0, this tcb is free */
 	int qual_flg;		/* qual_flags[scno] or DEFAULT_QUAL_FLAGS + RAW */
-	int u_error;		/* Error code */
+	unsigned long u_error;	/* Error code */
 	long scno;		/* System call number */
 	long u_arg[MAX_ARGS];	/* System call arguments */
 #if HAVE_STRUCT_TCB_EXT_ARG
@@ -432,6 +349,7 @@
  || defined(BFIN) \
  || defined(M68K) \
  || defined(MICROBLAZE) \
+ || defined(RISCV) \
  || defined(S390) \
  || defined(SH) || defined(SH64) \
  || defined(SPARC) || defined(SPARC64) \
@@ -528,6 +446,7 @@
 extern void get_regs(pid_t pid);
 extern int get_scno(struct tcb *tcp);
 extern const char *syscall_name(long scno);
+extern const char *err_name(unsigned long err);
 
 extern bool is_erestart(struct tcb *);
 extern void temporarily_clear_syserror(struct tcb *);
@@ -594,8 +513,9 @@
 extern int string_to_uint(const char *str);
 extern int next_set_bit(const void *bit_array, unsigned cur_bit, unsigned size_bits);
 
-#define QUOTE_0_TERMINATED			0x01
-#define QUOTE_OMIT_LEADING_TRAILING_QUOTES	0x02
+#define QUOTE_0_TERMINATED                      0x01
+#define QUOTE_OMIT_LEADING_TRAILING_QUOTES      0x02
+#define QUOTE_OMIT_TRAILING_0                   0x08
 
 extern int string_quote(const char *, char *, unsigned int, unsigned int);
 extern int print_quoted_string(const char *, unsigned int, unsigned int);
@@ -617,6 +537,8 @@
 extern void printaddr(long);
 extern void printxvals(const uint64_t, const char *, const struct xlat *, ...)
 	ATTRIBUTE_SENTINEL;
+extern long long getarg_ll(struct tcb *tcp, int argn);
+extern unsigned long long getarg_ull(struct tcb *tcp, int argn);
 extern int printargs(struct tcb *);
 extern int printargs_u(struct tcb *);
 extern int printargs_d(struct tcb *);
@@ -624,15 +546,18 @@
 extern void addflags(const struct xlat *, uint64_t);
 extern int printflags64(const struct xlat *, uint64_t, const char *);
 extern const char *sprintflags(const char *, const struct xlat *, uint64_t);
-extern const char *sprintmode(unsigned int);
 extern const char *sprinttime(time_t);
+extern void print_symbolic_mode_t(unsigned int);
+extern void print_numeric_umode_t(unsigned short);
+extern void print_numeric_long_umask(unsigned long);
 extern void dumpiov_in_msghdr(struct tcb *, long, unsigned long);
 extern void dumpiov_in_mmsghdr(struct tcb *, long);
 extern void dumpiov_upto(struct tcb *, int, long, unsigned long);
 #define dumpiov(tcp, len, addr) \
 	dumpiov_upto((tcp), (len), (addr), (unsigned long) -1L)
 extern void dumpstr(struct tcb *, long, int);
-extern void printstr(struct tcb *, long, long);
+extern void printstr_ex(struct tcb *, long addr, long len,
+	unsigned int user_style);
 extern bool printnum_short(struct tcb *, long, const char *)
 	ATTRIBUTE_FORMAT((printf, 3, 0));
 extern bool printnum_int(struct tcb *, long, const char *)
@@ -702,6 +627,9 @@
 extern void print_seccomp_filter(struct tcb *, unsigned long);
 extern void print_seccomp_fprog(struct tcb *, unsigned long, unsigned short);
 
+struct strace_stat;
+extern void print_struct_stat(struct tcb *tcp, const struct strace_stat *const st);
+
 struct strace_statfs;
 extern void print_struct_statfs(struct tcb *tcp, long);
 extern void print_struct_statfs64(struct tcb *tcp, long, unsigned long);
@@ -735,6 +663,12 @@
 extern void unwind_capture_stacktrace(struct tcb* tcp);
 #endif
 
+static inline void
+printstr(struct tcb *tcp, long addr, long len)
+{
+	printstr_ex(tcp, addr, len, 0);
+}
+
 static inline int
 printflags(const struct xlat *x, unsigned int flags, const char *dflt)
 {
@@ -818,13 +752,25 @@
 #endif
 
 /*
- * Widen without sign-extension a signed integer type to unsigned long long.
+ * Zero-extend a signed integer type to unsigned long long.
  */
-#define widen_to_ull(v) \
-	(sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
+#define zero_extend_signed_to_ull(v) \
+	(sizeof(v) == sizeof(char) ? (unsigned long long) (unsigned char) (v) : \
+	 sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
+	 sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
 	 sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
 	 (unsigned long long) (v))
 
+/*
+ * Sign-extend an unsigned integer type to long long.
+ */
+#define sign_extend_unsigned_to_ll(v) \
+	(sizeof(v) == sizeof(char) ? (long long) (char) (v) : \
+	 sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
+	 sizeof(v) == sizeof(int) ? (long long) (int) (v) : \
+	 sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
+	 (long long) (v))
+
 extern const struct_sysent sysent0[];
 extern const char *const errnoent0[];
 extern const char *const signalent0[];
@@ -863,10 +809,13 @@
 #endif /* !IN_MPERS_BOOTSTRAP */
 
 /*
- * If you need non-NULL sysent[scno].sys_func and sysent[scno].sys_name
+ * If you need non-NULL sysent[scno].sys_func, non-NULL sysent[scno].sys_name,
+ * and non-indirect sysent[scno].sys_flags.
  */
 #define SCNO_IS_VALID(scno) \
-	((unsigned long)(scno) < nsyscalls && sysent[scno].sys_func)
+	((unsigned long)(scno) < nsyscalls \
+	 && sysent[scno].sys_func \
+	 && !(sysent[scno].sys_flags & TRACE_INDIRECT_SUBCALL))
 
 /* Only ensures that sysent[scno] isn't out of range */
 #define SCNO_IN_RANGE(scno) \
@@ -899,3 +848,5 @@
 #define PRI__d64 PRI__64"d"
 #define PRI__u64 PRI__64"u"
 #define PRI__x64 PRI__64"x"
+
+#endif /* !STRACE_DEFS_H */
diff --git a/dirent.c b/dirent.c
index 75e3635..c277675 100644
--- a/dirent.c
+++ b/dirent.c
@@ -48,8 +48,8 @@
 		return;
 
 	tprintf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
-		widen_to_ull(d.d_ino),
-		widen_to_ull(d.d_off), d.d_reclen);
+		zero_extend_signed_to_ull(d.d_ino),
+		zero_extend_signed_to_ull(d.d_off), d.d_reclen);
 	if (d.d_reclen > D_NAME_LEN_MAX)
 		d.d_reclen = D_NAME_LEN_MAX;
 	printpathn(tcp, addr + offsetof(kernel_dirent, d_name), d.d_reclen);
@@ -127,8 +127,9 @@
 
 			tprintf("%s{d_ino=%llu, d_off=%llu, d_reclen=%u"
 				", d_name=", i ? ", " : "",
-				widen_to_ull(d->d_ino),
-				widen_to_ull(d->d_off), d->d_reclen);
+				zero_extend_signed_to_ull(d->d_ino),
+				zero_extend_signed_to_ull(d->d_off),
+				d->d_reclen);
 
 			if (print_quoted_string(d->d_name, d_name_len,
 					        QUOTE_0_TERMINATED) > 0) {
diff --git a/evdev.c b/evdev.c
index b7b6402..b24f9d3 100644
--- a/evdev.c
+++ b/evdev.c
@@ -37,7 +37,7 @@
 
 typedef struct ff_effect struct_ff_effect;
 
-#endif /* HAVE_LINUX_BTRFS_H */
+#endif /* HAVE_LINUX_INPUT_H */
 
 #include MPERS_DEFS
 
diff --git a/fadvise.c b/fadvise.c
index 2001394..34933f7 100644
--- a/fadvise.c
+++ b/fadvise.c
@@ -42,7 +42,7 @@
 
 	printfd(tcp, tcp->u_arg[0]);
 	argn = printllval(tcp, ", %lld", 1);
-	tprintf(", %ld, ", tcp->u_arg[argn++]);
+	tprintf(", %llu, ", getarg_ull(tcp, argn++));
 	printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???");
 
 	return RVAL_DECODED;
diff --git a/fallocate.c b/fallocate.c
index 0b1cfec..b707279 100644
--- a/fallocate.c
+++ b/fallocate.c
@@ -19,10 +19,10 @@
 	tprints(", ");
 
 	/* offset */
-	argn = printllval(tcp, "%llu, ", 2);
+	argn = printllval(tcp, "%lld, ", 2);
 
 	/* len */
-	printllval(tcp, "%llu", argn);
+	printllval(tcp, "%lld", argn);
 
 	return RVAL_DECODED;
 }
diff --git a/fetch_struct_stat.c b/fetch_struct_stat.c
new file mode 100644
index 0000000..399b78c
--- /dev/null
+++ b/fetch_struct_stat.c
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+#include DEF_MPERS_TYPE(struct_stat)
+
+#include "asm_stat.h"
+
+#if defined MPERS_IS_m32
+# undef HAVE_STRUCT_STAT
+# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# ifdef HAVE_M32_STRUCT_STAT
+#  define HAVE_STRUCT_STAT 1
+#  ifdef HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC
+#   define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#  endif /* HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC */
+# endif /* HAVE_M32_STRUCT_STAT */
+#elif defined MPERS_IS_mx32
+# undef HAVE_STRUCT_STAT
+# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# ifdef HAVE_MX32_STRUCT_STAT
+#  define HAVE_STRUCT_STAT 1
+#  ifdef HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC
+#   define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#  endif /* HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC */
+# endif /* HAVE_MX32_STRUCT_STAT */
+#else /* !MPERS_IS_m32 && !MPERS_IS_mx32 */
+# define HAVE_STRUCT_STAT 1
+#endif
+
+#ifndef HAVE_STRUCT_STAT
+struct stat {};
+#endif
+
+typedef struct stat struct_stat;
+
+#include MPERS_DEFS
+
+#include "stat.h"
+
+#ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# define TIME_NSEC(arg) zero_extend_signed_to_ull(arg)
+#else
+# define TIME_NSEC(arg) 0
+#endif
+
+MPERS_PRINTER_DECL(bool, fetch_struct_stat,
+		   struct tcb *tcp, const unsigned long addr,
+		   struct strace_stat *const dst)
+{
+#ifdef HAVE_STRUCT_STAT
+	struct_stat buf;
+	if (umove_or_printaddr(tcp, addr, &buf))
+		return false;
+
+	dst->dev = zero_extend_signed_to_ull(buf.st_dev);
+	dst->ino = zero_extend_signed_to_ull(buf.st_ino);
+	dst->rdev = zero_extend_signed_to_ull(buf.st_rdev);
+	dst->size = zero_extend_signed_to_ull(buf.st_size);
+	dst->blocks = zero_extend_signed_to_ull(buf.st_blocks);
+	dst->blksize = zero_extend_signed_to_ull(buf.st_blksize);
+	dst->mode = zero_extend_signed_to_ull(buf.st_mode);
+	dst->nlink = zero_extend_signed_to_ull(buf.st_nlink);
+	dst->uid = zero_extend_signed_to_ull(buf.st_uid);
+	dst->gid = zero_extend_signed_to_ull(buf.st_gid);
+	dst->atime = sign_extend_unsigned_to_ll(buf.st_atime);
+	dst->ctime = sign_extend_unsigned_to_ll(buf.st_ctime);
+	dst->mtime = sign_extend_unsigned_to_ll(buf.st_mtime);
+	dst->atime_nsec = TIME_NSEC(buf.st_atime_nsec);
+	dst->ctime_nsec = TIME_NSEC(buf.st_ctime_nsec);
+	dst->mtime_nsec = TIME_NSEC(buf.st_mtime_nsec);
+	return true;
+#else /* !HAVE_STRUCT_STAT */
+	printaddr(addr);
+	return false;
+#endif
+}
diff --git a/fetch_struct_stat64.c b/fetch_struct_stat64.c
new file mode 100644
index 0000000..b7281b5
--- /dev/null
+++ b/fetch_struct_stat64.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+#include DEF_MPERS_TYPE(struct_stat64)
+
+#include "asm_stat.h"
+
+#if defined MPERS_IS_m32
+# undef HAVE_STRUCT_STAT64
+# undef HAVE_STRUCT_STAT64_ST_MTIME_NSEC
+# ifdef HAVE_M32_STRUCT_STAT64
+#  define HAVE_STRUCT_STAT64 1
+#  ifdef HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC
+#   define HAVE_STRUCT_STAT64_ST_MTIME_NSEC 1
+#  endif /* HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC */
+# endif /* HAVE_M32_STRUCT_STAT64 */
+#elif defined MPERS_IS_mx32
+# undef HAVE_STRUCT_STAT64
+# undef HAVE_STRUCT_STAT64_ST_MTIME_NSEC
+# ifdef HAVE_MX32_STRUCT_STAT64
+#  define HAVE_STRUCT_STAT64 1
+#  ifdef HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC
+#   define HAVE_STRUCT_STAT64_ST_MTIME_NSEC 1
+#  endif /* HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC */
+# endif /* HAVE_MX32_STRUCT_STAT64 */
+#endif /* MPERS_IS_m32 || MPERS_IS_mx32 */
+
+#ifndef HAVE_STRUCT_STAT64
+struct stat64 {};
+#endif
+
+typedef struct stat64 struct_stat64;
+
+#include MPERS_DEFS
+
+#include "stat.h"
+
+#ifdef HAVE_STRUCT_STAT64_ST_MTIME_NSEC
+# define TIME_NSEC(arg) zero_extend_signed_to_ull(arg)
+#else
+# define TIME_NSEC(arg) 0
+#endif
+
+MPERS_PRINTER_DECL(bool, fetch_struct_stat64,
+		   struct tcb *tcp, const unsigned long addr,
+		   struct strace_stat *const dst)
+{
+#ifdef HAVE_STRUCT_STAT64
+	struct_stat64 buf;
+	if (umove_or_printaddr(tcp, addr, &buf))
+		return false;
+
+	dst->dev = zero_extend_signed_to_ull(buf.st_dev);
+	dst->ino = zero_extend_signed_to_ull(buf.st_ino);
+	dst->rdev = zero_extend_signed_to_ull(buf.st_rdev);
+	dst->size = zero_extend_signed_to_ull(buf.st_size);
+	dst->blocks = zero_extend_signed_to_ull(buf.st_blocks);
+	dst->blksize = zero_extend_signed_to_ull(buf.st_blksize);
+	dst->mode = zero_extend_signed_to_ull(buf.st_mode);
+	dst->nlink = zero_extend_signed_to_ull(buf.st_nlink);
+	dst->uid = zero_extend_signed_to_ull(buf.st_uid);
+	dst->gid = zero_extend_signed_to_ull(buf.st_gid);
+	dst->atime = sign_extend_unsigned_to_ll(buf.st_atime);
+	dst->ctime = sign_extend_unsigned_to_ll(buf.st_ctime);
+	dst->mtime = sign_extend_unsigned_to_ll(buf.st_mtime);
+	dst->atime_nsec = TIME_NSEC(buf.st_atime_nsec);
+	dst->ctime_nsec = TIME_NSEC(buf.st_ctime_nsec);
+	dst->mtime_nsec = TIME_NSEC(buf.st_mtime_nsec);
+	return true;
+#else /* !HAVE_STRUCT_STAT64 */
+	printaddr(addr);
+	return false;
+#endif
+}
diff --git a/fetch_struct_statfs.c b/fetch_struct_statfs.c
index 0cfe5ba..ddb248b 100644
--- a/fetch_struct_statfs.c
+++ b/fetch_struct_statfs.c
@@ -47,26 +47,26 @@
 	if (umove_or_printaddr(tcp, addr, &b))
 		return false;
 
-	p->f_type = widen_to_ull(b.f_type);
-	p->f_bsize = widen_to_ull(b.f_bsize);
-	p->f_blocks = widen_to_ull(b.f_blocks);
-	p->f_bfree = widen_to_ull(b.f_bfree);
-	p->f_bavail = widen_to_ull(b.f_bavail);
-	p->f_files = widen_to_ull(b.f_files);
-	p->f_ffree = widen_to_ull(b.f_ffree);
+	p->f_type = zero_extend_signed_to_ull(b.f_type);
+	p->f_bsize = zero_extend_signed_to_ull(b.f_bsize);
+	p->f_blocks = zero_extend_signed_to_ull(b.f_blocks);
+	p->f_bfree = zero_extend_signed_to_ull(b.f_bfree);
+	p->f_bavail = zero_extend_signed_to_ull(b.f_bavail);
+	p->f_files = zero_extend_signed_to_ull(b.f_files);
+	p->f_ffree = zero_extend_signed_to_ull(b.f_ffree);
 #if defined HAVE_STRUCT_STATFS_F_FSID_VAL
-	p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
-	p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
+	p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.val[0]);
+	p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.val[1]);
 #elif defined HAVE_STRUCT_STATFS_F_FSID___VAL
-	p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
-	p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
+	p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.__val[0]);
+	p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.__val[1]);
 #endif
-	p->f_namelen = widen_to_ull(b.f_namelen);
+	p->f_namelen = zero_extend_signed_to_ull(b.f_namelen);
 #ifdef HAVE_STRUCT_STATFS_F_FRSIZE
-	p->f_frsize = widen_to_ull(b.f_frsize);
+	p->f_frsize = zero_extend_signed_to_ull(b.f_frsize);
 #endif
 #ifdef HAVE_STRUCT_STATFS_F_FLAGS
-	p->f_flags = widen_to_ull(b.f_flags);
+	p->f_flags = zero_extend_signed_to_ull(b.f_flags);
 #endif
 
 	return true;
@@ -95,26 +95,26 @@
 	if (umove_or_printaddr(tcp, addr, &b))
 		return false;
 
-	p->f_type = widen_to_ull(b.f_type);
-	p->f_bsize = widen_to_ull(b.f_bsize);
-	p->f_blocks = widen_to_ull(b.f_blocks);
-	p->f_bfree = widen_to_ull(b.f_bfree);
-	p->f_bavail = widen_to_ull(b.f_bavail);
-	p->f_files = widen_to_ull(b.f_files);
-	p->f_ffree = widen_to_ull(b.f_ffree);
+	p->f_type = zero_extend_signed_to_ull(b.f_type);
+	p->f_bsize = zero_extend_signed_to_ull(b.f_bsize);
+	p->f_blocks = zero_extend_signed_to_ull(b.f_blocks);
+	p->f_bfree = zero_extend_signed_to_ull(b.f_bfree);
+	p->f_bavail = zero_extend_signed_to_ull(b.f_bavail);
+	p->f_files = zero_extend_signed_to_ull(b.f_files);
+	p->f_ffree = zero_extend_signed_to_ull(b.f_ffree);
 #if defined HAVE_STRUCT_STATFS64_F_FSID_VAL
-	p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
-	p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
+	p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.val[0]);
+	p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.val[1]);
 #elif defined HAVE_STRUCT_STATFS64_F_FSID___VAL
-	p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
-	p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
+	p->f_fsid[0] = zero_extend_signed_to_ull(b.f_fsid.__val[0]);
+	p->f_fsid[1] = zero_extend_signed_to_ull(b.f_fsid.__val[1]);
 #endif
-	p->f_namelen = widen_to_ull(b.f_namelen);
+	p->f_namelen = zero_extend_signed_to_ull(b.f_namelen);
 #ifdef HAVE_STRUCT_STATFS64_F_FRSIZE
-	p->f_frsize = widen_to_ull(b.f_frsize);
+	p->f_frsize = zero_extend_signed_to_ull(b.f_frsize);
 #endif
 #ifdef HAVE_STRUCT_STATFS64_F_FLAGS
-	p->f_flags = widen_to_ull(b.f_flags);
+	p->f_flags = zero_extend_signed_to_ull(b.f_flags);
 #endif
 
 	return true;
diff --git a/file.c b/file.c
deleted file mode 100644
index 3ea0b5d..0000000
--- a/file.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
- * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
- * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "defs.h"
-
-#undef dev_t
-#undef ino_t
-#undef mode_t
-#undef nlink_t
-#undef uid_t
-#undef gid_t
-#undef off_t
-#undef loff_t
-#define dev_t __kernel_dev_t
-#define ino_t __kernel_ino_t
-#define mode_t __kernel_mode_t
-#define nlink_t __kernel_nlink_t
-#define uid_t __kernel_uid_t
-#define gid_t __kernel_gid_t
-#define off_t __kernel_off_t
-#define loff_t __kernel_loff_t
-
-#include "asm_stat.h"
-
-#undef dev_t
-#undef ino_t
-#undef mode_t
-#undef nlink_t
-#undef uid_t
-#undef gid_t
-#undef off_t
-#undef loff_t
-#define dev_t dev_t
-#define ino_t ino_t
-#define mode_t mode_t
-#define nlink_t nlink_t
-#define uid_t uid_t
-#define gid_t gid_t
-#define off_t off_t
-#define loff_t loff_t
-
-/* for S_IFMT */
-#define stat libc_stat
-#define stat64 libc_stat64
-#include <sys/stat.h>
-#undef stat
-#undef stat64
-/* These might be macros. */
-#undef st_atime
-#undef st_mtime
-#undef st_ctime
-
-#if defined MAJOR_IN_SYSMACROS
-# include <sys/sysmacros.h>
-#elif defined MAJOR_IN_MKDEV
-# include <sys/mkdev.h>
-#endif
-
-/* several stats */
-
-#include "printstat.h"
-
-/* all locally defined structures provide these fields */
-#undef HAVE_STRUCT_STAT_ST_ATIME_NSEC
-#define HAVE_STRUCT_STAT_ST_ATIME_NSEC 1
-#undef HAVE_STRUCT_STAT_ST_CTIME_NSEC
-#define HAVE_STRUCT_STAT_ST_CTIME_NSEC 1
-#undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
-#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-
-#undef STAT32_PERSONALITY
-#if SUPPORTED_PERSONALITIES > 1
-# if defined AARCH64 || defined X86_64 || defined X32
-struct stat32 {
-	unsigned int	st_dev;
-	unsigned int	st_ino;
-	unsigned short	st_mode;
-	unsigned short	st_nlink;
-	unsigned short	st_uid;
-	unsigned short	st_gid;
-	unsigned int	st_rdev;
-	unsigned int	st_size;
-	unsigned int	st_blksize;
-	unsigned int	st_blocks;
-	unsigned int	st_atime;
-	unsigned int	st_atime_nsec;
-	unsigned int	st_mtime;
-	unsigned int	st_mtime_nsec;
-	unsigned int	st_ctime;
-	unsigned int	st_ctime_nsec;
-	unsigned int	__unused4;
-	unsigned int	__unused5;
-};
-#  define STAT32_PERSONALITY 1
-# elif defined POWERPC64
-struct stat32 {
-	unsigned int	st_dev;
-	unsigned int	st_ino;
-	unsigned int	st_mode;
-	unsigned short	st_nlink;
-	unsigned int	st_uid;
-	unsigned int	st_gid;
-	unsigned int	st_rdev;
-	unsigned int	st_size;
-	unsigned int	st_blksize;
-	unsigned int	st_blocks;
-	unsigned int	st_atime;
-	unsigned int	st_atime_nsec;
-	unsigned int	st_mtime;
-	unsigned int	st_mtime_nsec;
-	unsigned int	st_ctime;
-	unsigned int	st_ctime_nsec;
-	unsigned int	__unused4;
-	unsigned int	__unused5;
-};
-#  define STAT32_PERSONALITY 1
-# elif defined SPARC64
-struct stat32 {
-	unsigned short	st_dev;
-	unsigned int	st_ino;
-	unsigned short	st_mode;
-	unsigned short	st_nlink;
-	unsigned short	st_uid;
-	unsigned short	st_gid;
-	unsigned short	st_rdev;
-	unsigned int	st_size;
-	unsigned int	st_atime;
-	unsigned int	st_atime_nsec;
-	unsigned int	st_mtime;
-	unsigned int	st_mtime_nsec;
-	unsigned int	st_ctime;
-	unsigned int	st_ctime_nsec;
-	unsigned int	st_blksize;
-	unsigned int	st_blocks;
-	unsigned int	__unused4[2];
-};
-#  define STAT32_PERSONALITY 0
-# elif defined SPARC
-#  /* no 64-bit personalities */
-# elif defined TILE
-#  /* no 32-bit stat */
-# else
-#  warning FIXME: check whether struct stat32 definition is needed for this architecture!
-# endif /* X86_64 || X32 || POWERPC64 */
-#endif /* SUPPORTED_PERSONALITIES > 1 */
-
-#ifdef STAT32_PERSONALITY
-# define DO_PRINTSTAT do_printstat32
-# define STRUCT_STAT struct stat32
-# undef HAVE_STRUCT_STAT_ST_FLAGS
-# undef HAVE_STRUCT_STAT_ST_FSTYPE
-# undef HAVE_STRUCT_STAT_ST_GEN
-# include "printstat.h"
-#endif /* STAT32_PERSONALITY */
-
-#if defined(SPARC) || defined(SPARC64)
-
-struct solstat {
-	unsigned	st_dev;
-	unsigned int	st_pad1[3];     /* network id */
-	unsigned	st_ino;
-	unsigned	st_mode;
-	unsigned	st_nlink;
-	unsigned	st_uid;
-	unsigned	st_gid;
-	unsigned	st_rdev;
-	unsigned int	st_pad2[2];
-	unsigned int	st_size;
-	unsigned int	st_pad3;        /* st_size, off_t expansion */
-	unsigned int	st_atime;
-	unsigned int	st_atime_nsec;
-	unsigned int	st_mtime;
-	unsigned int	st_mtime_nsec;
-	unsigned int	st_ctime;
-	unsigned int	st_ctime_nsec;
-	unsigned int	st_blksize;
-	unsigned int	st_blocks;
-	char		st_fstype[16];
-	unsigned int	st_pad4[8];     /* expansion area */
-};
-
-# define DO_PRINTSTAT	do_printstat_sol
-# define STRUCT_STAT	struct solstat
-# define STAT_MAJOR(x)	(((x) >> 18) & 0x3fff)
-# define STAT_MINOR(x)	((x) & 0x3ffff)
-# undef HAVE_STRUCT_STAT_ST_FLAGS
-# undef HAVE_STRUCT_STAT_ST_FSTYPE
-# undef HAVE_STRUCT_STAT_ST_GEN
-# include "printstat.h"
-#endif /* SPARC || SPARC64 */
-
-static void
-printstat(struct tcb *tcp, long addr)
-{
-	struct stat statbuf;
-
-#ifdef STAT32_PERSONALITY
-	if (current_personality == STAT32_PERSONALITY) {
-		struct stat32 statbuf;
-
-		if (!umove_or_printaddr(tcp, addr, &statbuf))
-			do_printstat32(tcp, &statbuf);
-		return;
-	}
-#endif
-
-#if defined(SPARC) || defined(SPARC64)
-	if (current_personality == 1) {
-		struct solstat statbuf;
-
-		if (!umove_or_printaddr(tcp, addr, &statbuf))
-			do_printstat_sol(tcp, &statbuf);
-		return;
-	}
-#endif /* SPARC || SPARC64 */
-
-	if (!umove_or_printaddr(tcp, addr, &statbuf))
-		do_printstat(tcp, &statbuf);
-}
-
-SYS_FUNC(stat)
-{
-	if (entering(tcp)) {
-		printpath(tcp, tcp->u_arg[0]);
-		tprints(", ");
-	} else {
-		printstat(tcp, tcp->u_arg[1]);
-	}
-	return 0;
-}
-
-SYS_FUNC(fstat)
-{
-	if (entering(tcp)) {
-		printfd(tcp, tcp->u_arg[0]);
-		tprints(", ");
-	} else {
-		printstat(tcp, tcp->u_arg[1]);
-	}
-	return 0;
-}
-
-#if defined STAT32_PERSONALITY && !defined HAVE_STRUCT_STAT64
-# if defined AARCH64 || defined X86_64 || defined X32
-/*
- * Linux x86_64 and x32 have unified `struct stat' but their i386 personality
- * needs `struct stat64'.
- * linux/arch/x86/include/uapi/asm/stat.h defines `struct stat64' only for i386.
- *
- * Similarly, aarch64 has a unified `struct stat' but its arm personality
- * needs `struct stat64' (unlike x86, it shouldn't be packed).
- */
-struct stat64 {
-	unsigned long long	st_dev;
-	unsigned char	__pad0[4];
-	unsigned int	__st_ino;
-	unsigned int	st_mode;
-	unsigned int	st_nlink;
-	unsigned int	st_uid;
-	unsigned int	st_gid;
-	unsigned long long	st_rdev;
-	unsigned char	__pad3[4];
-	long long	st_size;
-	unsigned int	st_blksize;
-	unsigned long long	st_blocks;
-	unsigned int	st_atime;
-	unsigned int	st_atime_nsec;
-	unsigned int	st_mtime;
-	unsigned int	st_mtime_nsec;
-	unsigned int	st_ctime;
-	unsigned int	st_ctime_nsec;
-	unsigned long long	st_ino;
-}
-#  if defined X86_64 || defined X32
-  ATTRIBUTE_PACKED
-#   define STAT64_SIZE	96
-#  else
-#   define STAT64_SIZE	104
-#  endif
-;
-#  define HAVE_STRUCT_STAT64	1
-# else /* !(AARCH64 || X86_64 || X32) */
-#  warning FIXME: check whether struct stat64 definition is needed for this architecture!
-# endif
-#endif /* STAT32_PERSONALITY && !HAVE_STRUCT_STAT64 */
-
-#ifdef HAVE_STRUCT_STAT64
-
-# define DO_PRINTSTAT do_printstat64
-# define STRUCT_STAT struct stat64
-# undef HAVE_STRUCT_STAT_ST_FLAGS
-# undef HAVE_STRUCT_STAT_ST_FSTYPE
-# undef HAVE_STRUCT_STAT_ST_GEN
-# include "printstat.h"
-
-static void
-printstat64(struct tcb *tcp, long addr)
-{
-	struct stat64 statbuf;
-
-# ifdef STAT64_SIZE
-	(void) sizeof(char[sizeof statbuf == STAT64_SIZE ? 1 : -1]);
-# endif
-
-# ifdef STAT32_PERSONALITY
-	if (current_personality != STAT32_PERSONALITY) {
-		printstat(tcp, addr);
-		return;
-	}
-# endif /* STAT32_PERSONALITY */
-
-	if (!umove_or_printaddr(tcp, addr, &statbuf))
-		do_printstat64(tcp, &statbuf);
-}
-
-SYS_FUNC(stat64)
-{
-	if (entering(tcp)) {
-		printpath(tcp, tcp->u_arg[0]);
-		tprints(", ");
-	} else {
-		printstat64(tcp, tcp->u_arg[1]);
-	}
-	return 0;
-}
-
-SYS_FUNC(fstat64)
-{
-	if (entering(tcp)) {
-		printfd(tcp, tcp->u_arg[0]);
-		tprints(", ");
-	} else {
-		printstat64(tcp, tcp->u_arg[1]);
-	}
-	return 0;
-}
-
-#else
-
-SYS_FUNC(stat64)
-{
-	return sys_stat(tcp);
-}
-
-SYS_FUNC(fstat64)
-{
-	return sys_fstat(tcp);
-}
-
-#endif /* HAVE_STRUCT_STAT64 */
-
-SYS_FUNC(newfstatat)
-{
-	if (entering(tcp)) {
-		print_dirfd(tcp, tcp->u_arg[0]);
-		printpath(tcp, tcp->u_arg[1]);
-		tprints(", ");
-	} else {
-#if defined STAT32_PERSONALITY
-		if (current_personality == STAT32_PERSONALITY)
-			printstat64(tcp, tcp->u_arg[2]);
-		else
-			printstat(tcp, tcp->u_arg[2]);
-#elif defined HAVE_STRUCT_STAT64
-		printstat64(tcp, tcp->u_arg[2]);
-#else
-		printstat(tcp, tcp->u_arg[2]);
-#endif /* STAT32_PERSONALITY || HAVE_STRUCT_STAT64 */
-		tprints(", ");
-		printflags(at_flags, tcp->u_arg[3], "AT_???");
-	}
-	return 0;
-}
-
-#if defined(HAVE_STRUCT___OLD_KERNEL_STAT)
-
-static void
-convertoldstat(const struct __old_kernel_stat *oldbuf, struct stat *newbuf)
-{
-	memset(newbuf, 0, sizeof(*newbuf));
-	newbuf->st_dev = oldbuf->st_dev;
-	newbuf->st_ino = oldbuf->st_ino;
-	newbuf->st_mode = oldbuf->st_mode;
-	newbuf->st_nlink = oldbuf->st_nlink;
-	newbuf->st_uid = oldbuf->st_uid;
-	newbuf->st_gid = oldbuf->st_gid;
-	newbuf->st_rdev = oldbuf->st_rdev;
-	newbuf->st_size = oldbuf->st_size;
-	newbuf->st_atime = oldbuf->st_atime;
-	newbuf->st_mtime = oldbuf->st_mtime;
-	newbuf->st_ctime = oldbuf->st_ctime;
-}
-
-static void
-printoldstat(struct tcb *tcp, long addr)
-{
-	struct __old_kernel_stat statbuf;
-	struct stat newstatbuf;
-
-# if defined(SPARC) || defined(SPARC64)
-	if (current_personality == 1) {
-		struct solstat statbuf;
-
-		if (!umove_or_printaddr(tcp, addr, &statbuf))
-			do_printstat_sol(tcp, &statbuf);
-		return;
-	}
-# endif
-
-	if (!umove_or_printaddr(tcp, addr, &statbuf)) {
-		convertoldstat(&statbuf, &newstatbuf);
-		do_printstat(tcp, &newstatbuf);
-	}
-}
-
-SYS_FUNC(oldstat)
-{
-	if (entering(tcp)) {
-		printpath(tcp, tcp->u_arg[0]);
-		tprints(", ");
-	} else {
-		printoldstat(tcp, tcp->u_arg[1]);
-	}
-	return 0;
-}
-
-SYS_FUNC(oldfstat)
-{
-	if (entering(tcp)) {
-		printfd(tcp, tcp->u_arg[0]);
-		tprints(", ");
-	} else {
-		printoldstat(tcp, tcp->u_arg[1]);
-	}
-	return 0;
-}
-
-#endif /* HAVE_STRUCT___OLD_KERNEL_STAT */
-
-#if defined(SPARC) || defined(SPARC64)
-
-SYS_FUNC(xstat)
-{
-	if (entering(tcp)) {
-		tprintf("%ld, ", tcp->u_arg[0]);
-		printpath(tcp, tcp->u_arg[1]);
-		tprints(", ");
-	} else {
-		printstat(tcp, tcp->u_arg[2]);
-	}
-	return 0;
-}
-
-SYS_FUNC(fxstat)
-{
-	if (entering(tcp)) {
-		tprintf("%ld, ", tcp->u_arg[0]);
-		printfd(tcp, tcp->u_arg[1]);
-		tprints(", ");
-	} else {
-		printstat(tcp, tcp->u_arg[2]);
-	}
-	return 0;
-}
-
-#endif /* SPARC || SPARC64 */
diff --git a/flock.h b/flock.h
index b1ab8ff..afa5148 100644
--- a/flock.h
+++ b/flock.h
@@ -25,6 +25,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_FLOCK_H
+#define STRACE_FLOCK_H
+
 #include <linux/fcntl.h>
 
 #if defined HAVE_STRUCT_FLOCK
@@ -42,3 +45,5 @@
 #else
 # error struct flock64 definition not found in <linux/fcntl.h>
 #endif
+
+#endif /* !STRACE_FLOCK_H */
diff --git a/futex.c b/futex.c
index 7090c7d..d1b5a42 100644
--- a/futex.c
+++ b/futex.c
@@ -30,10 +30,6 @@
 
 #include "defs.h"
 
-#ifdef HAVE_LINUX_FUTEX_H
-# include <linux/futex.h>
-#endif
-
 #ifndef FUTEX_PRIVATE_FLAG
 # define FUTEX_PRIVATE_FLAG 128
 #endif
@@ -59,32 +55,40 @@
 	printaddr(uaddr);
 	tprints(", ");
 	printxval(futexops, op, "FUTEX_???");
-	tprintf(", %u", val);
 	switch (cmd) {
 	case FUTEX_WAIT:
+		tprintf(", %u", val);
+		tprints(", ");
+		print_timespec(tcp, timeout);
+		break;
 	case FUTEX_LOCK_PI:
 		tprints(", ");
 		print_timespec(tcp, timeout);
 		break;
 	case FUTEX_WAIT_BITSET:
+		tprintf(", %u", val);
 		tprints(", ");
 		print_timespec(tcp, timeout);
-		tprintf(", %x", val3);
+		tprintf(", %#x", val3);
 		break;
 	case FUTEX_WAKE_BITSET:
-		tprintf(", %x", val3);
+		tprintf(", %u", val);
+		tprintf(", %#x", val3);
 		break;
 	case FUTEX_REQUEUE:
+		tprintf(", %u", val);
 		tprintf(", %u, ", val2);
 		printaddr(uaddr2);
 		break;
 	case FUTEX_CMP_REQUEUE:
 	case FUTEX_CMP_REQUEUE_PI:
+		tprintf(", %u", val);
 		tprintf(", %u, ", val2);
 		printaddr(uaddr2);
 		tprintf(", %u", val3);
 		break;
 	case FUTEX_WAKE_OP:
+		tprintf(", %u", val);
 		tprintf(", %u, ", val2);
 		printaddr(uaddr2);
 		tprints(", {");
@@ -92,23 +96,29 @@
 			tprints("FUTEX_OP_OPARG_SHIFT|");
 		printxval(futexwakeops, (val3 >> 28) & 0x7, "FUTEX_OP_???");
 		tprintf(", %u, ", (val3 >> 12) & 0xfff);
-		if ((val3 >> 24) & 8)
-			tprints("FUTEX_OP_OPARG_SHIFT|");
-		printxval(futexwakecmps, (val3 >> 24) & 0x7, "FUTEX_OP_CMP_???");
+		printxval(futexwakecmps, (val3 >> 24) & 0xf, "FUTEX_OP_CMP_???");
 		tprintf(", %u}", val3 & 0xfff);
 		break;
 	case FUTEX_WAIT_REQUEUE_PI:
+		tprintf(", %u", val);
 		tprints(", ");
 		print_timespec(tcp, timeout);
 		tprints(", ");
 		printaddr(uaddr2);
 		break;
+	case FUTEX_FD:
 	case FUTEX_WAKE:
+		tprintf(", %u", val);
+		break;
 	case FUTEX_UNLOCK_PI:
 	case FUTEX_TRYLOCK_PI:
 		break;
 	default:
-		tprintf(", %lx, %lx, %x", timeout, uaddr2, val3);
+		tprintf(", %u", val);
+		tprintf(", %#lx", timeout);
+		tprints(", ");
+		printaddr(uaddr2);
+		tprintf(", %#x", val3);
 		break;
 	}
 
diff --git a/gcc_compat.h b/gcc_compat.h
index c06d3c1..908df16 100644
--- a/gcc_compat.h
+++ b/gcc_compat.h
@@ -25,8 +25,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef GCC_COMPAT_H_
-#define GCC_COMPAT_H_
+#ifndef STRACE_GCC_COMPAT_H
+#define STRACE_GCC_COMPAT_H
 
 #if defined __GNUC__ && defined __GNUC_MINOR__
 # define GNUC_PREREQ(maj, min)	\
@@ -76,4 +76,4 @@
 # define ATTRIBUTE_ALLOC_SIZE(args)	/* empty */
 #endif
 
-#endif
+#endif /* !STRACE_GCC_COMPAT_H */
diff --git a/generate_mpers_am.sh b/generate_mpers_am.sh
index 1ee4791..833cd29 100755
--- a/generate_mpers_am.sh
+++ b/generate_mpers_am.sh
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 
-list="$(sed -n '/^strace_SOURCES[[:space:]]*=/,/^[[:space:]]*# end of strace_SOURCES/ s/^[[:space:]]*\([[:alnum:]][^.]*\.c\)[[:space:]]*\\$/\1/p' Makefile.am |
-	xargs -r grep -lx '#[[:space:]]*include[[:space:]]\+MPERS_DEFS' |
+list="$(sed -r -n '/^strace_SOURCES[[:space:]]*=/,/^[[:space:]]*# end of strace_SOURCES/ s/^[[:space:]]*([[:alnum:]][^.]*\.c)[[:space:]]*\\$/\1/p' Makefile.am |
+	xargs -r grep -Elx '#[[:space:]]*include[[:space:]]+MPERS_DEFS' |
 	tr '\n' ' ')"
 
 cat > mpers.am <<EOF
@@ -9,5 +9,5 @@
 mpers_source_files = $list
 EOF
 
-sed -n 's/^#[[:space:]]*include[[:space:]]*"xlat\/\([^."]\+\)\.h".*/extern const struct xlat \1[];/p' \
+sed -r -n 's/^#[[:space:]]*include[[:space:]]*"xlat\/([a-z][a-z_0-9]*)\.h".*/extern const struct xlat \1[];/p' \
 	$list > mpers_xlat.h
diff --git a/generate_sen.sh b/generate_sen.sh
index 6c177ab..33d5539 100755
--- a/generate_sen.sh
+++ b/generate_sen.sh
@@ -2,7 +2,7 @@
 
 echo 'enum {'
 echo 'SEN_printargs = 0,'
-    sed -n '/printargs/! s/.*SEN(\([^)]*\)).*/\1/p' |
-    sort -u |
+    sed -r -n '/printargs/! s/.*SEN\(([^)]+)\).*/\1/p' |
+    LC_COLLATE=C sort -u |
     sed 's/.*/SEN_&,/'
 echo '};'
diff --git a/io.c b/io.c
index 58323a7..8a93cb8 100644
--- a/io.c
+++ b/io.c
@@ -85,13 +85,15 @@
 		case IOV_DECODE_STR:
 			if (len > c->data_size)
 				len = c->data_size;
-			c->data_size -= len;
+			if (c->data_size != (unsigned long) -1L)
+				c->data_size -= len;
 			printstr(tcp, iov[0], len);
 			break;
 		case IOV_DECODE_NETLINK:
 			if (len > c->data_size)
 				len = c->data_size;
-			c->data_size -= len;
+			if (c->data_size != (unsigned long) -1L)
+				c->data_size -= len;
 			decode_netlink(tcp, iov[0], iov[1]);
 			break;
 		default:
@@ -150,17 +152,6 @@
 	return RVAL_DECODED;
 }
 
-/* The SH4 ABI does allow long longs in odd-numbered registers, but
-   does not allow them to be split between registers and memory - and
-   there are only four argument registers for normal functions.  As a
-   result pread takes an extra padding argument before the offset.  This
-   was changed late in the 2.4 series (around 2.4.20).  */
-#if defined(SH)
-#define PREAD_OFFSET_ARG 4
-#else
-#define PREAD_OFFSET_ARG 3
-#endif
-
 SYS_FUNC(pread)
 {
 	if (entering(tcp)) {
@@ -172,7 +163,7 @@
 		else
 			printstr(tcp, tcp->u_arg[1], tcp->u_rval);
 		tprintf(", %lu, ", tcp->u_arg[2]);
-		printllval(tcp, "%lld", PREAD_OFFSET_ARG);
+		printllval(tcp, "%lld", 3);
 	}
 	return 0;
 }
@@ -183,7 +174,7 @@
 	tprints(", ");
 	printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
 	tprintf(", %lu, ", tcp->u_arg[2]);
-	printllval(tcp, "%lld", PREAD_OFFSET_ARG);
+	printllval(tcp, "%lld", 3);
 
 	return RVAL_DECODED;
 }
@@ -212,8 +203,8 @@
 # if SUPPORTED_PERSONALITIES > 1
 	if (current_personality == 1) {
 		tprintf("%lld",
-			(widen_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8)
-			| widen_to_ull(tcp->u_arg[arg]));
+			(zero_extend_signed_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8)
+			| zero_extend_signed_to_ull(tcp->u_arg[arg]));
 	} else
 # endif
 	{
@@ -221,8 +212,8 @@
 	}
 #else /* SIZEOF_LONG_LONG > SIZEOF_LONG && !HAVE_STRUCT_TCB_EXT_ARG */
 	tprintf("%lld",
-		(widen_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8)
-		| widen_to_ull(tcp->u_arg[arg]));
+		(zero_extend_signed_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8)
+		| zero_extend_signed_to_ull(tcp->u_arg[arg]));
 #endif
 }
 
diff --git a/ipc_defs.h b/ipc_defs.h
index b6c85c1..e0043ce 100644
--- a/ipc_defs.h
+++ b/ipc_defs.h
@@ -25,6 +25,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_IPC_DEFS_H
+#define STRACE_IPC_DEFS_H
+
 #ifdef HAVE_SYS_IPC_H
 # include <sys/ipc.h>
 #elif defined HAVE_LINUX_IPC_H
@@ -40,3 +43,5 @@
 #define PRINTCTL(flagset, arg, dflt) \
 	if ((arg) & IPC_64) tprints("IPC_64|"); \
 	printxval((flagset), (arg) &~ IPC_64, dflt)
+
+#endif /* !STRACE_IPC_DEFS_H */
diff --git a/ipc_msg.c b/ipc_msg.c
index daa0036..7ef5cda 100644
--- a/ipc_msg.c
+++ b/ipc_msg.c
@@ -44,13 +44,15 @@
 
 SYS_FUNC(msgget)
 {
-	if (tcp->u_arg[0])
-		tprintf("%#lx, ", tcp->u_arg[0]);
+	const int key = (int) tcp->u_arg[0];
+	if (key)
+		tprintf("%#x", key);
 	else
-		tprints("IPC_PRIVATE, ");
+		tprints("IPC_PRIVATE");
+	tprints(", ");
 	if (printflags(resource_flags, tcp->u_arg[1] & ~0777, NULL) != 0)
 		tprints("|");
-	tprintf("%#lo", tcp->u_arg[1] & 0777);
+	print_numeric_umode_t(tcp->u_arg[1] & 0777);
 	return RVAL_DECODED;
 }
 
diff --git a/ipc_msgctl.c b/ipc_msgctl.c
index e46f6e2..a7352cb 100644
--- a/ipc_msgctl.c
+++ b/ipc_msgctl.c
@@ -67,7 +67,7 @@
 		printuid("uid=", msqid_ds.msg_perm.uid);
 		printuid(", gid=", msqid_ds.msg_perm.gid);
 		tprints(", mode=");
-		tprints(sprintmode(msqid_ds.msg_perm.mode));
+		print_numeric_umode_t(msqid_ds.msg_perm.mode);
 
 		if (cmd != IPC_STAT) {
 			tprints("}, ...}");
@@ -97,7 +97,7 @@
 SYS_FUNC(msgctl)
 {
 	if (entering(tcp)) {
-		tprintf("%lu, ", tcp->u_arg[0]);
+		tprintf("%d, ", (int) tcp->u_arg[0]);
 		PRINTCTL(msgctl_flags, tcp->u_arg[1], "MSG_???");
 		tprints(", ");
 	} else {
diff --git a/ipc_sem.c b/ipc_sem.c
index ba21b7b..db79746 100644
--- a/ipc_sem.c
+++ b/ipc_sem.c
@@ -57,7 +57,7 @@
 #endif
 
 static void
-tprint_sembuf_array(struct tcb *tcp, const long addr, const unsigned long count)
+tprint_sembuf_array(struct tcb *tcp, const long addr, const unsigned int count)
 {
 #if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
 	struct sembuf sb;
@@ -66,12 +66,12 @@
 #else
 	printaddr(addr);
 #endif
-	tprintf(", %lu", count);
+	tprintf(", %u", count);
 }
 
 SYS_FUNC(semop)
 {
-	tprintf("%lu, ", tcp->u_arg[0]);
+	tprintf("%d, ", (int) tcp->u_arg[0]);
 	if (indirect_ipccall(tcp)) {
 		tprint_sembuf_array(tcp, tcp->u_arg[3], tcp->u_arg[1]);
 	} else {
@@ -82,7 +82,7 @@
 
 SYS_FUNC(semtimedop)
 {
-	tprintf("%lu, ", tcp->u_arg[0]);
+	tprintf("%d, ", (int) tcp->u_arg[0]);
 	if (indirect_ipccall(tcp)) {
 		tprint_sembuf_array(tcp, tcp->u_arg[3], tcp->u_arg[1]);
 		tprints(", ");
@@ -101,23 +101,28 @@
 
 SYS_FUNC(semget)
 {
-	if (tcp->u_arg[0])
-		tprintf("%#lx", tcp->u_arg[0]);
+	const int key = (int) tcp->u_arg[0];
+	if (key)
+		tprintf("%#x", key);
 	else
 		tprints("IPC_PRIVATE");
-	tprintf(", %lu, ", tcp->u_arg[1]);
+	tprintf(", %d, ", (int) tcp->u_arg[1]);
 	if (printflags(resource_flags, tcp->u_arg[2] & ~0777, NULL) != 0)
 		tprints("|");
-	tprintf("%#lo", tcp->u_arg[2] & 0777);
+	print_numeric_umode_t(tcp->u_arg[2] & 0777);
 	return RVAL_DECODED;
 }
 
 SYS_FUNC(semctl)
 {
-	tprintf("%lu, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
+	tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]);
 	PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???");
 	tprints(", ");
-	if (indirect_ipccall(tcp)) {
+	if (indirect_ipccall(tcp)
+#ifdef SPARC64
+	    && current_personality != 0
+#endif
+	   ) {
 		printnum_ptr(tcp, tcp->u_arg[3]);
 	} else {
 		tprintf("%#lx", tcp->u_arg[3]);
diff --git a/ipc_shm.c b/ipc_shm.c
index c418884..f9a0537 100644
--- a/ipc_shm.c
+++ b/ipc_shm.c
@@ -43,21 +43,22 @@
 
 SYS_FUNC(shmget)
 {
-	if (tcp->u_arg[0])
-		tprintf("%#lx", tcp->u_arg[0]);
+	const int key = (int) tcp->u_arg[0];
+	if (key)
+		tprintf("%#x", key);
 	else
 		tprints("IPC_PRIVATE");
 	tprintf(", %lu, ", tcp->u_arg[1]);
 	if (printflags(shm_resource_flags, tcp->u_arg[2] & ~0777, NULL) != 0)
 		tprints("|");
-	tprintf("%#lo", tcp->u_arg[2] & 0777);
+	print_numeric_umode_t(tcp->u_arg[2] & 0777);
 	return RVAL_DECODED;
 }
 
 SYS_FUNC(shmat)
 {
 	if (entering(tcp)) {
-		tprintf("%lu, ", tcp->u_arg[0]);
+		tprintf("%d, ", (int) tcp->u_arg[0]);
 		if (indirect_ipccall(tcp)) {
 			printaddr(tcp->u_arg[3]);
 			tprints(", ");
@@ -72,10 +73,14 @@
 		if (syserror(tcp))
 			return 0;
 		if (indirect_ipccall(tcp)) {
-			unsigned long raddr;
-			if (umove(tcp, tcp->u_arg[2], &raddr) < 0)
+			union {
+				uint64_t r64;
+				uint32_t r32;
+			} u;
+			if (umoven(tcp, tcp->u_arg[2], current_wordsize, &u) < 0)
 				return RVAL_NONE;
-			tcp->u_rval = raddr;
+			tcp->u_rval = (sizeof(u.r32) == current_wordsize)
+				      ? u.r32 : u.r64;
 		}
 		return RVAL_HEX;
 	}
diff --git a/ipc_shmctl.c b/ipc_shmctl.c
index 3498455..12bb806 100644
--- a/ipc_shmctl.c
+++ b/ipc_shmctl.c
@@ -67,7 +67,7 @@
 		printuid("uid=", shmid_ds.shm_perm.uid);
 		printuid(", gid=", shmid_ds.shm_perm.gid);
 		tprints(", mode=");
-		tprints(sprintmode(shmid_ds.shm_perm.mode));
+		print_numeric_umode_t(shmid_ds.shm_perm.mode);
 
 		if (cmd != IPC_STAT) {
 			tprints("}, ...}");
@@ -97,7 +97,7 @@
 SYS_FUNC(shmctl)
 {
 	if (entering(tcp)) {
-		tprintf("%lu, ", tcp->u_arg[0]);
+		tprintf("%d, ", (int) tcp->u_arg[0]);
 		PRINTCTL(shmctl_flags, tcp->u_arg[1], "SHM_???");
 		tprints(", ");
 	} else {
diff --git a/kernel_types.h b/kernel_types.h
index 3dee761..551a1e6 100644
--- a/kernel_types.h
+++ b/kernel_types.h
@@ -26,8 +26,7 @@
  */
 
 #ifndef STRACE_KERNEL_TYPES_H
-
-# define STRACE_KERNEL_TYPES_H
+#define STRACE_KERNEL_TYPES_H
 
 # if defined HAVE___KERNEL_LONG_T && defined HAVE___KERNEL_ULONG_T
 
@@ -55,4 +54,4 @@
 	char		d_name[1];
 } kernel_dirent;
 
-#endif
+#endif /* !STRACE_KERNEL_TYPES_H */
diff --git a/keyctl.c b/keyctl.c
index 456649e..7f047c6 100644
--- a/keyctl.c
+++ b/keyctl.c
@@ -26,11 +26,18 @@
  */
 
 #include "defs.h"
+#include "kernel_types.h"
 
 typedef int32_t key_serial_t;
 
 #include "xlat/key_spec.h"
 
+struct keyctl_dh_params {
+	int32_t private;
+	int32_t prime;
+	int32_t base;
+};
+
 static void
 print_keyring_serial_number(key_serial_t id)
 {
@@ -85,12 +92,13 @@
 }
 
 static void
-keyctl_update_key(struct tcb *tcp, key_serial_t id, long addr, long len)
+keyctl_update_key(struct tcb *tcp, key_serial_t id, kernel_ulong_t addr,
+		  kernel_ulong_t len)
 {
 	print_keyring_serial_number(id);
 	tprints(", ");
 	printstr(tcp, addr, len);
-	tprintf(", %lu", len);
+	tprintf(", %llu", zero_extend_signed_to_ull(len));
 }
 
 static void
@@ -102,7 +110,8 @@
 }
 
 static void
-keyctl_read_key(struct tcb *tcp, key_serial_t id, long addr, long len)
+keyctl_read_key(struct tcb *tcp, key_serial_t id, kernel_ulong_t addr,
+		kernel_ulong_t len, bool has_nul)
 {
 	if (entering(tcp)) {
 		print_keyring_serial_number(id);
@@ -111,17 +120,19 @@
 		if (syserror(tcp))
 			printaddr(addr);
 		else {
-			long rval = tcp->u_rval > len ?
-				    len : (tcp->u_rval ? -1 : 0);
-			printstr(tcp, addr, rval);
+			kernel_ulong_t rval = (tcp->u_rval >= 0) &&
+				((kernel_ulong_t) tcp->u_rval > len) ? len :
+				(kernel_ulong_t) tcp->u_rval;
+			printstr_ex(tcp, addr, rval, has_nul ?
+				    QUOTE_OMIT_TRAILING_0 : 0);
 		}
-		tprintf(", %lu", len);
+		tprintf(", %llu", zero_extend_signed_to_ull(len));
 	}
 }
 
 static void
-keyctl_keyring_search(struct tcb *tcp, key_serial_t id1, long addr1,
-		      long addr2, key_serial_t id2)
+keyctl_keyring_search(struct tcb *tcp, key_serial_t id1, kernel_ulong_t addr1,
+		      kernel_ulong_t addr2, key_serial_t id2)
 {
 	print_keyring_serial_number(id1);
 	tprints(", ");
@@ -133,31 +144,34 @@
 }
 
 static void
-keyctl_chown_key(struct tcb *tcp, key_serial_t id, int user, int group)
+keyctl_chown_key(struct tcb *tcp, key_serial_t id, unsigned user,
+		 unsigned group)
 {
 	print_keyring_serial_number(id);
-	tprintf(", %d, %d", user, group);
+	printuid(", ", user);
+	printuid(", ", group);
 }
 
 static void
-keyctl_instantiate_key(struct tcb *tcp, key_serial_t id1, long addr,
-		       long len, key_serial_t id2)
+keyctl_instantiate_key(struct tcb *tcp, key_serial_t id1, kernel_ulong_t addr,
+		       kernel_ulong_t len, key_serial_t id2)
 {
 	print_keyring_serial_number(id1);
 	tprints(", ");
 	printstr(tcp, addr, len);
-	tprintf(", %lu, ", len);
+	tprintf(", %llu, ", zero_extend_signed_to_ull(len));
 	print_keyring_serial_number(id2);
 }
 
 static void
 keyctl_instantiate_key_iov(struct tcb *tcp, key_serial_t id1,
-			   long addr, long len, key_serial_t id2)
+			   kernel_ulong_t addr, kernel_ulong_t len,
+			   key_serial_t id2)
 {
 	print_keyring_serial_number(id1);
 	tprints(", ");
 	tprint_iov(tcp, len, addr, IOV_DECODE_STR);
-	tprintf(", %lu, ", len);
+	tprintf(", %llu, ", zero_extend_signed_to_ull(len));
 	print_keyring_serial_number(id2);
 }
 
@@ -174,8 +188,16 @@
 keyctl_reject_key(struct tcb *tcp, key_serial_t id1, unsigned timeout,
 		  unsigned error, key_serial_t id2)
 {
+	const char *err_str = err_name(error);
+
 	print_keyring_serial_number(id1);
-	tprintf(", %u, %u, ", timeout, error);
+	tprintf(", %u, ", timeout);
+
+	if (err_str)
+		tprintf("%s, ", err_str);
+	else
+		tprintf("%u, ", error);
+
 	print_keyring_serial_number(id2);
 }
 
@@ -187,9 +209,10 @@
 }
 
 static void
-keyctl_get_persistent(struct tcb *tcp, int uid, key_serial_t id)
+keyctl_get_persistent(struct tcb *tcp, unsigned uid, key_serial_t id)
 {
-	tprintf("%d, ", uid);
+	printuid("", uid);
+	tprints(", ");
 	print_keyring_serial_number(id);
 }
 
@@ -203,105 +226,145 @@
 	printflags(key_perms, perm, "KEY_???");
 }
 
+static void
+print_dh_params(struct tcb *tcp, kernel_ulong_t addr)
+{
+	struct keyctl_dh_params params;
+
+	if (umove_or_printaddr(tcp, addr, &params))
+		return;
+
+	tprints("{private=");
+	print_keyring_serial_number(params.private);
+	tprints(", prime=");
+	print_keyring_serial_number(params.prime);
+	tprints(", base=");
+	print_keyring_serial_number(params.base);
+	tprints("}");
+}
+
+static void
+keyctl_dh_compute(struct tcb *tcp, kernel_ulong_t params, kernel_ulong_t buf,
+		  kernel_ulong_t len)
+{
+	if (entering(tcp)) {
+		print_dh_params(tcp, params);
+		tprints(", ");
+	} else {
+		if (syserror(tcp)) {
+			printaddr(buf);
+		} else {
+			kernel_ulong_t rval = (tcp->u_rval >= 0) &&
+				((kernel_ulong_t) tcp->u_rval > len) ? len :
+				(kernel_ulong_t) tcp->u_rval;
+			printstr(tcp, buf, rval);
+		}
+		tprintf(", %llu", zero_extend_signed_to_ull(len));
+	}
+}
+
 #include "xlat/key_reqkeys.h"
 #include "xlat/keyctl_commands.h"
 
 SYS_FUNC(keyctl)
 {
 	int cmd = tcp->u_arg[0];
+	unsigned long long arg2 = getarg_ull(tcp, 1);
+	unsigned long long arg3 = getarg_ull(tcp, 2);
+	unsigned long long arg4 = getarg_ull(tcp, 3);
+	unsigned long long arg5 = getarg_ull(tcp, 4);
 
 	if (entering(tcp)) {
 		printxval(keyctl_commands, cmd, "KEYCTL_???");
-		tprints(", ");
+
+		/*
+		 * For now, KEYCTL_SESSION_TO_PARENT is the only cmd without
+		 * arguments.
+		 */
+		if (cmd != KEYCTL_SESSION_TO_PARENT)
+			tprints(", ");
 	}
 
 	switch (cmd) {
 	case KEYCTL_GET_KEYRING_ID:
-		keyctl_get_keyring_id(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+		keyctl_get_keyring_id(tcp, arg2, arg3);
 		break;
 
 	case KEYCTL_JOIN_SESSION_KEYRING:
-		printstr(tcp, tcp->u_arg[1], -1);
+		printstr(tcp, arg2, -1);
 		break;
 
 	case KEYCTL_UPDATE:
-		keyctl_update_key(tcp, tcp->u_arg[1],
-				  tcp->u_arg[2], tcp->u_arg[3]);
+		keyctl_update_key(tcp, arg2, arg3, arg4);
 		break;
 
 	case KEYCTL_REVOKE:
 	case KEYCTL_CLEAR:
 	case KEYCTL_INVALIDATE:
 	case KEYCTL_ASSUME_AUTHORITY:
-		print_keyring_serial_number(tcp->u_arg[1]);
+		print_keyring_serial_number(arg2);
 		break;
 
 	case KEYCTL_LINK:
 	case KEYCTL_UNLINK:
-		keyctl_handle_key_key(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+		keyctl_handle_key_key(tcp, arg2, arg3);
 		break;
 
 	case KEYCTL_DESCRIBE:
 	case KEYCTL_READ:
 	case KEYCTL_GET_SECURITY:
-		keyctl_read_key(tcp, tcp->u_arg[1],
-				tcp->u_arg[2], tcp->u_arg[3]);
+		keyctl_read_key(tcp, arg2, arg3, arg4, cmd != KEYCTL_READ);
 		return 0;
 
 	case KEYCTL_SEARCH:
-		keyctl_keyring_search(tcp, tcp->u_arg[1], tcp->u_arg[2],
-				      tcp->u_arg[3], tcp->u_arg[4]);
+		keyctl_keyring_search(tcp, arg2, arg3, arg4, arg5);
 		break;
 
 	case KEYCTL_CHOWN:
-		keyctl_chown_key(tcp, tcp->u_arg[1],
-				 tcp->u_arg[2], tcp->u_arg[3]);
+		keyctl_chown_key(tcp, arg2, arg3, arg4);
 		break;
 
 	case KEYCTL_SETPERM:
-		keyctl_setperm_key(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+		keyctl_setperm_key(tcp, arg2, arg3);
 		break;
 
 	case KEYCTL_INSTANTIATE:
-		keyctl_instantiate_key(tcp, tcp->u_arg[1], tcp->u_arg[2],
-				       tcp->u_arg[3], tcp->u_arg[4]);
+		keyctl_instantiate_key(tcp, arg2, arg3, arg4, arg5);
 		break;
 
 	case KEYCTL_NEGATE:
-		keyctl_negate_key(tcp, tcp->u_arg[1],
-				  tcp->u_arg[2], tcp->u_arg[3]);
+		keyctl_negate_key(tcp, arg2, arg3, arg4);
 		break;
 
 	case KEYCTL_SET_REQKEY_KEYRING:
-		printxval(key_reqkeys, tcp->u_arg[1], "KEY_REQKEY_DEFL_???");
+		printxval(key_reqkeys, arg2, "KEY_REQKEY_DEFL_???");
 		break;
 
 	case KEYCTL_SET_TIMEOUT:
-		keyctl_set_timeout(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+		keyctl_set_timeout(tcp, arg2, arg3);
 		break;
 
 	case KEYCTL_SESSION_TO_PARENT:
 		break;
 
 	case KEYCTL_REJECT:
-		keyctl_reject_key(tcp, tcp->u_arg[1], tcp->u_arg[2],
-				  tcp->u_arg[3], tcp->u_arg[4]);
+		keyctl_reject_key(tcp, arg2, arg3, arg4, arg5);
 		break;
 
 	case KEYCTL_INSTANTIATE_IOV:
-		keyctl_instantiate_key_iov(tcp, tcp->u_arg[1],
-					   tcp->u_arg[2], tcp->u_arg[3],
-					   tcp->u_arg[4]);
+		keyctl_instantiate_key_iov(tcp, arg2, arg3, arg4, arg5);
 		break;
 
 	case KEYCTL_GET_PERSISTENT:
-		keyctl_get_persistent(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+		keyctl_get_persistent(tcp, arg2, arg3);
 		break;
 
+	case KEYCTL_DH_COMPUTE:
+		keyctl_dh_compute(tcp, arg2, arg3, arg4);
+		return 0;
+
 	default:
-		tprintf("%#lx, %#lx, %#lx, %#lx",
-			tcp->u_arg[1], tcp->u_arg[2],
-			tcp->u_arg[3], tcp->u_arg[4]);
+		tprintf("%#llx, %#llx, %#llx, %#llx", arg2, arg3, arg4, arg5);
 		break;
 	}
 
diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h
index 2222f40..9888eca 100644
--- a/linux/32/ioctls_inc_align32.h
+++ b/linux/32/ioctls_inc_align32.h
@@ -284,6 +284,7 @@
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x20 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
@@ -392,10 +393,13 @@
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_ATTACH", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_SIGNAL", _IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@@ -683,6 +687,16 @@
 { "linux/cdrom.h", "DVD_AUTH", 0, 0x5392, 0 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
+{ "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
+{ "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_S_PHYS_ADDR", _IOC_WRITE, 0x6102, 0x02 },
+{ "linux/cec.h", "CEC_DQEVENT", _IOC_READ|_IOC_WRITE, 0x6107, 0x50 },
+{ "linux/cec.h", "CEC_G_MODE", _IOC_READ, 0x6108, 0x04 },
+{ "linux/cec.h", "CEC_RECEIVE", _IOC_READ|_IOC_WRITE, 0x6106, 0x38 },
+{ "linux/cec.h", "CEC_S_MODE", _IOC_WRITE, 0x6109, 0x04 },
+{ "linux/cec.h", "CEC_TRANSMIT", _IOC_READ|_IOC_WRITE, 0x6105, 0x38 },
 { "linux/chio.h", "CHIOEXCHANGE", _IOC_WRITE, 0x6302, 0x1c },
 { "linux/chio.h", "CHIOGELEM", _IOC_WRITE, 0x6310, 0x6c },
 { "linux/chio.h", "CHIOGPARAMS", _IOC_READ, 0x6306, 0x14 },
@@ -969,7 +983,11 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
+{ "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
@@ -1418,30 +1436,14 @@
 { "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
 { "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
 { "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
 { "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
-{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
 { "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
@@ -1553,19 +1555,19 @@
 { "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
 { "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
@@ -1739,6 +1741,17 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CLOSE", _IOC_WRITE, 0x6304, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CONNECT", _IOC_WRITE, 0x6308, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CREATE", _IOC_READ|_IOC_WRITE, 0x6303, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_LISTEN", _IOC_WRITE, 0x6306, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_RECEIVE", _IOC_READ|_IOC_WRITE, 0x630a, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_SEND", _IOC_WRITE, 0x6309, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST", _IOC_READ|_IOC_WRITE, 0x6302, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST_SIZE", _IOC_READ|_IOC_WRITE, 0x6301, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_MPORT_GET_LIST", _IOC_READ|_IOC_WRITE, 0x630b, 0x04 },
 { "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
@@ -2244,6 +2257,8 @@
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/videodev2.h", "VIDIOC_CROPCAP", _IOC_READ|_IOC_WRITE, 0x563a, 0x2c },
 { "linux/videodev2.h", "VIDIOC_DBG_G_CHIP_INFO", _IOC_READ|_IOC_WRITE, 0x5666, 0xc8 },
@@ -2348,7 +2363,6 @@
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_SOCKETS_VERSION", _IOC_NONE, 0x07b4, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION", _IOC_NONE, 0x079f, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION2", _IOC_NONE, 0x07a7, 0x00 },
-{ "linux/vsp1.h", "VIDIOC_VSP1_LUT_CONFIG", _IOC_READ|_IOC_WRITE, 0x56c1, 0x400 },
 { "linux/vt.h", "VT_ACTIVATE", 0, 0x5606, 0 },
 { "linux/vt.h", "VT_DISALLOCATE", 0, 0x5608, 0 },
 { "linux/vt.h", "VT_GETHIFONTMASK", 0, 0x560D, 0 },
@@ -2365,6 +2379,7 @@
 { "linux/vt.h", "VT_UNLOCKSWITCH", 0, 0x560C, 0 },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
+{ "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
@@ -2771,8 +2786,6 @@
 { "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@@ -2813,6 +2826,7 @@
 { "xen/evtchn.h", "IOCTL_EVTCHN_BIND_VIRQ", _IOC_NONE, 0x4500, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
+{ "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h
index 173cc67..da95c40 100644
--- a/linux/32/ioctls_inc_align64.h
+++ b/linux/32/ioctls_inc_align64.h
@@ -284,6 +284,7 @@
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x20 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
@@ -392,10 +393,13 @@
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_ATTACH", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_SIGNAL", _IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@@ -683,6 +687,16 @@
 { "linux/cdrom.h", "DVD_AUTH", 0, 0x5392, 0 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
+{ "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
+{ "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_S_PHYS_ADDR", _IOC_WRITE, 0x6102, 0x02 },
+{ "linux/cec.h", "CEC_DQEVENT", _IOC_READ|_IOC_WRITE, 0x6107, 0x50 },
+{ "linux/cec.h", "CEC_G_MODE", _IOC_READ, 0x6108, 0x04 },
+{ "linux/cec.h", "CEC_RECEIVE", _IOC_READ|_IOC_WRITE, 0x6106, 0x38 },
+{ "linux/cec.h", "CEC_S_MODE", _IOC_WRITE, 0x6109, 0x04 },
+{ "linux/cec.h", "CEC_TRANSMIT", _IOC_READ|_IOC_WRITE, 0x6105, 0x38 },
 { "linux/chio.h", "CHIOEXCHANGE", _IOC_WRITE, 0x6302, 0x1c },
 { "linux/chio.h", "CHIOGELEM", _IOC_WRITE, 0x6310, 0x6c },
 { "linux/chio.h", "CHIOGPARAMS", _IOC_READ, 0x6306, 0x14 },
@@ -969,7 +983,11 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
+{ "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
@@ -1418,30 +1436,14 @@
 { "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
 { "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
 { "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
 { "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
-{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
 { "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
@@ -1553,19 +1555,19 @@
 { "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
 { "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
@@ -1739,6 +1741,17 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CLOSE", _IOC_WRITE, 0x6304, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CONNECT", _IOC_WRITE, 0x6308, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CREATE", _IOC_READ|_IOC_WRITE, 0x6303, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_LISTEN", _IOC_WRITE, 0x6306, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_RECEIVE", _IOC_READ|_IOC_WRITE, 0x630a, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_SEND", _IOC_WRITE, 0x6309, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST", _IOC_READ|_IOC_WRITE, 0x6302, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST_SIZE", _IOC_READ|_IOC_WRITE, 0x6301, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_MPORT_GET_LIST", _IOC_READ|_IOC_WRITE, 0x630b, 0x04 },
 { "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
@@ -2244,6 +2257,8 @@
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/videodev2.h", "VIDIOC_CROPCAP", _IOC_READ|_IOC_WRITE, 0x563a, 0x2c },
 { "linux/videodev2.h", "VIDIOC_DBG_G_CHIP_INFO", _IOC_READ|_IOC_WRITE, 0x5666, 0xc8 },
@@ -2348,7 +2363,6 @@
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_SOCKETS_VERSION", _IOC_NONE, 0x07b4, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION", _IOC_NONE, 0x079f, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION2", _IOC_NONE, 0x07a7, 0x00 },
-{ "linux/vsp1.h", "VIDIOC_VSP1_LUT_CONFIG", _IOC_READ|_IOC_WRITE, 0x56c1, 0x400 },
 { "linux/vt.h", "VT_ACTIVATE", 0, 0x5606, 0 },
 { "linux/vt.h", "VT_DISALLOCATE", 0, 0x5608, 0 },
 { "linux/vt.h", "VT_GETHIFONTMASK", 0, 0x560D, 0 },
@@ -2365,6 +2379,7 @@
 { "linux/vt.h", "VT_UNLOCKSWITCH", 0, 0x560C, 0 },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
+{ "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
@@ -2771,8 +2786,6 @@
 { "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@@ -2813,6 +2826,7 @@
 { "xen/evtchn.h", "IOCTL_EVTCHN_BIND_VIRQ", _IOC_NONE, 0x4500, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
+{ "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
index 9c86485..2295d1e 100644
--- a/linux/32/syscallent.h
+++ b/linux/32/syscallent.h
@@ -1,8 +1,8 @@
 #ifndef sys_ARCH_mmap
 # define sys_ARCH_mmap sys_mmap
 #endif
-[  0] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[  1] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[  0] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[  1] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [  2] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [  3] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
 [  4] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
@@ -80,7 +80,7 @@
 [ 76] = { 6,	TD,		SEN(splice),			"splice"		},
 [ 77] = { 4,	TD,		SEN(tee),			"tee"			},
 [ 78] = { 4,	TD|TF,		SEN(readlinkat),		"readlinkat"		},
-[ 79] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[ 79] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [ 80] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
 [ 81] = { 0,	0,		SEN(sync),			"sync"			},
 [ 82] = { 1,	TD,		SEN(fsync),			"fsync"			},
diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h
index 69cebac..3fc515c 100644
--- a/linux/64/ioctls_inc.h
+++ b/linux/64/ioctls_inc.h
@@ -284,6 +284,7 @@
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x20 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
@@ -392,10 +393,13 @@
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_ATTACH", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_SIGNAL", _IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@@ -683,6 +687,16 @@
 { "linux/cdrom.h", "DVD_AUTH", 0, 0x5392, 0 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
+{ "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
+{ "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_S_PHYS_ADDR", _IOC_WRITE, 0x6102, 0x02 },
+{ "linux/cec.h", "CEC_DQEVENT", _IOC_READ|_IOC_WRITE, 0x6107, 0x50 },
+{ "linux/cec.h", "CEC_G_MODE", _IOC_READ, 0x6108, 0x04 },
+{ "linux/cec.h", "CEC_RECEIVE", _IOC_READ|_IOC_WRITE, 0x6106, 0x38 },
+{ "linux/cec.h", "CEC_S_MODE", _IOC_WRITE, 0x6109, 0x04 },
+{ "linux/cec.h", "CEC_TRANSMIT", _IOC_READ|_IOC_WRITE, 0x6105, 0x38 },
 { "linux/chio.h", "CHIOEXCHANGE", _IOC_WRITE, 0x6302, 0x1c },
 { "linux/chio.h", "CHIOGELEM", _IOC_WRITE, 0x6310, 0x6c },
 { "linux/chio.h", "CHIOGPARAMS", _IOC_READ, 0x6306, 0x14 },
@@ -969,7 +983,11 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
+{ "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
@@ -1418,30 +1436,14 @@
 { "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
 { "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
 { "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
 { "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
-{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
 { "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
@@ -1553,19 +1555,19 @@
 { "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
 { "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
@@ -1739,6 +1741,17 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x08 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CLOSE", _IOC_WRITE, 0x6304, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CONNECT", _IOC_WRITE, 0x6308, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CREATE", _IOC_READ|_IOC_WRITE, 0x6303, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_LISTEN", _IOC_WRITE, 0x6306, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_RECEIVE", _IOC_READ|_IOC_WRITE, 0x630a, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_SEND", _IOC_WRITE, 0x6309, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST", _IOC_READ|_IOC_WRITE, 0x6302, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST_SIZE", _IOC_READ|_IOC_WRITE, 0x6301, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_MPORT_GET_LIST", _IOC_READ|_IOC_WRITE, 0x630b, 0x04 },
 { "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
@@ -2244,6 +2257,8 @@
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0x100 },
 { "linux/videodev2.h", "VIDIOC_CROPCAP", _IOC_READ|_IOC_WRITE, 0x563a, 0x2c },
 { "linux/videodev2.h", "VIDIOC_DBG_G_CHIP_INFO", _IOC_READ|_IOC_WRITE, 0x5666, 0xc8 },
@@ -2348,7 +2363,6 @@
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_SOCKETS_VERSION", _IOC_NONE, 0x07b4, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION", _IOC_NONE, 0x079f, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION2", _IOC_NONE, 0x07a7, 0x00 },
-{ "linux/vsp1.h", "VIDIOC_VSP1_LUT_CONFIG", _IOC_READ|_IOC_WRITE, 0x56c1, 0x400 },
 { "linux/vt.h", "VT_ACTIVATE", 0, 0x5606, 0 },
 { "linux/vt.h", "VT_DISALLOCATE", 0, 0x5608, 0 },
 { "linux/vt.h", "VT_GETHIFONTMASK", 0, 0x560D, 0 },
@@ -2365,6 +2379,7 @@
 { "linux/vt.h", "VT_UNLOCKSWITCH", 0, 0x560C, 0 },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
+{ "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
@@ -2771,8 +2786,6 @@
 { "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@@ -2813,6 +2826,7 @@
 { "xen/evtchn.h", "IOCTL_EVTCHN_BIND_VIRQ", _IOC_NONE, 0x4500, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
+{ "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x10 },
diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h
index 55c011c..5bd6cb0 100644
--- a/linux/64/syscallent.h
+++ b/linux/64/syscallent.h
@@ -1,5 +1,5 @@
-[  0] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[  1] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[  0] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[  1] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [  2] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [  3] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
 [  4] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h
index eaa316f..eab60a5 100644
--- a/linux/alpha/syscallent.h
+++ b/linux/alpha/syscallent.h
@@ -361,8 +361,8 @@
 [395] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [396] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [397] = { 5,	0,		SEN(tuxcall),			"tuxcall"		},
-[398] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[399] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[398] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[399] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [400] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [401] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [402] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -417,7 +417,7 @@
 [452] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [453] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [454] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[455] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[455] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [456] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [457] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [458] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index 18910e4..356468b 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -268,8 +268,8 @@
 [240] = { 6,	0,		SEN(futex),			"futex"			},
 [241] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [242] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
-[243] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[244] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[243] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[244] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [245] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [246] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [247] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -351,7 +351,7 @@
 [324] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [325] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [326] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[327] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[327] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [328] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [329] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [330] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/asm_stat.h b/linux/asm_stat.h
index c941f22..72a67e1 100644
--- a/linux/asm_stat.h
+++ b/linux/asm_stat.h
@@ -1,2 +1,52 @@
-#include "kernel_types.h"
-#include <asm/stat.h>
+#ifndef STRACE_ASM_STAT_H
+#define STRACE_ASM_STAT_H
+
+# include "kernel_types.h"
+
+# undef dev_t
+# undef gid_t
+# undef ino_t
+# undef loff_t
+# undef mode_t
+# undef nlink_t
+# undef off64_t
+# undef off_t
+# undef time_t
+# undef uid_t
+
+# define dev_t		__kernel_dev_t
+# define gid_t		__kernel_gid_t
+# define ino_t		__kernel_ino_t
+# define loff_t		__kernel_loff_t
+# define mode_t		__kernel_mode_t
+# define nlink_t	__kernel_nlink_t
+# define off64_t	__kernel_off64_t
+# define off_t		__kernel_off_t
+# define time_t		__kernel_time_t
+# define uid_t		__kernel_uid_t
+
+# include <asm/stat.h>
+
+# undef dev_t
+# undef gid_t
+# undef ino_t
+# undef loff_t
+# undef mode_t
+# undef nlink_t
+# undef off64_t
+# undef off_t
+# undef time_t
+# undef uid_t
+
+# define dev_t		dev_t
+# define gid_t		gid_t
+# define ino_t		ino_t
+# define loff_t		loff_t
+# define mode_t		mode_t
+# define nlink_t	nlink_t
+# define off64_t	off64_t
+# define off_t		off_t
+# define time_t		time_t
+# define uid_t		uid_t
+
+#endif /* !STRACE_ASM_STAT_H */
diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h
index 0b4ceac..fbf9792 100644
--- a/linux/avr32/syscallent.h
+++ b/linux/avr32/syscallent.h
@@ -222,8 +222,8 @@
 [194] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [195] = { 2,	0,		SEN(capget),			"capget"		},
 [196] = { 2,	0,		SEN(capset),			"capset"		},
-[197] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[198] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[197] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[198] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [199] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [200] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [201] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -273,7 +273,7 @@
 [245] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [246] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [247] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[248] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[248] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [249] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [250] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [251] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -351,3 +351,5 @@
 [323] = { 2,	0,		SEN(membarrier),		"membarrier",		},
 [324] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
 [325] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[326] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[327] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h
index dd99fa6..1f90538 100644
--- a/linux/bfin/syscallent.h
+++ b/linux/bfin/syscallent.h
@@ -270,8 +270,8 @@
 [242] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [243] = { 1,	0,		SEN(set_thread_area),		"set_thread_area"	},
 [244] = { 1,	0,		SEN(get_thread_area),		"get_thread_area"	},
-[245] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[246] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[245] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[246] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [247] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [248] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [249] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -325,7 +325,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [301] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [302] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [303] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/dummy.h b/linux/dummy.h
index 587163c..87d2127 100644
--- a/linux/dummy.h
+++ b/linux/dummy.h
@@ -26,6 +26,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_LINUX_DUMMY_H
+#define STRACE_LINUX_DUMMY_H
+
 #ifndef HAVE_STRUCT___OLD_KERNEL_STAT
 #define	sys_oldfstat		printargs
 #define	sys_oldstat		printargs
@@ -156,3 +159,5 @@
 #define	sys_oldolduname		printargs
 #define	sys_olduname		printargs
 #define	sys_sysfs		printargs
+
+#endif /* !STRACE_LINUX_DUMMY_H */
diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h
index 4928047..de0e11d 100644
--- a/linux/hppa/syscallent.h
+++ b/linux/hppa/syscallent.h
@@ -217,8 +217,8 @@
 [212] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [213] = { 5,	0,		SEN(printargs),			"set_thread_area"	},
 [214] = { 5,	0,		SEN(printargs),			"get_thread_area"	},
-[215] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[216] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[215] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[216] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [217] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [218] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [219] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -282,7 +282,7 @@
 [277] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [278] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [279] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[280] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[280] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [281] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [282] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [283] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h
index d6175fa..307f46a 100644
--- a/linux/i386/syscallent.h
+++ b/linux/i386/syscallent.h
@@ -270,8 +270,8 @@
 [242] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [243] = { 1,	0,		SEN(set_thread_area),		"set_thread_area"	},
 [244] = { 1,	0,		SEN(get_thread_area),		"get_thread_area"	},
-[245] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[246] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[245] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[246] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [247] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [248] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [249] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -325,7 +325,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [301] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [302] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [303] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h
index 713cab8..5ba6afb 100644
--- a/linux/ia64/syscallent.h
+++ b/linux/ia64/syscallent.h
@@ -254,8 +254,8 @@
 [1235] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [1236] = { 1,	TP|SE,		SEN(exit),			"exit_group"		},
 [1237] = { 3,	0,		SEN(lookup_dcookie),		"lookup_dcookie"	},
-[1238] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[1239] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[1238] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[1239] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [1240] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [1241] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [1242] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
diff --git a/linux/inet_diag.h b/linux/inet_diag.h
index 723a1b1..69012af 100644
--- a/linux/inet_diag.h
+++ b/linux/inet_diag.h
@@ -1,3 +1,6 @@
+#ifndef STRACE_LINUX_INET_DIAG_H
+#define STRACE_LINUX_INET_DIAG_H
+
 #define TCPDIAG_GETSOCK 18
 #define DCCPDIAG_GETSOCK 19
 
@@ -36,3 +39,5 @@
 	uint32_t idiag_uid;
 	uint32_t idiag_inode;
 };
+
+#endif /* !STRACE_LINUX_INET_DIAG_H */
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index 0f4895c..6299a03 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -266,8 +266,8 @@
 [238] = { 3,	TM,		SEN(madvise),			"madvise"		},
 [239] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [240] = { 4,	TD,		SEN(readahead),			"readahead"		},
-[241] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[242] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[241] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[242] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [243] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [244] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [245] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -318,7 +318,7 @@
 [290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[293] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[293] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h
index 482e275..6974872 100644
--- a/linux/microblaze/syscallent.h
+++ b/linux/microblaze/syscallent.h
@@ -270,8 +270,8 @@
 [242] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [243] = { 1,	0,		SEN(set_thread_area),		"set_thread_area"	},
 [244] = { 1,	0,		SEN(get_thread_area),		"get_thread_area"	},
-[245] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[246] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[245] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[246] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [247] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [248] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [249] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -325,7 +325,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [301] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [302] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [303] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/mips/genstub.sh b/linux/mips/genstub.sh
index 5ebb1d4..11f141f 100755
--- a/linux/mips/genstub.sh
+++ b/linux/mips/genstub.sh
@@ -6,5 +6,5 @@
 for n in n32 n64 o32; do
 	in="$srcdir/syscallent-$n.h"
 	out="$dstdir/syscallent-$n-stub.h"
-	sed -n '/^#if/,/^#else/ {s/^\([^{]*{[^,]*,[^,]*,[[:space:]]*\)[^,[:space:]]\+,[[:space:]]*"\([^"]\+".*\)/\1SEN(printargs), "'$n'_\2/; s/^\[.*/&/p}' < "$in" > "$out"
+	sed -r -n '/^#if/,/^#else/ {s/^([^{]*\{[^,]*,[^,]*,[[:space:]]*)[^,[:space:]]+,[[:space:]]*"([^"]+".*)/\1SEN(printargs), "'$n':\2/; s/^\[.*/&/p}' < "$in" > "$out"
 done
diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h
index 398b12c..b061355 100644
--- a/linux/mips/syscallent-n32.h
+++ b/linux/mips/syscallent-n32.h
@@ -200,8 +200,8 @@
 [6197] = { 3,	0,		SEN(printargs),			"cacheflush"		},
 [6198] = { 3,	0,		SEN(printargs),			"cachectl"		},
 [6199] = { 4,	0,		SEN(sysmips),			"sysmips"		},
-[6200] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[6201] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[6200] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[6201] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [6202] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [6203] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [6204] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h
index 7321f0e..42c1bfd 100644
--- a/linux/mips/syscallent-n64.h
+++ b/linux/mips/syscallent-n64.h
@@ -200,8 +200,8 @@
 [5197] = { 3,	0,		SEN(printargs),			"cacheflush"		},
 [5198] = { 3,	0,		SEN(printargs),			"cachectl"		},
 [5199] = { 4,	0,		SEN(sysmips),			"sysmips"		},
-[5200] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[5201] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[5200] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[5201] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [5202] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [5203] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [5204] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h
index cb8afb9..c92005f 100644
--- a/linux/mips/syscallent-o32.h
+++ b/linux/mips/syscallent-o32.h
@@ -241,8 +241,8 @@
 [4238] = { 6,	0,		SEN(futex),			"futex"			},
 [4239] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [4240] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
-[4241] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[4242] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[4241] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[4242] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [4243] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [4244] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [4245] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -293,7 +293,7 @@
 [4290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [4291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [4292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[4293] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[4293] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [4294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [4295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [4296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/netlink_diag.h b/linux/netlink_diag.h
index 276baa7..a52507c 100644
--- a/linux/netlink_diag.h
+++ b/linux/netlink_diag.h
@@ -1,3 +1,6 @@
+#ifndef STRACE_LINUX_NETLINK_DIAG_H
+#define STRACE_LINUX_NETLINK_DIAG_H
+
 struct netlink_diag_req {
 	uint8_t sdiag_family;
 	uint8_t sdiag_protocol;
@@ -22,3 +25,5 @@
 
 #define NDIAG_SHOW_MEMINFO           0x00000001
 #define NDIAG_PROTO_ALL              ((uint8_t) ~0)
+
+#endif /* !STRACE_LINUX_NETLINK_DIAG_H */
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index b6dfb85..b10b83e 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -253,8 +253,8 @@
 [224] = { },
 [225] = { 5,	0,		SEN(printargs),			"tuxcall"		},
 [226] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
-[227] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[228] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[227] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[228] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [229] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [230] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [231] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -317,7 +317,7 @@
 [288] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [289] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [290] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[291] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[291] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [292] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [293] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [294] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/powerpc64/arch_regs.c b/linux/powerpc64/arch_regs.c
index 9064651..c50855d 100644
--- a/linux/powerpc64/arch_regs.c
+++ b/linux/powerpc64/arch_regs.c
@@ -1,2 +1,3 @@
 #include "powerpc/arch_regs.c"
+#undef ARCH_PC_REG
 #define ARCH_PC_REG ppc_regs.nip
diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h
index e0c18af..ba22c3c 100644
--- a/linux/powerpc64/syscallent.h
+++ b/linux/powerpc64/syscallent.h
@@ -248,8 +248,8 @@
 [224] = { },
 [225] = { 5,	0,		SEN(printargs),			"tuxcall"		},
 [226] = { },
-[227] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[228] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[227] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[228] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [229] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [230] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [231] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
diff --git a/linux/riscv/arch_regs.c b/linux/riscv/arch_regs.c
new file mode 100644
index 0000000..40be17d
--- /dev/null
+++ b/linux/riscv/arch_regs.c
@@ -0,0 +1,3 @@
+static struct user_regs_struct riscv_regs;
+#define ARCH_REGS_FOR_GETREGSET riscv_regs
+#define ARCH_PC_REG riscv_regs.pc
diff --git a/linux/riscv/errnoent1.h b/linux/riscv/errnoent1.h
new file mode 100644
index 0000000..2a5c728
--- /dev/null
+++ b/linux/riscv/errnoent1.h
@@ -0,0 +1,2 @@
+/* RISC-V rv32 and rv64 */
+#include "../errnoent.h"
diff --git a/linux/riscv/get_error.c b/linux/riscv/get_error.c
new file mode 100644
index 0000000..be640d0
--- /dev/null
+++ b/linux/riscv/get_error.c
@@ -0,0 +1,10 @@
+static void
+get_error(struct tcb *tcp, const bool check_errno)
+{
+	if (check_errno && is_negated_errno(riscv_regs.a0)) {
+		tcp->u_rval = -1;
+		tcp->u_error = -riscv_regs.a0;
+	} else {
+		tcp->u_rval = riscv_regs.a0;
+	}
+}
diff --git a/linux/riscv/get_scno.c b/linux/riscv/get_scno.c
new file mode 100644
index 0000000..0ca1ed3
--- /dev/null
+++ b/linux/riscv/get_scno.c
@@ -0,0 +1,7 @@
+/* Return codes: 1 - ok, 0 - ignore, other - error. */
+static int
+arch_get_scno(struct tcb *tcp)
+{
+	tcp->scno = riscv_regs.a7;
+	return 1;
+}
diff --git a/linux/riscv/get_syscall_args.c b/linux/riscv/get_syscall_args.c
new file mode 100644
index 0000000..746e085
--- /dev/null
+++ b/linux/riscv/get_syscall_args.c
@@ -0,0 +1,12 @@
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+	tcp->u_arg[0] = riscv_regs.a0;
+	tcp->u_arg[1] = riscv_regs.a1;
+	tcp->u_arg[2] = riscv_regs.a2;
+	tcp->u_arg[3] = riscv_regs.a3;
+	tcp->u_arg[4] = riscv_regs.a4;
+	tcp->u_arg[5] = riscv_regs.a5;
+	return 1;
+}
diff --git a/linux/riscv/ioctls_arch0.h b/linux/riscv/ioctls_arch0.h
new file mode 100644
index 0000000..9c039fc
--- /dev/null
+++ b/linux/riscv/ioctls_arch0.h
@@ -0,0 +1 @@
+/* Generated by ioctls_gen.sh from definitions found in $linux/arch/riscv/include/ tree. */
diff --git a/linux/riscv/ioctls_arch1.h b/linux/riscv/ioctls_arch1.h
new file mode 100644
index 0000000..41d00f9
--- /dev/null
+++ b/linux/riscv/ioctls_arch1.h
@@ -0,0 +1 @@
+#include "ioctls_arch0.h"
diff --git a/linux/riscv/ioctls_inc0.h b/linux/riscv/ioctls_inc0.h
new file mode 100644
index 0000000..f9939fa
--- /dev/null
+++ b/linux/riscv/ioctls_inc0.h
@@ -0,0 +1 @@
+#include "64/ioctls_inc.h"
diff --git a/linux/riscv/ioctls_inc1.h b/linux/riscv/ioctls_inc1.h
new file mode 100644
index 0000000..4aecf98
--- /dev/null
+++ b/linux/riscv/ioctls_inc1.h
@@ -0,0 +1 @@
+#include "32/ioctls_inc.h"
diff --git a/linux/riscv/signalent1.h b/linux/riscv/signalent1.h
new file mode 100644
index 0000000..39891b8
--- /dev/null
+++ b/linux/riscv/signalent1.h
@@ -0,0 +1,2 @@
+/* RISC-V rv32 and rv64 */
+#include "../signalent.h"
diff --git a/linux/riscv/syscallent.h b/linux/riscv/syscallent.h
new file mode 100644
index 0000000..7c416ef
--- /dev/null
+++ b/linux/riscv/syscallent.h
@@ -0,0 +1 @@
+#include "64/syscallent.h"
diff --git a/linux/riscv/syscallent1.h b/linux/riscv/syscallent1.h
new file mode 100644
index 0000000..22eff67
--- /dev/null
+++ b/linux/riscv/syscallent1.h
@@ -0,0 +1 @@
+#include "32/syscallent.h"
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index fb5ddc1..a7004ae 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -271,8 +271,8 @@
 [240] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [241] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [242] = { },
-[243] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[244] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[243] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[244] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [245] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [246] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [247] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -321,7 +321,7 @@
 [290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[293] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[293] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/s390x/arch_regs.c b/linux/s390x/arch_regs.c
index 74aaaf6..62aece7 100644
--- a/linux/s390x/arch_regs.c
+++ b/linux/s390x/arch_regs.c
@@ -1,2 +1 @@
 #include "s390/arch_regs.c"
-#define ARCH_PC_REG s390_regset.psw.addr
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index bf9c9fa..9d1e944 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -255,8 +255,8 @@
 [240] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [241] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [242] = { },
-[243] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[244] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[243] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[244] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [245] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [246] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [247] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index d2b462d..5a0bef0 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -270,8 +270,8 @@
 [241] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [242] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [243 ... 244] = { },
-[245] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[246] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[245] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[246] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [247] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [248] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [249] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -325,7 +325,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [301] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [302] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [303] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -394,6 +394,20 @@
 [366] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
 [367] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [368] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
+[369] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
+[370] = { 4,	0,		SEN(sched_getattr),		"sched_getattr"		},
+[371] = { 5,	TD|TF,		SEN(renameat2),			"renameat2"		},
+[372] = { 3,	0,		SEN(seccomp),			"seccomp",		},
+[373] = { 3,	0,		SEN(getrandom),			"getrandom",		},
+[374] = { 2,	TD,		SEN(memfd_create),		"memfd_create",		},
+[375] = { 3,	TD,		SEN(bpf),			"bpf",			},
+[376] = { 5,	TD|TF|TP|SE|SI,	SEN(execveat),			"execveat",		},
+[377] = { 1,	TD,		SEN(userfaultfd),		"userfaultfd",		},
+[378] = { 2,	0,		SEN(membarrier),		"membarrier",		},
+[379] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
+[380] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[381] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[382] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h
index 3504881..5e4ee72 100644
--- a/linux/sh64/syscallent.h
+++ b/linux/sh64/syscallent.h
@@ -296,8 +296,8 @@
 [269] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [270] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [271 ... 272] = { },
-[273] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[274] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[273] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[274] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [275] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [276] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [277] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -323,7 +323,7 @@
 [297] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
 [298] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [299] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[300] = { 4,	TD,		SEN(fadvise64),			"fadvise64_64"		},
+[300] = { 4,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
 [301] = { },
 [302] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [303] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
@@ -351,7 +351,7 @@
 [325] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [326] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [327] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[328] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[328] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [329] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [330] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [331] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -403,6 +403,20 @@
 [377] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
 [378] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [379] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
+[380] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
+[381] = { 4,	0,		SEN(sched_getattr),		"sched_getattr"		},
+[382] = { 5,	TD|TF,		SEN(renameat2),			"renameat2"		},
+[383] = { 3,	0,		SEN(seccomp),			"seccomp",		},
+[384] = { 3,	0,		SEN(getrandom),			"getrandom",		},
+[385] = { 2,	TD,		SEN(memfd_create),		"memfd_create",		},
+[386] = { 3,	TD,		SEN(bpf),			"bpf",			},
+[387] = { 5,	TD|TF|TP|SE|SI,	SEN(execveat),			"execveat",		},
+[388] = { 1,	TD,		SEN(userfaultfd),		"userfaultfd",		},
+[389] = { 2,	0,		SEN(membarrier),		"membarrier",		},
+[390] = { 3,	TM,		SEN(mlock2),			"mlock2"		},
+[391] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
+[392] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
+[393] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sock_diag.h b/linux/sock_diag.h
index e5dd066..ba0c114 100644
--- a/linux/sock_diag.h
+++ b/linux/sock_diag.h
@@ -1,6 +1,11 @@
+#ifndef STRACE_LINUX_SOCK_DIAG_H
+#define STRACE_LINUX_SOCK_DIAG_H
+
 #define SOCK_DIAG_BY_FAMILY 20
 
 struct sock_diag_req {
 	uint8_t	sdiag_family;
 	uint8_t	sdiag_protocol;
 };
+
+#endif /* !STRACE_LINUX_SOCK_DIAG_H */
diff --git a/linux/sparc/arch_sigreturn.c b/linux/sparc/arch_sigreturn.c
index 9e86efa..0c0e511 100644
--- a/linux/sparc/arch_sigreturn.c
+++ b/linux/sparc/arch_sigreturn.c
@@ -1,12 +1,22 @@
+#ifndef SIZEOF_STRUCT_SPARC_STACKF
+# define SIZEOF_STRUCT_SPARC_STACKF	sizeof(struct sparc_stackf)
+#endif
+#ifndef SIZEOF_STRUCT_PT_REGS
+# define SIZEOF_STRUCT_PT_REGS		sizeof(struct pt_regs)
+#endif
+#ifndef PERSONALITY_WORDSIZE
+# define PERSONALITY_WORDSIZE		PERSONALITY0_WORDSIZE
+#endif
+
 static void
 arch_sigreturn(struct tcb *tcp)
 {
-	long fp = sparc_regs.u_regs[U_REG_FP] + sizeof(struct sparc_stackf);
+	long fp = sparc_regs.u_regs[U_REG_FP] +
+		  SIZEOF_STRUCT_SPARC_STACKF + SIZEOF_STRUCT_PT_REGS;
 	struct {
-		struct pt_regs si_regs;
-		int si_mask;
-		void *fpu_save;
-		long insns[2] ATTRIBUTE_ALIGNED(8);
+		unsigned int mask;
+		char fpu_save[PERSONALITY_WORDSIZE];
+		char insns[PERSONALITY_WORDSIZE * 2] ATTRIBUTE_ALIGNED(8);
 		unsigned int extramask[NSIG / 8 / sizeof(int) - 1];
 	} frame;
 
@@ -15,9 +25,13 @@
 	} else {
 		unsigned int mask[NSIG / 8 / sizeof(int)];
 
-		mask[0] = frame.si_mask;
+		mask[0] = frame.mask;
 		memcpy(mask + 1, frame.extramask, sizeof(frame.extramask));
 		tprintsigmask_addr("{mask=", mask);
 		tprints("}");
 	}
 }
+
+#undef PERSONALITY_WORDSIZE
+#undef SIZEOF_STRUCT_PT_REGS
+#undef SIZEOF_STRUCT_SPARC_STACKF
diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h
index ec86f7e..69f5f47 100644
--- a/linux/sparc/syscallent.h
+++ b/linux/sparc/syscallent.h
@@ -266,8 +266,8 @@
 [265] = { 1,	0,		SEN(timer_delete),		"timer_delete"		},
 [266] = { 3,	0,		SEN(timer_create),		"timer_create"		},
 [267] = { },
-[268] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[269] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[268] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[269] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [270] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [271] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
 [272] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
@@ -287,7 +287,7 @@
 [286] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [287] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [288] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[289] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[289] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [290] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [291] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [292] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/sparc64/arch_regs.c b/linux/sparc64/arch_regs.c
index 072a355..c1c2fae 100644
--- a/linux/sparc64/arch_regs.c
+++ b/linux/sparc64/arch_regs.c
@@ -1,2 +1,3 @@
 #include "sparc/arch_regs.c"
+#undef ARCH_PC_REG
 #define ARCH_PC_REG sparc_regs.tpc
diff --git a/linux/sparc64/arch_sigreturn.c b/linux/sparc64/arch_sigreturn.c
index aeec981..feac9da 100644
--- a/linux/sparc64/arch_sigreturn.c
+++ b/linux/sparc64/arch_sigreturn.c
@@ -1 +1,19 @@
+#define arch_sigreturn	sparc64_arch_sigreturn
 #include "sparc/arch_sigreturn.c"
+#undef arch_sigreturn
+
+#define SIZEOF_STRUCT_SPARC_STACKF	sizeof(struct sparc_stackf32)
+#define SIZEOF_STRUCT_PT_REGS		sizeof(struct pt_regs32)
+#define PERSONALITY_WORDSIZE		PERSONALITY1_WORDSIZE
+#define arch_sigreturn	sparc32_arch_sigreturn
+#include "sparc/arch_sigreturn.c"
+#undef arch_sigreturn
+
+static void
+arch_sigreturn(struct tcb *tcp)
+{
+	if (current_personality == 1)
+		sparc32_arch_sigreturn(tcp);
+	else
+		sparc64_arch_sigreturn(tcp);
+}
diff --git a/linux/sparc64/get_scno.c b/linux/sparc64/get_scno.c
index 68d5917..4abe2a1 100644
--- a/linux/sparc64/get_scno.c
+++ b/linux/sparc64/get_scno.c
@@ -12,11 +12,11 @@
 	switch (trap) {
 	case 0x91d02010:
 		/* Linux/SPARC syscall trap. */
-		update_personality(tcp, 0);
+		update_personality(tcp, 1);
 		break;
 	case 0x91d0206d:
 		/* Linux/SPARC64 syscall trap. */
-		update_personality(tcp, 1);
+		update_personality(tcp, 0);
 		break;
 	}
 
diff --git a/linux/sparc64/get_syscall_args.c b/linux/sparc64/get_syscall_args.c
index 821c331..8d29785 100644
--- a/linux/sparc64/get_syscall_args.c
+++ b/linux/sparc64/get_syscall_args.c
@@ -1 +1,27 @@
-#include "sparc/get_syscall_args.c"
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+	if (tcp->currpers == 1) {
+		/*
+		 * Zero-extend from 32 bits.
+		 * Use widen_to_long(tcp->u_arg[N]) in syscall handlers
+		 * if you need to use *sign-extended* parameter.
+		 */
+		tcp->u_arg[0] = (long) (uint32_t) sparc_regs.u_regs[U_REG_O0 + 0];
+		tcp->u_arg[1] = (long) (uint32_t) sparc_regs.u_regs[U_REG_O0 + 1];
+		tcp->u_arg[2] = (long) (uint32_t) sparc_regs.u_regs[U_REG_O0 + 2];
+		tcp->u_arg[3] = (long) (uint32_t) sparc_regs.u_regs[U_REG_O0 + 3];
+		tcp->u_arg[4] = (long) (uint32_t) sparc_regs.u_regs[U_REG_O0 + 4];
+		tcp->u_arg[5] = (long) (uint32_t) sparc_regs.u_regs[U_REG_O0 + 5];
+	} else {
+		tcp->u_arg[0] = sparc_regs.u_regs[U_REG_O0 + 0];
+		tcp->u_arg[1] = sparc_regs.u_regs[U_REG_O0 + 1];
+		tcp->u_arg[2] = sparc_regs.u_regs[U_REG_O0 + 2];
+		tcp->u_arg[3] = sparc_regs.u_regs[U_REG_O0 + 3];
+		tcp->u_arg[4] = sparc_regs.u_regs[U_REG_O0 + 4];
+		tcp->u_arg[5] = sparc_regs.u_regs[U_REG_O0 + 5];
+	}
+
+	return 1;
+}
diff --git a/linux/sparc64/ioctls_arch0.h b/linux/sparc64/ioctls_arch0.h
index 96bd895..0e5f1a0 100644
--- a/linux/sparc64/ioctls_arch0.h
+++ b/linux/sparc64/ioctls_arch0.h
@@ -1 +1,129 @@
-#include "sparc/ioctls_arch0.h"
+/* Generated by ioctls_gen.sh from definitions found in $linux/arch/sparc/include/ tree. */
+{ "asm/apc.h", "APCIOCGBPORT", _IOC_READ, 0x4104, 0x04 },
+{ "asm/apc.h", "APCIOCGCPWR", _IOC_READ, 0x4102, 0x04 },
+{ "asm/apc.h", "APCIOCGFANCTL", _IOC_READ, 0x4100, 0x04 },
+{ "asm/apc.h", "APCIOCSBPORT", _IOC_WRITE, 0x4105, 0x04 },
+{ "asm/apc.h", "APCIOCSCPWR", _IOC_WRITE, 0x4103, 0x04 },
+{ "asm/apc.h", "APCIOCSFANCTL", _IOC_WRITE, 0x4101, 0x04 },
+{ "asm/display7seg.h", "D7SIOCRD", _IOC_READ, 0x7045, 0x04 },
+{ "asm/display7seg.h", "D7SIOCTM", _IOC_NONE, 0x7047, 0x00 },
+{ "asm/display7seg.h", "D7SIOCWR", _IOC_WRITE, 0x7046, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_CPU_TEMPERATURE", _IOC_READ, 0x7040, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_CPU_VOLTAGE", _IOC_READ, 0x7041, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_ETHERNET_TEMPERATURE", _IOC_READ, 0x7047, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_FAN_STATUS", _IOC_READ, 0x7042, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_GLOBALADDRESS", _IOC_READ, 0x7049, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_MTHRBD_TEMPERATURE", _IOC_READ, 0x7048, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_SCSI_TEMPERATURE", _IOC_READ, 0x7046, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_SHUTDOWN_TEMPERATURE", _IOC_READ, 0x7044, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_VOLTAGE_STATUS", _IOC_READ, 0x7045, 0x04 },
+{ "asm/envctrl.h", "ENVCTRL_RD_WARNING_TEMPERATURE", _IOC_READ, 0x7043, 0x04 },
+{ "asm/fbio.h", "FBIOGATTR", _IOC_READ, 0x4606, 0x58 },
+{ "asm/fbio.h", "FBIOGCURMAX", _IOC_READ, 0x461c, 0x04 },
+{ "asm/fbio.h", "FBIOGCURPOS", _IOC_WRITE, 0x461b, 0x04 },
+{ "asm/fbio.h", "FBIOGCURSOR", _IOC_READ|_IOC_WRITE, 0x4619, 0x48 },
+{ "asm/fbio.h", "FBIOGETCMAP", _IOC_WRITE, 0x4604, 0x20 },
+{ "asm/fbio.h", "FBIOGTYPE", _IOC_READ, 0x4600, 0x18 },
+{ "asm/fbio.h", "FBIOGVIDEO", _IOC_READ, 0x4608, 0x04 },
+{ "asm/fbio.h", "FBIOPUTCMAP", _IOC_WRITE, 0x4603, 0x20 },
+{ "asm/fbio.h", "FBIOSATTR", _IOC_WRITE, 0x4605, 0x58 },
+{ "asm/fbio.h", "FBIOSCURPOS", _IOC_WRITE, 0x461a, 0x04 },
+{ "asm/fbio.h", "FBIOSCURSOR", _IOC_WRITE, 0x4618, 0x48 },
+{ "asm/fbio.h", "FBIOSVIDEO", _IOC_WRITE, 0x4607, 0x04 },
+{ "asm/fbio.h", "FBIO_WID_ALLOC", _IOC_READ|_IOC_WRITE, 0x461e, 0x0c },
+{ "asm/fbio.h", "FBIO_WID_FREE", _IOC_WRITE, 0x461f, 0x0c },
+{ "asm/fbio.h", "FBIO_WID_GET", _IOC_READ|_IOC_WRITE, 0x4621, 0x10 },
+{ "asm/fbio.h", "FBIO_WID_PUT", _IOC_WRITE, 0x4620, 0x10 },
+{ "asm/fbio.h", "LEO_CLUTALLOC", _IOC_READ|_IOC_WRITE, 0x4c35, 0x0c },
+{ "asm/fbio.h", "LEO_CLUTFREE", _IOC_WRITE, 0x4c36, 0x0c },
+{ "asm/fbio.h", "LEO_CLUTPOST", _IOC_WRITE, 0x4c38, 0x28 },
+{ "asm/fbio.h", "LEO_CLUTREAD", _IOC_WRITE, 0x4c37, 0x28 },
+{ "asm/fbio.h", "LEO_GETGAMMA", _IOC_READ, 0x4c45, 0x04 },
+{ "asm/fbio.h", "LEO_SETGAMMA", _IOC_WRITE, 0x4c44, 0x04 },
+{ "asm/ioctls.h", "FIOASYNC", _IOC_WRITE, 0x667d, 0x04 },
+{ "asm/ioctls.h", "FIOCLEX", _IOC_NONE, 0x6601, 0x00 },
+{ "asm/ioctls.h", "FIONBIO", _IOC_WRITE, 0x667e, 0x04 },
+{ "asm/ioctls.h", "FIONCLEX", _IOC_NONE, 0x6602, 0x00 },
+{ "asm/ioctls.h", "FIONREAD", _IOC_READ, 0x667f, 0x04 },
+{ "asm/ioctls.h", "FIOQSIZE", _IOC_READ, 0x6680, 0x08 },
+{ "asm/ioctls.h", "TCFLSH", _IOC_NONE, 0x5407, 0x00 },
+{ "asm/ioctls.h", "TCGETA", _IOC_READ, 0x5401, 0x12 },
+{ "asm/ioctls.h", "TCGETS", _IOC_READ, 0x5408, 0x24 },
+{ "asm/ioctls.h", "TCGETS2", _IOC_READ, 0x540c, 0x2c },
+{ "asm/ioctls.h", "TCSBRK", _IOC_NONE, 0x5405, 0x00 },
+{ "asm/ioctls.h", "TCSBRKP", 0, 0x5425, 0 },
+{ "asm/ioctls.h", "TCSETA", _IOC_WRITE, 0x5402, 0x12 },
+{ "asm/ioctls.h", "TCSETAF", _IOC_WRITE, 0x5404, 0x12 },
+{ "asm/ioctls.h", "TCSETAW", _IOC_WRITE, 0x5403, 0x12 },
+{ "asm/ioctls.h", "TCSETS", _IOC_WRITE, 0x5409, 0x24 },
+{ "asm/ioctls.h", "TCSETS2", _IOC_WRITE, 0x540d, 0x2c },
+{ "asm/ioctls.h", "TCSETSF", _IOC_WRITE, 0x540b, 0x24 },
+{ "asm/ioctls.h", "TCSETSF2", _IOC_WRITE, 0x540f, 0x2c },
+{ "asm/ioctls.h", "TCSETSW", _IOC_WRITE, 0x540a, 0x24 },
+{ "asm/ioctls.h", "TCSETSW2", _IOC_WRITE, 0x540e, 0x2c },
+{ "asm/ioctls.h", "TCXONC", _IOC_NONE, 0x5406, 0x00 },
+{ "asm/ioctls.h", "TIOCCBRK", _IOC_NONE, 0x747a, 0x00 },
+{ "asm/ioctls.h", "TIOCCONS", _IOC_NONE, 0x7424, 0x00 },
+{ "asm/ioctls.h", "TIOCEXCL", _IOC_NONE, 0x740d, 0x00 },
+{ "asm/ioctls.h", "TIOCGDEV", _IOC_READ, 0x5432, 0x04 },
+{ "asm/ioctls.h", "TIOCGETD", _IOC_READ, 0x7400, 0x04 },
+{ "asm/ioctls.h", "TIOCGEXCL", _IOC_READ, 0x5440, 0x04 },
+{ "asm/ioctls.h", "TIOCGICOUNT", 0, 0x545D, 0 },
+{ "asm/ioctls.h", "TIOCGLCKTRMIOS", 0, 0x5456, 0 },
+{ "asm/ioctls.h", "TIOCGPGRP", _IOC_READ, 0x7483, 0x04 },
+{ "asm/ioctls.h", "TIOCGPKT", _IOC_READ, 0x5438, 0x04 },
+{ "asm/ioctls.h", "TIOCGPTLCK", _IOC_READ, 0x5439, 0x04 },
+{ "asm/ioctls.h", "TIOCGPTN", _IOC_READ, 0x7486, 0x04 },
+{ "asm/ioctls.h", "TIOCGRS485", _IOC_READ, 0x5441, 0x20 },
+{ "asm/ioctls.h", "TIOCGSERIAL", 0, 0x541E, 0 },
+{ "asm/ioctls.h", "TIOCGSID", _IOC_READ, 0x7485, 0x04 },
+{ "asm/ioctls.h", "TIOCGSOFTCAR", _IOC_READ, 0x7464, 0x04 },
+{ "asm/ioctls.h", "TIOCGWINSZ", _IOC_READ, 0x7468, 0x08 },
+{ "asm/ioctls.h", "TIOCLINUX", 0, 0x541C, 0 },
+{ "asm/ioctls.h", "TIOCMBIC", _IOC_WRITE, 0x746b, 0x04 },
+{ "asm/ioctls.h", "TIOCMBIS", _IOC_WRITE, 0x746c, 0x04 },
+{ "asm/ioctls.h", "TIOCMGET", _IOC_READ, 0x746a, 0x04 },
+{ "asm/ioctls.h", "TIOCMIWAIT", 0, 0x545C, 0 },
+{ "asm/ioctls.h", "TIOCMSET", _IOC_WRITE, 0x746d, 0x04 },
+{ "asm/ioctls.h", "TIOCNOTTY", _IOC_NONE, 0x7471, 0x00 },
+{ "asm/ioctls.h", "TIOCNXCL", _IOC_NONE, 0x740e, 0x00 },
+{ "asm/ioctls.h", "TIOCOUTQ", _IOC_READ, 0x7473, 0x04 },
+{ "asm/ioctls.h", "TIOCPKT", _IOC_WRITE, 0x7470, 0x04 },
+{ "asm/ioctls.h", "TIOCSBRK", _IOC_NONE, 0x747b, 0x00 },
+{ "asm/ioctls.h", "TIOCSCTTY", _IOC_NONE, 0x7484, 0x00 },
+{ "asm/ioctls.h", "TIOCSERCONFIG", 0, 0x5453, 0 },
+{ "asm/ioctls.h", "TIOCSERGETLSR", 0, 0x5459, 0 },
+{ "asm/ioctls.h", "TIOCSERGETMULTI", 0, 0x545A, 0 },
+{ "asm/ioctls.h", "TIOCSERGSTRUCT", 0, 0x5458, 0 },
+{ "asm/ioctls.h", "TIOCSERGWILD", 0, 0x5454, 0 },
+{ "asm/ioctls.h", "TIOCSERSETMULTI", 0, 0x545B, 0 },
+{ "asm/ioctls.h", "TIOCSERSWILD", 0, 0x5455, 0 },
+{ "asm/ioctls.h", "TIOCSETD", _IOC_WRITE, 0x7401, 0x04 },
+{ "asm/ioctls.h", "TIOCSIG", _IOC_WRITE, 0x7488, 0x04 },
+{ "asm/ioctls.h", "TIOCSLCKTRMIOS", 0, 0x5457, 0 },
+{ "asm/ioctls.h", "TIOCSPGRP", _IOC_WRITE, 0x7482, 0x04 },
+{ "asm/ioctls.h", "TIOCSPTLCK", _IOC_WRITE, 0x7487, 0x04 },
+{ "asm/ioctls.h", "TIOCSRS485", _IOC_READ|_IOC_WRITE, 0x5442, 0x20 },
+{ "asm/ioctls.h", "TIOCSSERIAL", 0, 0x541F, 0 },
+{ "asm/ioctls.h", "TIOCSSOFTCAR", _IOC_WRITE, 0x7465, 0x04 },
+{ "asm/ioctls.h", "TIOCSTART", _IOC_NONE, 0x746e, 0x00 },
+{ "asm/ioctls.h", "TIOCSTI", _IOC_WRITE, 0x7472, 0x01 },
+{ "asm/ioctls.h", "TIOCSTOP", _IOC_NONE, 0x746f, 0x00 },
+{ "asm/ioctls.h", "TIOCSWINSZ", _IOC_WRITE, 0x7467, 0x08 },
+{ "asm/ioctls.h", "TIOCVHANGUP", _IOC_NONE, 0x5437, 0x00 },
+{ "asm/openpromio.h", "OPIOCGET", _IOC_READ|_IOC_WRITE, 0x4f01, 0x20 },
+{ "asm/openpromio.h", "OPIOCGETCHILD", _IOC_READ|_IOC_WRITE, 0x4f06, 0x04 },
+{ "asm/openpromio.h", "OPIOCGETNEXT", _IOC_READ|_IOC_WRITE, 0x4f05, 0x04 },
+{ "asm/openpromio.h", "OPIOCGETOPTNODE", _IOC_READ, 0x4f04, 0x04 },
+{ "asm/openpromio.h", "OPIOCNEXTPROP", _IOC_READ|_IOC_WRITE, 0x4f03, 0x20 },
+{ "asm/openpromio.h", "OPIOCSET", _IOC_WRITE, 0x4f02, 0x20 },
+{ "asm/sockios.h", "FIOGETOWN", 0, 0x8903, 0 },
+{ "asm/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
+{ "asm/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
+{ "asm/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
+{ "asm/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
+{ "asm/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
+{ "asm/watchdog.h", "WIOCGSTAT", _IOC_READ, 0x570c, 0x04 },
+{ "asm/watchdog.h", "WIOCSTART", _IOC_NONE, 0x570a, 0x00 },
+{ "asm/watchdog.h", "WIOCSTOP", _IOC_NONE, 0x570b, 0x00 },
diff --git a/linux/sparc64/ioctls_arch1.h b/linux/sparc64/ioctls_arch1.h
index 6128dc9..96bd895 100644
--- a/linux/sparc64/ioctls_arch1.h
+++ b/linux/sparc64/ioctls_arch1.h
@@ -1,129 +1 @@
-/* Generated by ioctls_gen.sh from definitions found in $linux/arch/sparc/include/ tree. */
-{ "asm/apc.h", "APCIOCGBPORT", _IOC_READ, 0x4104, 0x04 },
-{ "asm/apc.h", "APCIOCGCPWR", _IOC_READ, 0x4102, 0x04 },
-{ "asm/apc.h", "APCIOCGFANCTL", _IOC_READ, 0x4100, 0x04 },
-{ "asm/apc.h", "APCIOCSBPORT", _IOC_WRITE, 0x4105, 0x04 },
-{ "asm/apc.h", "APCIOCSCPWR", _IOC_WRITE, 0x4103, 0x04 },
-{ "asm/apc.h", "APCIOCSFANCTL", _IOC_WRITE, 0x4101, 0x04 },
-{ "asm/display7seg.h", "D7SIOCRD", _IOC_READ, 0x7045, 0x04 },
-{ "asm/display7seg.h", "D7SIOCTM", _IOC_NONE, 0x7047, 0x00 },
-{ "asm/display7seg.h", "D7SIOCWR", _IOC_WRITE, 0x7046, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_CPU_TEMPERATURE", _IOC_READ, 0x7040, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_CPU_VOLTAGE", _IOC_READ, 0x7041, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_ETHERNET_TEMPERATURE", _IOC_READ, 0x7047, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_FAN_STATUS", _IOC_READ, 0x7042, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_GLOBALADDRESS", _IOC_READ, 0x7049, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_MTHRBD_TEMPERATURE", _IOC_READ, 0x7048, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_SCSI_TEMPERATURE", _IOC_READ, 0x7046, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_SHUTDOWN_TEMPERATURE", _IOC_READ, 0x7044, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_VOLTAGE_STATUS", _IOC_READ, 0x7045, 0x04 },
-{ "asm/envctrl.h", "ENVCTRL_RD_WARNING_TEMPERATURE", _IOC_READ, 0x7043, 0x04 },
-{ "asm/fbio.h", "FBIOGATTR", _IOC_READ, 0x4606, 0x58 },
-{ "asm/fbio.h", "FBIOGCURMAX", _IOC_READ, 0x461c, 0x04 },
-{ "asm/fbio.h", "FBIOGCURPOS", _IOC_WRITE, 0x461b, 0x04 },
-{ "asm/fbio.h", "FBIOGCURSOR", _IOC_READ|_IOC_WRITE, 0x4619, 0x48 },
-{ "asm/fbio.h", "FBIOGETCMAP", _IOC_WRITE, 0x4604, 0x20 },
-{ "asm/fbio.h", "FBIOGTYPE", _IOC_READ, 0x4600, 0x18 },
-{ "asm/fbio.h", "FBIOGVIDEO", _IOC_READ, 0x4608, 0x04 },
-{ "asm/fbio.h", "FBIOPUTCMAP", _IOC_WRITE, 0x4603, 0x20 },
-{ "asm/fbio.h", "FBIOSATTR", _IOC_WRITE, 0x4605, 0x58 },
-{ "asm/fbio.h", "FBIOSCURPOS", _IOC_WRITE, 0x461a, 0x04 },
-{ "asm/fbio.h", "FBIOSCURSOR", _IOC_WRITE, 0x4618, 0x48 },
-{ "asm/fbio.h", "FBIOSVIDEO", _IOC_WRITE, 0x4607, 0x04 },
-{ "asm/fbio.h", "FBIO_WID_ALLOC", _IOC_READ|_IOC_WRITE, 0x461e, 0x0c },
-{ "asm/fbio.h", "FBIO_WID_FREE", _IOC_WRITE, 0x461f, 0x0c },
-{ "asm/fbio.h", "FBIO_WID_GET", _IOC_READ|_IOC_WRITE, 0x4621, 0x10 },
-{ "asm/fbio.h", "FBIO_WID_PUT", _IOC_WRITE, 0x4620, 0x10 },
-{ "asm/fbio.h", "LEO_CLUTALLOC", _IOC_READ|_IOC_WRITE, 0x4c35, 0x0c },
-{ "asm/fbio.h", "LEO_CLUTFREE", _IOC_WRITE, 0x4c36, 0x0c },
-{ "asm/fbio.h", "LEO_CLUTPOST", _IOC_WRITE, 0x4c38, 0x28 },
-{ "asm/fbio.h", "LEO_CLUTREAD", _IOC_WRITE, 0x4c37, 0x28 },
-{ "asm/fbio.h", "LEO_GETGAMMA", _IOC_READ, 0x4c45, 0x04 },
-{ "asm/fbio.h", "LEO_SETGAMMA", _IOC_WRITE, 0x4c44, 0x04 },
-{ "asm/ioctls.h", "FIOASYNC", _IOC_WRITE, 0x667d, 0x04 },
-{ "asm/ioctls.h", "FIOCLEX", _IOC_NONE, 0x6601, 0x00 },
-{ "asm/ioctls.h", "FIONBIO", _IOC_WRITE, 0x667e, 0x04 },
-{ "asm/ioctls.h", "FIONCLEX", _IOC_NONE, 0x6602, 0x00 },
-{ "asm/ioctls.h", "FIONREAD", _IOC_READ, 0x667f, 0x04 },
-{ "asm/ioctls.h", "FIOQSIZE", _IOC_READ, 0x6680, 0x08 },
-{ "asm/ioctls.h", "TCFLSH", _IOC_NONE, 0x5407, 0x00 },
-{ "asm/ioctls.h", "TCGETA", _IOC_READ, 0x5401, 0x12 },
-{ "asm/ioctls.h", "TCGETS", _IOC_READ, 0x5408, 0x38 },
-{ "asm/ioctls.h", "TCGETS2", _IOC_READ, 0x540c, 0x40 },
-{ "asm/ioctls.h", "TCSBRK", _IOC_NONE, 0x5405, 0x00 },
-{ "asm/ioctls.h", "TCSBRKP", 0, 0x5425, 0 },
-{ "asm/ioctls.h", "TCSETA", _IOC_WRITE, 0x5402, 0x12 },
-{ "asm/ioctls.h", "TCSETAF", _IOC_WRITE, 0x5404, 0x12 },
-{ "asm/ioctls.h", "TCSETAW", _IOC_WRITE, 0x5403, 0x12 },
-{ "asm/ioctls.h", "TCSETS", _IOC_WRITE, 0x5409, 0x38 },
-{ "asm/ioctls.h", "TCSETS2", _IOC_WRITE, 0x540d, 0x40 },
-{ "asm/ioctls.h", "TCSETSF", _IOC_WRITE, 0x540b, 0x38 },
-{ "asm/ioctls.h", "TCSETSF2", _IOC_WRITE, 0x540f, 0x40 },
-{ "asm/ioctls.h", "TCSETSW", _IOC_WRITE, 0x540a, 0x38 },
-{ "asm/ioctls.h", "TCSETSW2", _IOC_WRITE, 0x540e, 0x40 },
-{ "asm/ioctls.h", "TCXONC", _IOC_NONE, 0x5406, 0x00 },
-{ "asm/ioctls.h", "TIOCCBRK", _IOC_NONE, 0x747a, 0x00 },
-{ "asm/ioctls.h", "TIOCCONS", _IOC_NONE, 0x7424, 0x00 },
-{ "asm/ioctls.h", "TIOCEXCL", _IOC_NONE, 0x740d, 0x00 },
-{ "asm/ioctls.h", "TIOCGDEV", _IOC_READ, 0x5432, 0x04 },
-{ "asm/ioctls.h", "TIOCGETD", _IOC_READ, 0x7400, 0x04 },
-{ "asm/ioctls.h", "TIOCGEXCL", _IOC_READ, 0x5440, 0x04 },
-{ "asm/ioctls.h", "TIOCGICOUNT", 0, 0x545D, 0 },
-{ "asm/ioctls.h", "TIOCGLCKTRMIOS", 0, 0x5456, 0 },
-{ "asm/ioctls.h", "TIOCGPGRP", _IOC_READ, 0x7483, 0x04 },
-{ "asm/ioctls.h", "TIOCGPKT", _IOC_READ, 0x5438, 0x04 },
-{ "asm/ioctls.h", "TIOCGPTLCK", _IOC_READ, 0x5439, 0x04 },
-{ "asm/ioctls.h", "TIOCGPTN", _IOC_READ, 0x7486, 0x04 },
-{ "asm/ioctls.h", "TIOCGRS485", _IOC_READ, 0x5441, 0x20 },
-{ "asm/ioctls.h", "TIOCGSERIAL", 0, 0x541E, 0 },
-{ "asm/ioctls.h", "TIOCGSID", _IOC_READ, 0x7485, 0x04 },
-{ "asm/ioctls.h", "TIOCGSOFTCAR", _IOC_READ, 0x7464, 0x04 },
-{ "asm/ioctls.h", "TIOCGWINSZ", _IOC_READ, 0x7468, 0x08 },
-{ "asm/ioctls.h", "TIOCLINUX", 0, 0x541C, 0 },
-{ "asm/ioctls.h", "TIOCMBIC", _IOC_WRITE, 0x746b, 0x04 },
-{ "asm/ioctls.h", "TIOCMBIS", _IOC_WRITE, 0x746c, 0x04 },
-{ "asm/ioctls.h", "TIOCMGET", _IOC_READ, 0x746a, 0x04 },
-{ "asm/ioctls.h", "TIOCMIWAIT", 0, 0x545C, 0 },
-{ "asm/ioctls.h", "TIOCMSET", _IOC_WRITE, 0x746d, 0x04 },
-{ "asm/ioctls.h", "TIOCNOTTY", _IOC_NONE, 0x7471, 0x00 },
-{ "asm/ioctls.h", "TIOCNXCL", _IOC_NONE, 0x740e, 0x00 },
-{ "asm/ioctls.h", "TIOCOUTQ", _IOC_READ, 0x7473, 0x04 },
-{ "asm/ioctls.h", "TIOCPKT", _IOC_WRITE, 0x7470, 0x04 },
-{ "asm/ioctls.h", "TIOCSBRK", _IOC_NONE, 0x747b, 0x00 },
-{ "asm/ioctls.h", "TIOCSCTTY", _IOC_NONE, 0x7484, 0x00 },
-{ "asm/ioctls.h", "TIOCSERCONFIG", 0, 0x5453, 0 },
-{ "asm/ioctls.h", "TIOCSERGETLSR", 0, 0x5459, 0 },
-{ "asm/ioctls.h", "TIOCSERGETMULTI", 0, 0x545A, 0 },
-{ "asm/ioctls.h", "TIOCSERGSTRUCT", 0, 0x5458, 0 },
-{ "asm/ioctls.h", "TIOCSERGWILD", 0, 0x5454, 0 },
-{ "asm/ioctls.h", "TIOCSERSETMULTI", 0, 0x545B, 0 },
-{ "asm/ioctls.h", "TIOCSERSWILD", 0, 0x5455, 0 },
-{ "asm/ioctls.h", "TIOCSETD", _IOC_WRITE, 0x7401, 0x04 },
-{ "asm/ioctls.h", "TIOCSIG", _IOC_WRITE, 0x7488, 0x04 },
-{ "asm/ioctls.h", "TIOCSLCKTRMIOS", 0, 0x5457, 0 },
-{ "asm/ioctls.h", "TIOCSPGRP", _IOC_WRITE, 0x7482, 0x04 },
-{ "asm/ioctls.h", "TIOCSPTLCK", _IOC_WRITE, 0x7487, 0x04 },
-{ "asm/ioctls.h", "TIOCSRS485", _IOC_READ|_IOC_WRITE, 0x5442, 0x20 },
-{ "asm/ioctls.h", "TIOCSSERIAL", 0, 0x541F, 0 },
-{ "asm/ioctls.h", "TIOCSSOFTCAR", _IOC_WRITE, 0x7465, 0x04 },
-{ "asm/ioctls.h", "TIOCSTART", _IOC_NONE, 0x746e, 0x00 },
-{ "asm/ioctls.h", "TIOCSTI", _IOC_WRITE, 0x7472, 0x01 },
-{ "asm/ioctls.h", "TIOCSTOP", _IOC_NONE, 0x746f, 0x00 },
-{ "asm/ioctls.h", "TIOCSWINSZ", _IOC_WRITE, 0x7467, 0x08 },
-{ "asm/ioctls.h", "TIOCVHANGUP", _IOC_NONE, 0x5437, 0x00 },
-{ "asm/openpromio.h", "OPIOCGET", _IOC_READ|_IOC_WRITE, 0x4f01, 0x20 },
-{ "asm/openpromio.h", "OPIOCGETCHILD", _IOC_READ|_IOC_WRITE, 0x4f06, 0x04 },
-{ "asm/openpromio.h", "OPIOCGETNEXT", _IOC_READ|_IOC_WRITE, 0x4f05, 0x04 },
-{ "asm/openpromio.h", "OPIOCGETOPTNODE", _IOC_READ, 0x4f04, 0x04 },
-{ "asm/openpromio.h", "OPIOCNEXTPROP", _IOC_READ|_IOC_WRITE, 0x4f03, 0x20 },
-{ "asm/openpromio.h", "OPIOCSET", _IOC_WRITE, 0x4f02, 0x20 },
-{ "asm/sockios.h", "FIOGETOWN", 0, 0x8903, 0 },
-{ "asm/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
-{ "asm/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
-{ "asm/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
-{ "asm/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
-{ "asm/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
-{ "asm/watchdog.h", "WIOCGSTAT", _IOC_READ, 0x570c, 0x04 },
-{ "asm/watchdog.h", "WIOCSTART", _IOC_NONE, 0x570a, 0x00 },
-{ "asm/watchdog.h", "WIOCSTOP", _IOC_NONE, 0x570b, 0x00 },
+#include "sparc/ioctls_arch0.h"
diff --git a/linux/sparc64/ioctls_inc0.h b/linux/sparc64/ioctls_inc0.h
index 63b70e4..f9939fa 100644
--- a/linux/sparc64/ioctls_inc0.h
+++ b/linux/sparc64/ioctls_inc0.h
@@ -1 +1 @@
-#include "sparc/ioctls_inc0.h"
+#include "64/ioctls_inc.h"
diff --git a/linux/sparc64/ioctls_inc1.h b/linux/sparc64/ioctls_inc1.h
index f9939fa..63b70e4 100644
--- a/linux/sparc64/ioctls_inc1.h
+++ b/linux/sparc64/ioctls_inc1.h
@@ -1 +1 @@
-#include "64/ioctls_inc.h"
+#include "sparc/ioctls_inc0.h"
diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h
index 8bf5c3a..0f24596 100644
--- a/linux/sparc64/syscallent.h
+++ b/linux/sparc64/syscallent.h
@@ -11,18 +11,18 @@
 [ 10] = { 1,	TF,		SEN(unlink),			"unlink"		},
 [ 11] = { 2,	TF|TP|SE|SI,	SEN(execv),			"execv"			},
 [ 12] = { 1,	TF,		SEN(chdir),			"chdir"			},
-[ 13] = { 3,	TF,		SEN(chown16),			"chown"			},
+[ 13] = { 3,	TF,		SEN(chown),			"chown"			},
 [ 14] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
-[ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
+[ 16] = { 3,	TF,		SEN(chown),			"lchown"		},
 [ 17] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 18] = { 4,	0,		SEN(printargs),			"perfctr"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 2,	0,		SEN(capget),			"capget"		},
 [ 22] = { 2,	0,		SEN(capset),			"capset"		},
-[ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
+[ 24] = { 0,	NF,		SEN(getuid),			"getuid"		},
 [ 25] = { 4,	TD,		SEN(vmsplice),			"vmsplice"		},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -43,11 +43,11 @@
 [ 43] = { 1,	0,		SEN(times),			"times"			},
 [ 44] = { },
 [ 45] = { 2,	TF,		SEN(umount2),			"umount2"		},
-[ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 46] = { 1,	0,		SEN(setgid),			"setgid"		},
+[ 47] = { 0,	NF,		SEN(getgid),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
+[ 50] = { 0,	NF,		SEN(getegid),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	0,		SEN(printargs),			"memory_ordering"	},
 [ 53] = { },
@@ -75,8 +75,8 @@
 [ 76] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [ 77] = { },
 [ 78] = { 3,	TM,		SEN(mincore),			"mincore"		},
-[ 79] = { 2,	0,		SEN(getgroups16),		"getgroups"		},
-[ 80] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
+[ 79] = { 2,	0,		SEN(getgroups),			"getgroups"		},
+[ 80] = { 2,	0,		SEN(setgroups),			"setgroups"		},
 [ 81] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
 [ 82] = { },
 [ 83] = { 3,	0,		SEN(setitimer),			"setitimer"		},
@@ -119,11 +119,11 @@
 [120] = { 3,	TD,		SEN(readv),			"readv"			},
 [121] = { 3,	TD,		SEN(writev),			"writev"		},
 [122] = { 2,	0,		SEN(settimeofday),		"settimeofday"		},
-[123] = { 3,	TD,		SEN(fchown16),			"fchown"		},
+[123] = { 3,	TD,		SEN(fchown),			"fchown"		},
 [124] = { 2,	TD,		SEN(fchmod),			"fchmod"		},
 [125] = { 6,	TN,		SEN(recvfrom),			"recvfrom"		},
-[126] = { 2,	0,		SEN(setreuid16),		"setreuid"		},
-[127] = { 2,	0,		SEN(setregid16),		"setregid"		},
+[126] = { 2,	0,		SEN(setreuid),			"setreuid"		},
+[127] = { 2,	0,		SEN(setregid),			"setregid"		},
 [128] = { 2,	TF,		SEN(rename),			"rename"		},
 [129] = { 2,	TF,		SEN(truncate),			"truncate"		},
 [130] = { 2,	TD,		SEN(ftruncate),			"ftruncate"		},
@@ -206,7 +206,7 @@
 [207] = { 3,	0,		SEN(syslog),			"syslog"		},
 [208] = { 3,	0,		SEN(lookup_dcookie),		"lookup_dcookie"	},
 [209] = { 4,	TD,		SEN(fadvise64),			"fadvise64"		},
-[210] = { 4,	TD,		SEN(fadvise64),			"fadvise64_64"		},
+[210] = { 4,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
 [211] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [212] = { 3,	TP,		SEN(waitpid),			"waitpid"		},
 [213] = { 1,	TF,		SEN(swapoff),			"swapoff"		},
@@ -224,8 +224,8 @@
 [225] = { 2,	0,		SEN(bdflush),			"bdflush"		},
 [226] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [227] = { 5,	0,		SEN(afs_syscall),		"afs_syscall"		},
-[228] = { 1,	NF,		SEN(setfsuid16),		"setfsuid"		},
-[229] = { 1,	NF,		SEN(setfsgid16),		"setfsgid"		},
+[228] = { 1,	NF,		SEN(setfsuid),			"setfsuid"		},
+[229] = { 1,	NF,		SEN(setfsgid),			"setfsgid"		},
 [230] = { 5,	TD,		SEN(select),			"_newselect"		},
 [231] = { },
 [232] = { 6,	TD,		SEN(splice),			"splice"		},
@@ -264,8 +264,8 @@
 [265] = { 1,	0,		SEN(timer_delete),		"timer_delete"		},
 [266] = { 3,	0,		SEN(timer_create),		"timer_create"		},
 [267] = { },
-[268] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[269] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[268] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[269] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [270] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [271] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
 [272] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
@@ -285,7 +285,7 @@
 [286] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [287] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [288] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[289] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[289] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [290] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [291] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [292] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/sparc64/syscallent1.h b/linux/sparc64/syscallent1.h
index 5f73f3c..776b5f1 100644
--- a/linux/sparc64/syscallent1.h
+++ b/linux/sparc64/syscallent1.h
@@ -1,3 +1 @@
-#define sys_mmap_4koff sys_mmap_pgoff
 #include "../sparc/syscallent.h"
-#undef sys_mmap_4koff
diff --git a/linux/subcall.h b/linux/subcall.h
index 6d86751..169e5ea 100644
--- a/linux/subcall.h
+++ b/linux/subcall.h
@@ -31,7 +31,6 @@
 
 #define IS	TRACE_INDIRECT_SUBCALL
 
-[SYS_socket_subcall +  0] = { 6,	0,	SEN(printargs),		"socket_subcall"	},
 [SYS_socket_subcall +  1] = { 3,	IS|TN,	SEN(socket),		"socket"		},
 [SYS_socket_subcall +  2] = { 3,	IS|TN,	SEN(bind),		"bind"			},
 [SYS_socket_subcall +  3] = { 3,	IS|TN,	SEN(connect),		"connect"		},
@@ -56,27 +55,14 @@
 #define SYS_socket_nsubcalls	21
 #define SYS_ipc_subcall	((SYS_socket_subcall) + (SYS_socket_nsubcalls))
 
-[SYS_ipc_subcall +  0] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
 [SYS_ipc_subcall +  1] = { 4,	IS|TI,		SEN(semop),		"semop"			},
 [SYS_ipc_subcall +  2] = { 3,	IS|TI,		SEN(semget),		"semget"		},
 [SYS_ipc_subcall +  3] = { 4,	IS|TI,		SEN(semctl),		"semctl"		},
 [SYS_ipc_subcall +  4] = { 5,	IS|TI,		SEN(semtimedop),	"semtimedop"		},
-[SYS_ipc_subcall +  5] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall +  6] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall +  7] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall +  8] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall +  9] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall + 10] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
 [SYS_ipc_subcall + 11] = { 4,	IS|TI,		SEN(msgsnd),		"msgsnd"		},
 [SYS_ipc_subcall + 12] = { 5,	IS|TI,		SEN(msgrcv),		"msgrcv"		},
 [SYS_ipc_subcall + 13] = { 2,	IS|TI,		SEN(msgget),		"msgget"		},
 [SYS_ipc_subcall + 14] = { 4,	IS|TI,		SEN(msgctl),		"msgctl"		},
-[SYS_ipc_subcall + 15] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall + 16] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall + 17] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall + 18] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall + 19] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
-[SYS_ipc_subcall + 20] = { 6,	0,		SEN(printargs),		"ipc_subcall"		},
 [SYS_ipc_subcall + 21] = { 4,	IS|TI|TM|SI,	SEN(shmat),		"shmat"			},
 [SYS_ipc_subcall + 22] = { 4,	IS|TI|TM|SI,	SEN(shmdt),		"shmdt"			},
 [SYS_ipc_subcall + 23] = { 3,	IS|TI,		SEN(shmget),		"shmget"		},
diff --git a/linux/syscall.h b/linux/syscall.h
index 1b7cbc5..6bf8b42 100644
--- a/linux/syscall.h
+++ b/linux/syscall.h
@@ -26,6 +26,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_LINUX_SYSCALL_H
+#define STRACE_LINUX_SYSCALL_H
+
 #include "dummy.h"
 #include "sys_func.h"
 #include "sen.h"
@@ -42,3 +45,5 @@
 extern SYS_FUNC(setreuid16);
 extern SYS_FUNC(setuid16);
 #endif
+
+#endif /* !STRACE_LINUX_SYSCALL_H */
diff --git a/linux/unix_diag.h b/linux/unix_diag.h
index b37d465..0c3da5b 100644
--- a/linux/unix_diag.h
+++ b/linux/unix_diag.h
@@ -1,3 +1,6 @@
+#ifndef STRACE_LINUX_UNIX_DIAG_H
+#define STRACE_LINUX_UNIX_DIAG_H
+
 struct unix_diag_req {
 	uint8_t	 sdiag_family;
 	uint8_t	 sdiag_protocol;
@@ -22,3 +25,5 @@
 
 #define UNIX_DIAG_NAME 0
 #define UNIX_DIAG_PEER 2
+
+#endif /* !STRACE_LINUX_UNIX_DIAG_H */
diff --git a/linux/x32/arch_regs.c b/linux/x32/arch_regs.c
index 8140bc0..62c70be 100644
--- a/linux/x32/arch_regs.c
+++ b/linux/x32/arch_regs.c
@@ -1,2 +1 @@
 #include "x86_64/arch_regs.c"
-#define ARCH_PC_REG (x86_io.iov_len == sizeof(i386_regs) ? i386_regs.eip : x86_64_regs.rip)
diff --git a/linux/x32/asm_stat.h b/linux/x32/asm_stat.h
index 6713ac4..865aa4a 100644
--- a/linux/x32/asm_stat.h
+++ b/linux/x32/asm_stat.h
@@ -1,47 +1 @@
-/*
- * This is a replacement for x32 <asm/stat.h> which
- * appears to be wrong in older kernel headers.
- */
-
-#ifndef STRACE_ASM_STAT_H
-
-# define STRACE_ASM_STAT_H
-
-# include "kernel_types.h"
-
-struct stat {
-	kernel_ulong_t	st_dev;
-	kernel_ulong_t	st_ino;
-	kernel_ulong_t	st_nlink;
-	unsigned int	st_mode;
-	unsigned int	st_uid;
-	unsigned int	st_gid;
-	unsigned int	pad0__;
-	kernel_ulong_t	st_rdev;
-	kernel_long_t	st_size;
-	kernel_long_t	st_blksize;
-	kernel_long_t	st_blocks;
-	kernel_ulong_t	st_atime;
-	kernel_ulong_t	st_atime_nsec;
-	kernel_ulong_t	st_mtime;
-	kernel_ulong_t	st_mtime_nsec;
-	kernel_ulong_t	st_ctime;
-	kernel_ulong_t	st_ctime_nsec;
-	kernel_long_t	pad1__[3];
-};
-
-struct __old_kernel_stat {
-	unsigned short st_dev;
-	unsigned short st_ino;
-	unsigned short st_mode;
-	unsigned short st_nlink;
-	unsigned short st_uid;
-	unsigned short st_gid;
-	unsigned short st_rdev;
-	unsigned int  st_size;
-	unsigned int  st_atime;
-	unsigned int  st_mtime;
-	unsigned int  st_ctime;
-};
-
-#endif /* !STRACE_ASM_STAT_H */
+#include "x86_64/asm_stat.h"
diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h
index 0c36e25..f41bd6e 100644
--- a/linux/x32/ioctls_inc0.h
+++ b/linux/x32/ioctls_inc0.h
@@ -284,6 +284,7 @@
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x20 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
@@ -392,10 +393,13 @@
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_ATTACH", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/vgem_drm.h", "DRM_IOCTL_VGEM_FENCE_SIGNAL", _IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
 { "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@@ -683,6 +687,16 @@
 { "linux/cdrom.h", "DVD_AUTH", 0, 0x5392, 0 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
+{ "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
+{ "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
+{ "linux/cec.h", "CEC_ADAP_S_PHYS_ADDR", _IOC_WRITE, 0x6102, 0x02 },
+{ "linux/cec.h", "CEC_DQEVENT", _IOC_READ|_IOC_WRITE, 0x6107, 0x50 },
+{ "linux/cec.h", "CEC_G_MODE", _IOC_READ, 0x6108, 0x04 },
+{ "linux/cec.h", "CEC_RECEIVE", _IOC_READ|_IOC_WRITE, 0x6106, 0x38 },
+{ "linux/cec.h", "CEC_S_MODE", _IOC_WRITE, 0x6109, 0x04 },
+{ "linux/cec.h", "CEC_TRANSMIT", _IOC_READ|_IOC_WRITE, 0x6105, 0x38 },
 { "linux/chio.h", "CHIOEXCHANGE", _IOC_WRITE, 0x6302, 0x1c },
 { "linux/chio.h", "CHIOGELEM", _IOC_WRITE, 0x6310, 0x6c },
 { "linux/chio.h", "CHIOGPARAMS", _IOC_READ, 0x6306, 0x14 },
@@ -969,7 +983,11 @@
 { "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
 { "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
+{ "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
+{ "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
+{ "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
@@ -1418,30 +1436,14 @@
 { "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
 { "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
 { "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
 { "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
 { "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
-{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
 { "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
-{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
-{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
 { "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
-{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
 { "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
@@ -1553,19 +1555,19 @@
 { "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
 { "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
 { "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
-{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_BDESCS", _IOC_READ|_IOC_WRITE, 0x6e87, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPINFO", _IOC_READ, 0x6e82, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_CPSTAT", _IOC_READ, 0x6e83, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUINFO", _IOC_READ, 0x6e84, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_SUSTAT", _IOC_READ, 0x6e85, 0x30 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_GET_VINFO", _IOC_READ|_IOC_WRITE, 0x6e86, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_RESIZE", _IOC_WRITE, 0x6e8b, 0x08 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
+{ "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
@@ -1739,6 +1741,17 @@
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CLOSE", _IOC_WRITE, 0x6304, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CONNECT", _IOC_WRITE, 0x6308, 0x08 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_CREATE", _IOC_READ|_IOC_WRITE, 0x6303, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_LISTEN", _IOC_WRITE, 0x6306, 0x02 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_RECEIVE", _IOC_READ|_IOC_WRITE, 0x630a, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_CHAN_SEND", _IOC_WRITE, 0x6309, 0x10 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST", _IOC_READ|_IOC_WRITE, 0x6302, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_EP_GET_LIST_SIZE", _IOC_READ|_IOC_WRITE, 0x6301, 0x04 },
+{ "linux/rio_cm_cdev.h", "RIO_CM_MPORT_GET_LIST", _IOC_READ|_IOC_WRITE, 0x630b, 0x04 },
 { "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
 { "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
@@ -2244,6 +2257,8 @@
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
+{ "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/videodev2.h", "VIDIOC_CROPCAP", _IOC_READ|_IOC_WRITE, 0x563a, 0x2c },
 { "linux/videodev2.h", "VIDIOC_DBG_G_CHIP_INFO", _IOC_READ|_IOC_WRITE, 0x5666, 0xc8 },
@@ -2348,7 +2363,6 @@
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_SOCKETS_VERSION", _IOC_NONE, 0x07b4, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION", _IOC_NONE, 0x079f, 0x00 },
 { "linux/vmw_vmci_defs.h", "IOCTL_VMCI_VERSION2", _IOC_NONE, 0x07a7, 0x00 },
-{ "linux/vsp1.h", "VIDIOC_VSP1_LUT_CONFIG", _IOC_READ|_IOC_WRITE, 0x56c1, 0x400 },
 { "linux/vt.h", "VT_ACTIVATE", 0, 0x5606, 0 },
 { "linux/vt.h", "VT_DISALLOCATE", 0, 0x5608, 0 },
 { "linux/vt.h", "VT_GETHIFONTMASK", 0, 0x560D, 0 },
@@ -2365,6 +2379,7 @@
 { "linux/vt.h", "VT_UNLOCKSWITCH", 0, 0x560C, 0 },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
+{ "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
@@ -2771,8 +2786,6 @@
 { "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
 { "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
-{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@@ -2813,6 +2826,7 @@
 { "xen/evtchn.h", "IOCTL_EVTCHN_BIND_VIRQ", _IOC_NONE, 0x4500, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
+{ "xen/evtchn.h", "IOCTL_EVTCHN_RESTRICT_DOMID", _IOC_NONE, 0x4506, 0x02 },
 { "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
 { "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h
index d07ff1c..10443d3 100644
--- a/linux/x32/syscallent.h
+++ b/linux/x32/syscallent.h
@@ -204,8 +204,8 @@
 [203] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [204] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [205] = { 1,	0,		SEN(printargs),			"64:set_thread_area"	},
-[206] = { 2,	0,		SEN(printargs),			"64:io_setup"		},
-[207] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[206] = { 2,	TM,		SEN(printargs),			"64:io_setup"		},
+[207] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [208] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [209] = { 3,	0,		SEN(printargs),			"64:io_submit"		},
 [210] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -219,7 +219,7 @@
 [218] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
 [219] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
 [220] = { 4,	TI,		SEN(semtimedop),		"semtimedop"		},
-[221] = { 4,	TD,		SEN(fadvise64_64),		"fadvise64"		},
+[221] = { 4,	TD,		SEN(fadvise64),			"fadvise64"		},
 [222] = { 3,	0,		SEN(printargs),			"64:timer_create"	},
 [223] = { 4,	0,		SEN(timer_settime),		"timer_settime"		},
 [224] = { 2,	0,		SEN(timer_gettime),		"timer_gettime"		},
@@ -363,6 +363,6 @@
 [540] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
 [541] = { 5,	TN,		SEN(setsockopt),		"setsockopt"		},
 [542] = { 5,	TN,		SEN(getsockopt),		"getsockopt"		},
-[543] = { 2,	0,		SEN(io_setup),			"io_setup"		},
+[543] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
 [544] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [545] = { 5,	TD|TF|TP|SE|SI,	SEN(execveat),			"execveat",		},
diff --git a/linux/x86_64/asm_stat.h b/linux/x86_64/asm_stat.h
new file mode 100644
index 0000000..a563f08
--- /dev/null
+++ b/linux/x86_64/asm_stat.h
@@ -0,0 +1,39 @@
+#ifndef STRACE_X86_64_ASM_STAT_H
+#define STRACE_X86_64_ASM_STAT_H
+
+# if defined __x86_64__ && defined __ILP32__
+#  define stat redirect_kernel_stat
+# endif
+
+# include "linux/asm_stat.h"
+
+# if defined __x86_64__ && defined __ILP32__
+#  undef stat
+/*
+ * This is a replacement for x32 <asm/stat.h> which
+ * appears to be wrong in older kernel headers.
+ */
+struct stat {
+	kernel_ulong_t	st_dev;
+	kernel_ulong_t	st_ino;
+	kernel_ulong_t	st_nlink;
+	unsigned int	st_mode;
+	unsigned int	st_uid;
+	unsigned int	st_gid;
+	unsigned int	pad0__;
+	kernel_ulong_t	st_rdev;
+	kernel_long_t	st_size;
+	kernel_long_t	st_blksize;
+	kernel_long_t	st_blocks;
+	kernel_ulong_t	st_atime;
+	kernel_ulong_t	st_atime_nsec;
+	kernel_ulong_t	st_mtime;
+	kernel_ulong_t	st_mtime_nsec;
+	kernel_ulong_t	st_ctime;
+	kernel_ulong_t	st_ctime_nsec;
+	kernel_long_t	pad1__[3];
+};
+
+# endif /* __x86_64__ && __ILP32__ */
+
+#endif /* !STRACE_X86_64_ASM_STAT_H */
diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h
index 265d55f..6e814ea 100644
--- a/linux/x86_64/syscallent.h
+++ b/linux/x86_64/syscallent.h
@@ -204,8 +204,8 @@
 [203] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [204] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
 [205] = { 1,	0,		SEN(set_thread_area),		"set_thread_area"	},
-[206] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[207] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[206] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[207] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [208] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [209] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [210] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h
index ffb7d43..74eb5c3 100644
--- a/linux/xtensa/syscallent.h
+++ b/linux/xtensa/syscallent.h
@@ -229,8 +229,8 @@
 [236] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
 [237] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [238] = { },
-[239] = { 2,	0,		SEN(io_setup),			"io_setup"		},
-[240] = { 1,	0,		SEN(io_destroy),		"io_destroy"		},
+[239] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
+[240] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [241] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [242] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
 [243] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
@@ -288,7 +288,7 @@
 [296] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
 [297] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [298] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[299] = { 4,	TD|TF,		SEN(newfstatat),		"fstatat64"		},
+[299] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
 [300] = { 3,	TD|TF,		SEN(fchmodat),			"fchmodat"		},
 [301] = { 3,	TD|TF,		SEN(faccessat),			"faccessat"		},
 [302 ... 303] = { },
diff --git a/lseek.c b/lseek.c
index 8d05dc1..1846abe 100644
--- a/lseek.c
+++ b/lseek.c
@@ -110,8 +110,8 @@
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
 		tprintf(", %lld, ",
-			(widen_to_ull(tcp->u_arg[1]) << 32)
-			| widen_to_ull(tcp->u_arg[2]));
+			(zero_extend_signed_to_ull(tcp->u_arg[1]) << 32)
+			| zero_extend_signed_to_ull(tcp->u_arg[2]));
 	} else {
 		printnum_int64(tcp, tcp->u_arg[3], "%" PRIu64);
 		tprints(", ");
diff --git a/m4/mpers.m4 b/m4/mpers.m4
index 1fe8a8e..277a384 100644
--- a/m4/mpers.m4
+++ b/m4/mpers.m4
@@ -1,6 +1,6 @@
 #!/usr/bin/m4
 #
-# Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
 # All rights reserved.
 #
@@ -26,8 +26,59 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+AC_DEFUN([st_MPERS_LOAD_AC_CV], [
+
+pushdef([var], [ac_cv_$1])
+pushdef([saved], [saved_ac_cv_$1])
+pushdef([mpers], [ac_cv_]mpers_name[_$1])
+
+AS_IF([test -n "${var+set}"], [saved="${var}"; unset var])
+AS_IF([test -n "${mpers+set}"], [var="${mpers}"])
+
+popdef([mpers])
+popdef([saved])
+popdef([var])
+
+])
+
+AC_DEFUN([st_MPERS_SAVE_AC_CV], [
+
+pushdef([var], [ac_cv_$1])
+pushdef([saved], [saved_ac_cv_$1])
+pushdef([mpers], [ac_cv_]mpers_name[_$1])
+
+AS_IF([test -n "${var+set}"], [mpers="${var}"])
+AS_IF([test -n "${saved+set}"], [var="${saved}"; unset saved])
+
+popdef([mpers])
+popdef([saved])
+popdef([var])
+
+])
+
+AC_DEFUN([st_MPERS_STRUCT_STAT], [
+
+st_MPERS_LOAD_AC_CV([type_struct_stat$1])
+AC_CHECK_TYPE([struct stat$1],
+	      AC_DEFINE([HAVE_]MPERS_NAME[_STRUCT_STAT$1], [1],
+			[Define to 1 if MPERS_NAME has the type 'struct stat$1'.]),,
+[#include <sys/types.h>
+#include <asm/stat.h>])
+st_MPERS_SAVE_AC_CV([type_struct_stat$1])
+
+st_MPERS_LOAD_AC_CV([member_struct_stat$1_st_mtime_nsec])
+AC_CHECK_MEMBER([struct stat$1.st_mtime_nsec],
+		AC_DEFINE([HAVE_]MPERS_NAME[_STRUCT_STAT$1_ST_MTIME_NSEC], [1],
+			  [Define to 1 if 'st_mtime_nsec' is a member of MPERS_NAME 'struct stat$1'.]),,
+[#include <sys/types.h>
+#include <asm/stat.h>])
+st_MPERS_SAVE_AC_CV([member_struct_stat$1_st_mtime_nsec])
+
+])
+
 AC_DEFUN([st_MPERS],[
 
+pushdef([mpers_name], [$1])
 pushdef([MPERS_NAME], translit([$1], [a-z], [A-Z]))
 pushdef([HAVE_MPERS], [HAVE_]MPERS_NAME[_MPERS])
 pushdef([HAVE_RUNTIME], [HAVE_]MPERS_NAME[_RUNTIME])
@@ -73,6 +124,8 @@
 		if test $st_cv_mpers = yes; then
 			AC_DEFINE(HAVE_MPERS, [1],
 				  [Define to 1 if you have CFLAG mpers support])
+			st_MPERS_STRUCT_STAT([])
+			st_MPERS_STRUCT_STAT([64])
 		fi
 	fi
 	CFLAGS="$saved_CFLAGS"
@@ -84,7 +137,7 @@
 	;;
 esac
 
-AM_CONDITIONAL(HAVE_RUNTIME, [test "$st_cv_runtime" = yes])
+AM_CONDITIONAL(HAVE_RUNTIME, [test "$st_cv_mpers$st_cv_runtime" = yesyes])
 AM_CONDITIONAL(HAVE_MPERS, [test "$st_cv_mpers" = yes])
 
 popdef([st_cv_mpers])
@@ -94,5 +147,6 @@
 popdef([HAVE_RUNTIME])
 popdef([HAVE_MPERS])
 popdef([MPERS_NAME])
+popdef([mpers_name])
 
 ])
diff --git a/maint/ioctls_sym.sh b/maint/ioctls_sym.sh
index 20b1730..7a67339 100755
--- a/maint/ioctls_sym.sh
+++ b/maint/ioctls_sym.sh
@@ -190,6 +190,17 @@
 #undef FBIOPUTCMAP
 __EOF__
 			;;
+		*linux/atm_zatm.h)
+			cat <<'__EOF__'
+#include <linux/atm.h>
+#ifndef _LINUX_TIME_H
+# define _LINUX_TIME_H
+#endif
+#ifndef _UAPI_LINUX_TIME_H
+# define _UAPI_LINUX_TIME_H
+#endif
+__EOF__
+			;;
 		*linux/atm?*.h)
 			echo '#include <linux/atm.h>'
 			;;
@@ -297,7 +308,7 @@
 		*video/sstfb.h)
 			echo 'struct fb_info;'
 			;;
-		*xen/gntdev.h)
+		*xen/evtchn.h|*xen/gntdev.h)
 			cat <<'__EOF__'
 typedef uint32_t grant_ref_t;
 typedef uint16_t domid_t;
diff --git a/make-dsc b/make-dsc
index 951c5a9..f0e958a 100755
--- a/make-dsc
+++ b/make-dsc
@@ -8,7 +8,7 @@
 Binary: $(sed '/^Package:[[:space:]]*/!d;s///' debian/control |
 	tr '\n' ' ' | sed 's/ ./,&/g')
 $(sed '/^Architecture:[[:space:]]*/!d;q' debian/control)
-Version: $(sed -n '1s/^[^(]*(\([^)]\+\)).*/\1/p' debian/changelog)
+Version: $(sed -r -n '1s/^[^(]*\(([^)]+)\).*/\1/p' debian/changelog)
 $(sed '/^Maintainer:[[:space:]]*/!d;q' debian/control)
 $(sed '/^Homepage:[[:space:]]*/!d;q' debian/control)
 $(sed '/^Standards-Version:[[:space:]]*/!d;q' debian/control)
diff --git a/mknod.c b/mknod.c
index d78fa07..9b90311 100644
--- a/mknod.c
+++ b/mknod.c
@@ -35,23 +35,17 @@
 
 #include <fcntl.h>
 #include <sys/stat.h>
-
-#ifdef MAJOR_IN_SYSMACROS
-# include <sys/sysmacros.h>
-#endif
-
-#ifdef MAJOR_IN_MKDEV
-# include <sys/mkdev.h>
-#endif
+#include <sys/sysmacros.h>
 
 static void
 decode_mknod(struct tcb *tcp, int offset)
 {
-	int mode = tcp->u_arg[offset + 1];
+	unsigned short mode = tcp->u_arg[offset + 1];
 	unsigned int dev;
 
 	printpath(tcp, tcp->u_arg[offset]);
-	tprintf(", %s", sprintmode(mode));
+	tprints(", ");
+	print_symbolic_mode_t(mode);
 	switch (mode & S_IFMT) {
 	case S_IFCHR:
 	case S_IFBLK:
diff --git a/mpers.awk b/mpers.awk
index 809acf8..2283b96 100644
--- a/mpers.awk
+++ b/mpers.awk
@@ -146,7 +146,7 @@
 			if ("parent" in array[item] && \
 				array_get(item, "parent") == what_idx) {
 				returned = what_is(item)
-				printf("%s", array_get(item, "name"))
+				printf("%s", array[item]["name"])
 				if ("" != returned) {
 					printf("[%s]", returned)
 				}
diff --git a/mpers.sh b/mpers.sh
index 559d1f4..36913e7 100755
--- a/mpers.sh
+++ b/mpers.sh
@@ -40,8 +40,8 @@
 BITS_DIR="mpers${ARCH_FLAG}"
 
 mkdir -p ${BITS_DIR}
-set -- $(sed -n \
-	's/^#[[:space:]]*include[[:space:]]\+DEF_MPERS_TYPE(\([^)[:space:]]*\))$/\1/p' \
+set -- $(sed -r -n \
+	's/^#[[:space:]]*include[[:space:]]+DEF_MPERS_TYPE\(([^)[:space:]]*)\)$/\1/p' \
 		"${PARSER_FILE}")
 for m_type; do
 	f_h="${BITS_DIR}/${m_type}.h"
@@ -53,8 +53,8 @@
 	sed -e '
 		/DEF_MPERS_TYPE('"${m_type}"')$/n
 		/DEF_MPERS_TYPE/d
-		/^[[:space:]]*#[[:space:]]*include[[:space:]]\+\"xlat\//d
-		/^#[[:space:]]*include[[:space:]]\+MPERS_DEFS$/ {s//'"${m_type} ${VAR_NAME}"';/;q}
+		/^[[:space:]]*#[[:space:]]*include[[:space:]]*"xlat\//d
+		/^#[[:space:]]*include[[:space:]][[:space:]]*MPERS_DEFS$/ {s//'"${m_type} ${VAR_NAME}"';/;q}
 		' "${PARSER_FILE}" > "${f_c}"
 	$CPP $CPPFLAGS "${f_c}" > "${f_i}"
 	grep -F -q "${m_type}.h" "${f_i}" ||
@@ -62,12 +62,12 @@
 	sed -i -e '/DEF_MPERS_TYPE/d' "${f_c}"
 	$CC $CFLAGS $ARCH_FLAG "${f_c}" -o "${f_o}"
 	readelf --debug-dump=info "${f_o}" > "${f_d1}"
-	sed -n '
-		/^[[:space:]]*<1>/,/^[[:space:]]*<1><[^>]\+>: Abbrev Number: 0/!d
-		/^[[:space:]]*<[^>]\+><[^>]\+>: Abbrev Number: 0/d
-		s/^[[:space:]]*<[[:xdigit:]]\+>[[:space:]]\+//
-		s/^[[:space:]]*\(\(<[[:xdigit:]]\+>\)\{2\}\):[[:space:]]\+/\1\n/
-		s/[[:space:]]\+$//
+	sed -r -n '
+		/^[[:space:]]*<1>/,/^[[:space:]]*<1><[^>]+>: Abbrev Number: 0/!d
+		/^[[:space:]]*<[^>]*><[^>]*>: Abbrev Number: 0/d
+		s/^[[:space:]]*<[[:xdigit:]]+>[[:space:]]+//
+		s/^[[:space:]]*((<[[:xdigit:]]+>){2}):[[:space:]]+/\1\n/
+		s/[[:space:]]+$//
 		p' "${f_d1}" > "${f_d2}"
 	gawk -v VAR_NAME="$VAR_NAME" -v ARCH_FLAG="${ARCH_FLAG#-}" \
 		-f "$MPERS_AWK" "${f_d2}" > "${f_h}"
diff --git a/mpers_test.sh b/mpers_test.sh
index 72b5f5d..907460b 100755
--- a/mpers_test.sh
+++ b/mpers_test.sh
@@ -121,7 +121,7 @@
 #define MPERS_${mpers_name}_sample_struct ${mpers_name}_sample_struct
 EOF
 
-CFLAGS="$CPPFLAGS -I${srcdir}" \
+CFLAGS="$CPPFLAGS -I${srcdir} -DMPERS_IS_${mpers_name}" \
 CPPFLAGS="$CPPFLAGS -I${srcdir} -DIN_MPERS -DMPERS_IS_${mpers_name}" \
 "$mpers_sh" "-$mpers_name" "$sample"
 cmp "$expected" "$mpers_dir"/sample_struct.h > /dev/null
diff --git a/mpers_type.h b/mpers_type.h
index 4ce569b..ac840ad 100644
--- a/mpers_type.h
+++ b/mpers_type.h
@@ -26,6 +26,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_MPERS_TYPE_H
+#define STRACE_MPERS_TYPE_H
+
 #ifdef IN_MPERS
 # define STRINGIFY(a) #a
 # define DEF_MPERS_TYPE(args) STRINGIFY(args.h)
@@ -45,3 +48,5 @@
 #  define MPERS_DEFS "native_defs.h"
 # endif
 #endif
+
+#endif /* !STRACE_MPERS_TYPE_H */
diff --git a/mq.c b/mq.c
index e12eef7..1df2aa1 100644
--- a/mq.c
+++ b/mq.c
@@ -37,7 +37,9 @@
 	tprint_open_modes(tcp->u_arg[1]);
 	if (tcp->u_arg[1] & O_CREAT) {
 		/* mode */
-		tprintf(", %#lo, ", tcp->u_arg[2]);
+		tprints(", ");
+		print_numeric_umode_t(tcp->u_arg[2]);
+		tprints(", ");
 		printmqattr(tcp, tcp->u_arg[3]);
 	}
 	return RVAL_DECODED;
diff --git a/msghdr.h b/msghdr.h
index 41a07d7..41dfd8c 100644
--- a/msghdr.h
+++ b/msghdr.h
@@ -1,5 +1,5 @@
-#ifndef MSGHDR_H_
-# define MSGHDR_H_
+#ifndef STRACE_MSGHDR_H
+#define STRACE_MSGHDR_H
 
 /* For definitions of struct msghdr and struct mmsghdr. */
 # include <sys/socket.h>
@@ -14,4 +14,4 @@
 struct tcb;
 extern void print_struct_msghdr(struct tcb *, const struct msghdr *, const int *, unsigned long);
 
-#endif /* MSGHDR_H_ */
+#endif /* !STRACE_MSGHDR_H */
diff --git a/native_printer_decls.h b/native_printer_decls.h
index 14456ad..b0b480b 100644
--- a/native_printer_decls.h
+++ b/native_printer_decls.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 extern int block_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
 extern int btrfs_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
 extern int evdev_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
@@ -8,6 +8,8 @@
 extern int fetch_struct_mmsghdr(struct tcb *tcp, const unsigned long addr, void *p);
 extern unsigned int sizeof_struct_mmsghdr(void);
 extern int fetch_struct_msghdr(struct tcb *tcp, const unsigned long addr, void *p);
+extern _Bool fetch_struct_stat(struct tcb *tcp, const unsigned long addr, struct strace_stat *const dst);
+extern _Bool fetch_struct_stat64(struct tcb *tcp, const unsigned long addr, struct strace_stat *const dst);
 extern _Bool fetch_struct_statfs(struct tcb *tcp, const long addr, struct strace_statfs *p);
 extern _Bool fetch_struct_statfs64(struct tcb *tcp, const long addr, const unsigned long size, struct strace_statfs *p);
 extern int hdio_ioctl(struct tcb *tcp, const unsigned int code, const long arg);
diff --git a/native_printer_defs.h b/native_printer_defs.h
index 470ca1f..5d64250 100644
--- a/native_printer_defs.h
+++ b/native_printer_defs.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 .block_ioctl = block_ioctl,
 .btrfs_ioctl = btrfs_ioctl,
 .evdev_ioctl = evdev_ioctl,
@@ -8,6 +8,8 @@
 .fetch_struct_mmsghdr = fetch_struct_mmsghdr,
 .sizeof_struct_mmsghdr = sizeof_struct_mmsghdr,
 .fetch_struct_msghdr = fetch_struct_msghdr,
+.fetch_struct_stat = fetch_struct_stat,
+.fetch_struct_stat64 = fetch_struct_stat64,
 .fetch_struct_statfs = fetch_struct_statfs,
 .fetch_struct_statfs64 = fetch_struct_statfs64,
 .hdio_ioctl = hdio_ioctl,
diff --git a/net.c b/net.c
index 017764c..b039463 100644
--- a/net.c
+++ b/net.c
@@ -702,7 +702,7 @@
 
 	tprintf("{gr_interface=%u, gr_group=", greq.gr_interface);
 	print_sockaddr(tcp, &greq.gr_group, sizeof(greq.gr_group));
-	tprintf("}");
+	tprints("}");
 
 }
 #endif /* MCAST_JOIN_GROUP */
diff --git a/oldstat.c b/oldstat.c
new file mode 100644
index 0000000..a5dd177
--- /dev/null
+++ b/oldstat.c
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
+ * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
+ * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
+ * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+#include "asm_stat.h"
+#include "stat.h"
+
+#ifdef HAVE_STRUCT___OLD_KERNEL_STAT
+
+static void
+print_old_kernel_stat(struct tcb *tcp, const unsigned long addr)
+{
+	struct __old_kernel_stat buf;
+	if (umove_or_printaddr(tcp, addr, &buf))
+		return;
+
+	struct strace_stat st = {
+		.dev = zero_extend_signed_to_ull(buf.st_dev),
+		.ino = zero_extend_signed_to_ull(buf.st_ino),
+		.rdev = zero_extend_signed_to_ull(buf.st_rdev),
+		.size = zero_extend_signed_to_ull(buf.st_size),
+		.mode = zero_extend_signed_to_ull(buf.st_mode),
+		.nlink = zero_extend_signed_to_ull(buf.st_nlink),
+		.uid = zero_extend_signed_to_ull(buf.st_uid),
+		.gid = zero_extend_signed_to_ull(buf.st_gid),
+		.atime = sign_extend_unsigned_to_ll(buf.st_atime),
+		.ctime = sign_extend_unsigned_to_ll(buf.st_ctime),
+		.mtime = sign_extend_unsigned_to_ll(buf.st_mtime)
+	};
+
+	print_struct_stat(tcp, &st);
+}
+
+SYS_FUNC(oldstat)
+{
+	if (entering(tcp)) {
+		printpath(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		print_old_kernel_stat(tcp, tcp->u_arg[1]);
+	}
+	return 0;
+}
+
+SYS_FUNC(oldfstat)
+{
+	if (entering(tcp)) {
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		print_old_kernel_stat(tcp, tcp->u_arg[1]);
+	}
+	return 0;
+}
+
+#endif /* HAVE_STRUCT___OLD_KERNEL_STAT */
diff --git a/open.c b/open.c
index 90dd10f..6128fb0 100644
--- a/open.c
+++ b/open.c
@@ -115,6 +115,13 @@
 	tprints(sprint_open_modes(flags) + sizeof("flags"));
 }
 
+#ifdef O_TMPFILE
+/* The kernel & C libraries often inline O_DIRECTORY. */
+# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
+#else /* !O_TMPFILE */
+# define STRACE_O_TMPFILE 0
+#endif
+
 static int
 decode_open(struct tcb *tcp, int offset)
 {
@@ -122,9 +129,10 @@
 	tprints(", ");
 	/* flags */
 	tprint_open_modes(tcp->u_arg[offset + 1]);
-	if (tcp->u_arg[offset + 1] & O_CREAT) {
+	if (tcp->u_arg[offset + 1] & (O_CREAT | STRACE_O_TMPFILE)) {
 		/* mode */
-		tprintf(", %#lo", tcp->u_arg[offset + 2]);
+		tprints(", ");
+		print_numeric_umode_t(tcp->u_arg[offset + 2]);
 	}
 
 	return RVAL_DECODED | RVAL_FD;
@@ -144,7 +152,8 @@
 SYS_FUNC(creat)
 {
 	printpath(tcp, tcp->u_arg[0]);
-	tprintf(", %#lo", tcp->u_arg[1]);
+	tprints(", ");
+	print_numeric_umode_t(tcp->u_arg[1]);
 
 	return RVAL_DECODED | RVAL_FD;
 }
diff --git a/pathtrace.c b/pathtrace.c
index 74dc3a0..398fb28 100644
--- a/pathtrace.c
+++ b/pathtrace.c
@@ -174,6 +174,7 @@
 	case SEN_faccessat:
 	case SEN_fchmodat:
 	case SEN_fchownat:
+	case SEN_fstatat64:
 	case SEN_futimesat:
 	case SEN_inotify_add_watch:
 	case SEN_mkdirat:
diff --git a/print_struct_stat.c b/print_struct_stat.c
new file mode 100644
index 0000000..7b23ec8
--- /dev/null
+++ b/print_struct_stat.c
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 1999-2003 Ulrich Drepper <drepper@redhat.com>
+ * Copyright (c) 2004 David S. Miller <davem@nuts.davemloft.net>
+ * Copyright (c) 2003-2005 Roland McGrath <roland@redhat.com>
+ * Copyright (c) 2007 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * Copyright (c) 2009 Denys Vlasenko <dvlasenk@redhat.com>
+ * Copyright (c) 2009-2010 Andreas Schwab <schwab@linux-m68k.org>
+ * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
+ * Copyright (c) 2005-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include "stat.h"
+
+void
+print_struct_stat(struct tcb *tcp, const struct strace_stat *const st)
+{
+	tprints("{");
+	if (!abbrev(tcp)) {
+		tprintf("st_dev=makedev(%u, %u), st_ino=%llu, st_mode=",
+			(unsigned int) major(st->dev),
+			(unsigned int) minor(st->dev),
+			st->ino);
+		print_symbolic_mode_t(st->mode);
+		tprintf(", st_nlink=%llu, st_uid=%llu, st_gid=%llu",
+			st->nlink, st->uid, st->gid);
+		tprintf(", st_blksize=%llu", st->blksize);
+		tprintf(", st_blocks=%llu", st->blocks);
+	} else {
+		tprints("st_mode=");
+		print_symbolic_mode_t(st->mode);
+	}
+
+	switch (st->mode & S_IFMT) {
+	case S_IFCHR: case S_IFBLK:
+		tprintf(", st_rdev=makedev(%u, %u)",
+			(unsigned int) major(st->rdev),
+			(unsigned int) minor(st->rdev));
+		break;
+	default:
+		tprintf(", st_size=%llu", st->size);
+		break;
+	}
+
+	if (!abbrev(tcp)) {
+		tprints(", st_atime=");
+		tprints(sprinttime(st->atime));
+		if (st->atime_nsec)
+			tprintf(".%09llu", st->atime_nsec);
+		tprints(", st_mtime=");
+		tprints(sprinttime(st->mtime));
+		if (st->mtime_nsec)
+			tprintf(".%09llu", st->mtime_nsec);
+		tprints(", st_ctime=");
+		tprints(sprinttime(st->ctime));
+		if (st->ctime_nsec)
+			tprintf(".%09llu", st->ctime_nsec);
+	} else {
+		tprints(", ...");
+	}
+	tprints("}");
+}
diff --git a/printers.h b/printers.h
index 07ba17d..5e3c84b 100644
--- a/printers.h
+++ b/printers.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sigaltstack.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 typedef struct {
  int (*block_ioctl)(struct tcb *tcp, const unsigned int code, const long arg);
 #define block_ioctl MPERS_PRINTER_NAME(block_ioctl)
@@ -27,6 +27,12 @@
  int (*fetch_struct_msghdr)(struct tcb *tcp, const unsigned long addr, void *p);
 #define fetch_struct_msghdr MPERS_PRINTER_NAME(fetch_struct_msghdr)
 
+ _Bool (*fetch_struct_stat)(struct tcb *tcp, const unsigned long addr, struct strace_stat *const dst);
+#define fetch_struct_stat MPERS_PRINTER_NAME(fetch_struct_stat)
+
+ _Bool (*fetch_struct_stat64)(struct tcb *tcp, const unsigned long addr, struct strace_stat *const dst);
+#define fetch_struct_stat64 MPERS_PRINTER_NAME(fetch_struct_stat64)
+
  _Bool (*fetch_struct_statfs)(struct tcb *tcp, const long addr, struct strace_statfs *p);
 #define fetch_struct_statfs MPERS_PRINTER_NAME(fetch_struct_statfs)
 
diff --git a/printmode.c b/printmode.c
index ad87507..1babed6 100644
--- a/printmode.c
+++ b/printmode.c
@@ -36,27 +36,38 @@
 
 #include "xlat/modetypes.h"
 
-const char *
-sprintmode(unsigned int mode)
+void
+print_symbolic_mode_t(const unsigned int mode)
 {
-	static char buf[sizeof("S_IFSOCK|S_ISUID|S_ISGID|S_ISVTX|%o")
-			+ sizeof(int)*3
-			+ /*paranoia:*/ 8];
-	const char *s;
+	const char *ifmt;
 
-	if ((mode & S_IFMT) == 0)
-		s = "";
-	else if ((s = xlookup(modetypes, mode & S_IFMT)) == NULL) {
-		sprintf(buf, "%#o", mode);
-		return buf;
+	if (mode & S_IFMT) {
+		ifmt = xlookup(modetypes, mode & S_IFMT);
+		if (!ifmt) {
+			tprintf("%#03o", mode);
+			return;
+		}
+	} else {
+		ifmt = NULL;
 	}
-	s = buf + sprintf(buf, "%s%s%s%s", s,
-		(mode & S_ISUID) ? "|S_ISUID" : "",
-		(mode & S_ISGID) ? "|S_ISGID" : "",
-		(mode & S_ISVTX) ? "|S_ISVTX" : "");
-	mode &= ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX);
-	if (mode)
-		sprintf((char*)s, "|%#o", mode);
-	s = (*buf == '|') ? buf + 1 : buf;
-	return *s ? s : "0";
+
+	tprintf("%s%s%s%s%s%#03o",
+		ifmt ? ifmt : "",
+		ifmt ? "|" : "",
+		(mode & S_ISUID) ? "S_ISUID|" : "",
+		(mode & S_ISGID) ? "S_ISGID|" : "",
+		(mode & S_ISVTX) ? "S_ISVTX|" : "",
+		mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX));
+}
+
+void
+print_numeric_umode_t(const unsigned short mode)
+{
+	tprintf("%#03ho", mode);
+}
+
+void
+print_numeric_long_umask(const unsigned long mode)
+{
+	tprintf("%#03lo", mode);
 }
diff --git a/printrusage.c b/printrusage.c
index acf67eb..548af82 100644
--- a/printrusage.c
+++ b/printrusage.c
@@ -45,27 +45,27 @@
 		return;
 
 	tprintf("{ru_utime={%llu, %llu}, ru_stime={%llu, %llu}, ",
-		widen_to_ull(ru.ru_utime.tv_sec),
-		widen_to_ull(ru.ru_utime.tv_usec),
-		widen_to_ull(ru.ru_stime.tv_sec),
-		widen_to_ull(ru.ru_stime.tv_usec));
+		zero_extend_signed_to_ull(ru.ru_utime.tv_sec),
+		zero_extend_signed_to_ull(ru.ru_utime.tv_usec),
+		zero_extend_signed_to_ull(ru.ru_stime.tv_sec),
+		zero_extend_signed_to_ull(ru.ru_stime.tv_usec));
 	if (abbrev(tcp))
 		tprints("...}");
 	else {
-		tprintf("ru_maxrss=%llu, ", widen_to_ull(ru.ru_maxrss));
-		tprintf("ru_ixrss=%llu, ", widen_to_ull(ru.ru_ixrss));
-		tprintf("ru_idrss=%llu, ", widen_to_ull(ru.ru_idrss));
-		tprintf("ru_isrss=%llu, ", widen_to_ull(ru.ru_isrss));
-		tprintf("ru_minflt=%llu, ", widen_to_ull(ru.ru_minflt));
-		tprintf("ru_majflt=%llu, ", widen_to_ull(ru.ru_majflt));
-		tprintf("ru_nswap=%llu, ", widen_to_ull(ru.ru_nswap));
-		tprintf("ru_inblock=%llu, ", widen_to_ull(ru.ru_inblock));
-		tprintf("ru_oublock=%llu, ", widen_to_ull(ru.ru_oublock));
-		tprintf("ru_msgsnd=%llu, ", widen_to_ull(ru.ru_msgsnd));
-		tprintf("ru_msgrcv=%llu, ", widen_to_ull(ru.ru_msgrcv));
-		tprintf("ru_nsignals=%llu, ", widen_to_ull(ru.ru_nsignals));
-		tprintf("ru_nvcsw=%llu, ", widen_to_ull(ru.ru_nvcsw));
-		tprintf("ru_nivcsw=%llu}", widen_to_ull(ru.ru_nivcsw));
+		tprintf("ru_maxrss=%llu, ", zero_extend_signed_to_ull(ru.ru_maxrss));
+		tprintf("ru_ixrss=%llu, ", zero_extend_signed_to_ull(ru.ru_ixrss));
+		tprintf("ru_idrss=%llu, ", zero_extend_signed_to_ull(ru.ru_idrss));
+		tprintf("ru_isrss=%llu, ", zero_extend_signed_to_ull(ru.ru_isrss));
+		tprintf("ru_minflt=%llu, ", zero_extend_signed_to_ull(ru.ru_minflt));
+		tprintf("ru_majflt=%llu, ", zero_extend_signed_to_ull(ru.ru_majflt));
+		tprintf("ru_nswap=%llu, ", zero_extend_signed_to_ull(ru.ru_nswap));
+		tprintf("ru_inblock=%llu, ", zero_extend_signed_to_ull(ru.ru_inblock));
+		tprintf("ru_oublock=%llu, ", zero_extend_signed_to_ull(ru.ru_oublock));
+		tprintf("ru_msgsnd=%llu, ", zero_extend_signed_to_ull(ru.ru_msgsnd));
+		tprintf("ru_msgrcv=%llu, ", zero_extend_signed_to_ull(ru.ru_msgrcv));
+		tprintf("ru_nsignals=%llu, ", zero_extend_signed_to_ull(ru.ru_nsignals));
+		tprintf("ru_nvcsw=%llu, ", zero_extend_signed_to_ull(ru.ru_nvcsw));
+		tprintf("ru_nivcsw=%llu}", zero_extend_signed_to_ull(ru.ru_nivcsw));
 	}
 }
 
diff --git a/printsiginfo.c b/printsiginfo.c
index 699460f..1f4a825 100644
--- a/printsiginfo.c
+++ b/printsiginfo.c
@@ -172,8 +172,8 @@
 			else
 				printsignal(sip->si_status);
 			tprintf(", si_utime=%llu, si_stime=%llu",
-				widen_to_ull(sip->si_utime),
-				widen_to_ull(sip->si_stime));
+				zero_extend_signed_to_ull(sip->si_utime),
+				zero_extend_signed_to_ull(sip->si_stime));
 			break;
 		case SIGILL: case SIGFPE:
 		case SIGSEGV: case SIGBUS:
diff --git a/printsiginfo.h b/printsiginfo.h
index cb2d99d..7ad7238 100644
--- a/printsiginfo.h
+++ b/printsiginfo.h
@@ -1 +1,6 @@
+#ifndef STRACE_PRINTSIGINFO_H
+#define STRACE_PRINTSIGINFO_H
+
 extern void printsiginfo(const siginfo_t *);
+
+#endif /* !STRACE_PRINTSIGINFO_H */
diff --git a/printstat.h b/printstat.h
deleted file mode 100644
index 5bf745c..0000000
--- a/printstat.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 1999-2003 Ulrich Drepper <drepper@redhat.com>
- * Copyright (c) 2004 David S. Miller <davem@nuts.davemloft.net>
- * Copyright (c) 2003-2005 Roland McGrath <roland@redhat.com>
- * Copyright (c) 2007 Jan Kratochvil <jan.kratochvil@redhat.com>
- * Copyright (c) 2009 Denys Vlasenko <dvlasenk@redhat.com>
- * Copyright (c) 2009-2010 Andreas Schwab <schwab@linux-m68k.org>
- * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
- * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DO_PRINTSTAT
-# define DO_PRINTSTAT do_printstat
-#endif
-
-#ifndef STRUCT_STAT
-# define STRUCT_STAT struct stat
-#endif
-
-#ifndef STAT_MAJOR
-# define STAT_MAJOR(x) major(x)
-#endif
-
-#ifndef STAT_MINOR
-# define STAT_MINOR(x) minor(x)
-#endif
-
-static void
-DO_PRINTSTAT(struct tcb *tcp, const STRUCT_STAT *statbuf)
-{
-	if (!abbrev(tcp)) {
-		tprintf("{st_dev=makedev(%u, %u), st_ino=%llu, st_mode=%s, ",
-			(unsigned int) STAT_MAJOR(statbuf->st_dev),
-			(unsigned int) STAT_MINOR(statbuf->st_dev),
-			widen_to_ull(statbuf->st_ino),
-			sprintmode(statbuf->st_mode));
-		tprintf("st_nlink=%u, st_uid=%u, st_gid=%u, ",
-			(unsigned int) statbuf->st_nlink,
-			(unsigned int) statbuf->st_uid,
-			(unsigned int) statbuf->st_gid);
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-		tprintf("st_blksize=%u, ", (unsigned int) statbuf->st_blksize);
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-		tprintf("st_blocks=%llu, ", widen_to_ull(statbuf->st_blocks));
-#endif
-	} else {
-		tprintf("{st_mode=%s, ", sprintmode(statbuf->st_mode));
-	}
-
-	switch (statbuf->st_mode & S_IFMT) {
-	case S_IFCHR: case S_IFBLK:
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-		tprintf("st_rdev=makedev(%u, %u), ",
-			(unsigned int) STAT_MAJOR(statbuf->st_rdev),
-			(unsigned int) STAT_MINOR(statbuf->st_rdev));
-#else /* !HAVE_STRUCT_STAT_ST_RDEV */
-		tprintf("st_size=makedev(%u, %u), ",
-			(unsigned int) STAT_MAJOR(statbuf->st_size),
-			(unsigned int) STAT_MINOR(statbuf->st_size));
-#endif /* !HAVE_STRUCT_STAT_ST_RDEV */
-		break;
-	default:
-		tprintf("st_size=%llu, ", widen_to_ull(statbuf->st_size));
-		break;
-	}
-
-	if (!abbrev(tcp)) {
-		const bool cast = sizeof(statbuf->st_atime) == sizeof(int);
-
-		tprints("st_atime=");
-		tprints(sprinttime(cast ? (time_t) (int) statbuf->st_atime:
-					  (time_t) statbuf->st_atime));
-#ifdef HAVE_STRUCT_STAT_ST_ATIME_NSEC
-		if (statbuf->st_atime_nsec)
-			tprintf(".%09lu", (unsigned long) statbuf->st_atime_nsec);
-#endif
-		tprints(", st_mtime=");
-		tprints(sprinttime(cast ? (time_t) (int) statbuf->st_mtime:
-					  (time_t) statbuf->st_mtime));
-#ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
-		if (statbuf->st_mtime_nsec)
-			tprintf(".%09lu", (unsigned long) statbuf->st_mtime_nsec);
-#endif
-		tprints(", st_ctime=");
-		tprints(sprinttime(cast ? (time_t) (int) statbuf->st_ctime:
-					  (time_t) statbuf->st_ctime));
-#ifdef HAVE_STRUCT_STAT_ST_CTIME_NSEC
-		if (statbuf->st_ctime_nsec)
-			tprintf(".%09lu", (unsigned long) statbuf->st_ctime_nsec);
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-		tprintf(", st_flags=%u", (unsigned int) statbuf->st_flags);
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_FSTYPE
-		tprintf(", st_fstype=%.*s",
-			(int) sizeof statbuf->st_fstype, statbuf->st_fstype);
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-		tprintf(", st_gen=%u", (unsigned int) statbuf->st_gen);
-#endif
-		tprints("}");
-	} else {
-		tprints("...}");
-	}
-}
-
-#undef STAT_MINOR
-#undef STAT_MAJOR
-#undef STRUCT_STAT
-#undef DO_PRINTSTAT
diff --git a/ptrace.h b/ptrace.h
index 2e7d5e3..ddb46cb 100644
--- a/ptrace.h
+++ b/ptrace.h
@@ -33,6 +33,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef STRACE_PTRACE_H
+#define STRACE_PTRACE_H
+
 #ifdef NEED_PTRACE_PROTOTYPE_WORKAROUND
 # define ptrace xptrace
 # include <sys/ptrace.h>
@@ -64,6 +67,16 @@
 # undef ptrace_peeksiginfo_args
 #endif
 
+#if defined(SPARC) || defined(SPARC64)
+/*
+ * SPARC has a different PTRACE_DETACH value correctly defined in sys/ptrace.h,
+ * but linux/ptrace.h clobbers it with the standard one.  PTRACE_SUNDETACH is
+ * also defined to the correct value by sys/ptrace.h, so use that instead.
+ */
+# undef PTRACE_DETACH
+# define PTRACE_DETACH PTRACE_SUNDETACH
+#endif
+
 #ifndef PTRACE_EVENT_FORK
 # define PTRACE_EVENT_FORK	1
 #endif
@@ -172,3 +185,5 @@
 #if !HAVE_DECL_PTRACE_POKEUSER
 # define PTRACE_POKEUSER PTRACE_POKEUSR
 #endif
+
+#endif /* !STRACE_PTRACE_H */
diff --git a/quota.c b/quota.c
index 0a388b2..7dd01f9 100644
--- a/quota.c
+++ b/quota.c
@@ -49,6 +49,12 @@
 #include "xlat/if_dqinfo_flags.h"
 #include "xlat/if_dqinfo_valid.h"
 
+/*
+ * We add attribute packed due to the fact that the structure is 8-byte aligned
+ * on 64-bit systems and therefore has additional 4 bytes of padding, which
+ * leads to problems when it is used on 32-bit tracee which does not have such
+ * padding.
+ */
 struct if_dqblk
 {
 	uint64_t dqb_bhardlimit;
@@ -60,7 +66,7 @@
 	uint64_t dqb_btime;
 	uint64_t dqb_itime;
 	uint32_t dqb_valid;
-};
+} ATTRIBUTE_PACKED;
 
 struct if_nextdqblk {
 	uint64_t dqb_bhardlimit;
@@ -75,30 +81,6 @@
 	uint32_t dqb_id;
 };
 
-struct v1_dqblk
-{
-	uint32_t dqb_bhardlimit;	/* absolute limit on disk blks alloc */
-	uint32_t dqb_bsoftlimit;	/* preferred limit on disk blks */
-	uint32_t dqb_curblocks;		/* current block count */
-	uint32_t dqb_ihardlimit;	/* maximum # allocated inodes */
-	uint32_t dqb_isoftlimit;	/* preferred inode limit */
-	uint32_t dqb_curinodes;		/* current # allocated inodes */
-	time_t  dqb_btime;		/* time limit for excessive disk use */
-	time_t  dqb_itime;		/* time limit for excessive files */
-};
-
-struct v2_dqblk
-{
-	unsigned int dqb_ihardlimit;
-	unsigned int dqb_isoftlimit;
-	unsigned int dqb_curinodes;
-	unsigned int dqb_bhardlimit;
-	unsigned int dqb_bsoftlimit;
-	uint64_t dqb_curspace;
-	time_t  dqb_btime;
-	time_t  dqb_itime;
-};
-
 struct xfs_dqblk
 {
 	int8_t  d_version;		/* version of this structure */
@@ -133,41 +115,6 @@
 	uint32_t dqi_valid;
 };
 
-struct v2_dqinfo
-{
-	unsigned int dqi_bgrace;
-	unsigned int dqi_igrace;
-	unsigned int dqi_flags;
-	unsigned int dqi_blocks;
-	unsigned int dqi_free_blk;
-	unsigned int dqi_free_entry;
-};
-
-struct v1_dqstats
-{
-	uint32_t lookups;
-	uint32_t drops;
-	uint32_t reads;
-	uint32_t writes;
-	uint32_t cache_hits;
-	uint32_t allocated_dquots;
-	uint32_t free_dquots;
-	uint32_t syncs;
-};
-
-struct v2_dqstats
-{
-	uint32_t lookups;
-	uint32_t drops;
-	uint32_t reads;
-	uint32_t writes;
-	uint32_t cache_hits;
-	uint32_t allocated_dquots;
-	uint32_t free_dquots;
-	uint32_t syncs;
-	uint32_t version;
-};
-
 typedef struct fs_qfilestat
 {
 	uint64_t qfs_ino;	/* inode number */
@@ -211,297 +158,300 @@
 	uint64_t qs_pad2[8];
 };
 
+#define PRINT_FIELD_D(prefix, where, field)	\
+	tprintf("%s%s=%lld", (prefix), #field,	\
+		sign_extend_unsigned_to_ll((where).field))
+
+#define PRINT_FIELD_U(prefix, where, field)	\
+	tprintf("%s%s=%llu", (prefix), #field,	\
+		zero_extend_signed_to_ull((where).field))
+
+#define PRINT_FIELD_X(prefix, where, field)	\
+	tprintf("%s%s=%#llx", (prefix), #field,	\
+		zero_extend_signed_to_ull((where).field))
+
 static int
-decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned long data)
+decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 {
 	switch (cmd) {
-		case Q_GETQUOTA:
-			if (entering(tcp))
-				return 0;
-		case Q_SETQUOTA:
-		{
-			struct if_dqblk dq;
+	case Q_QUOTAOFF:
+	case Q_SYNC:
+	case Q_XQUOTASYNC:
+		break;
+	case Q_QUOTAON:
+		tprints(", ");
+		printxval(quota_formats, id, "QFMT_VFS_???");
+		tprints(", ");
+		printpath(tcp, data);
+		break;
+	case Q_GETQUOTA:
+		if (entering(tcp)) {
+			printuid(", ", id);
+			tprints(", ");
 
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{bhardlimit=%" PRIu64 ", ", dq.dqb_bhardlimit);
-			tprintf("bsoftlimit=%" PRIu64 ", ", dq.dqb_bsoftlimit);
-			tprintf("curspace=%" PRIu64 ", ", dq.dqb_curspace);
-			tprintf("ihardlimit=%" PRIu64 ", ", dq.dqb_ihardlimit);
-			tprintf("isoftlimit=%" PRIu64 ", ", dq.dqb_isoftlimit);
-			tprintf("curinodes=%" PRIu64 ", ", dq.dqb_curinodes);
-			if (!abbrev(tcp)) {
-				tprintf("btime=%" PRIu64 ", ", dq.dqb_btime);
-				tprintf("itime=%" PRIu64 ", ", dq.dqb_itime);
-				tprints("valid=");
-				printflags(if_dqblk_valid,
-					   dq.dqb_valid, "QIF_???");
-				tprints("}");
-			} else
-				tprints("...}");
-			break;
+			return 0;
 		}
-		case Q_GETNEXTQUOTA:
-		{
-			struct if_nextdqblk dq;
 
-			if (entering(tcp))
-				return 0;
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{bhardlimit=%" PRIu64 ", ", dq.dqb_bhardlimit);
-			tprintf("bsoftlimit=%" PRIu64 ", ", dq.dqb_bsoftlimit);
-			tprintf("curspace=%" PRIu64 ", ", dq.dqb_curspace);
-			tprintf("ihardlimit=%" PRIu64 ", ", dq.dqb_ihardlimit);
-			tprintf("isoftlimit=%" PRIu64 ", ", dq.dqb_isoftlimit);
-			tprintf("curinodes=%" PRIu64 ", ", dq.dqb_curinodes);
-			if (!abbrev(tcp)) {
-				tprintf("btime=%" PRIu64 ", ", dq.dqb_btime);
-				tprintf("itime=%" PRIu64 ", ", dq.dqb_itime);
-				tprints("valid=");
-				printflags(if_dqblk_valid,
-					   dq.dqb_valid, "QIF_???");
-				tprintf(", id=%u}", dq.dqb_id);
-			} else
-				tprintf("id=%u, ...}", dq.dqb_id);
-			break;
+		/* Fall-through */
+	case Q_SETQUOTA:
+	{
+		struct if_dqblk dq;
+
+		if (entering(tcp)) {
+			printuid(", ", id);
+			tprints(", ");
 		}
-		case Q_V1_GETQUOTA:
-			if (entering(tcp))
-				return 0;
-		case Q_V1_SETQUOTA:
-		{
-			struct v1_dqblk dq;
 
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{bhardlimit=%u, ", dq.dqb_bhardlimit);
-			tprintf("bsoftlimit=%u, ", dq.dqb_bsoftlimit);
-			tprintf("curblocks=%u, ", dq.dqb_curblocks);
-			tprintf("ihardlimit=%u, ", dq.dqb_ihardlimit);
-			tprintf("isoftlimit=%u, ", dq.dqb_isoftlimit);
-			tprintf("curinodes=%u, ", dq.dqb_curinodes);
-			tprintf("btime=%lu, ", (long) dq.dqb_btime);
-			tprintf("itime=%lu}", (long) dq.dqb_itime);
+		if (umove_or_printaddr(tcp, data, &dq))
 			break;
+		PRINT_FIELD_U("{", dq, dqb_bhardlimit);
+		PRINT_FIELD_U(", ", dq, dqb_bsoftlimit);
+		PRINT_FIELD_U(", ", dq, dqb_curspace);
+		PRINT_FIELD_U(", ", dq, dqb_ihardlimit);
+		PRINT_FIELD_U(", ", dq, dqb_isoftlimit);
+		PRINT_FIELD_U(", ", dq, dqb_curinodes);
+		if (!abbrev(tcp)) {
+			PRINT_FIELD_U(", ", dq, dqb_btime);
+			PRINT_FIELD_U(", ", dq, dqb_itime);
+			tprints(", dqb_valid=");
+			printflags(if_dqblk_valid,
+				   dq.dqb_valid, "QIF_???");
+		} else {
+			tprints(", ...");
 		}
-		case Q_V2_GETQUOTA:
-			if (entering(tcp))
-				return 0;
-		case Q_V2_SETQUOTA:
-		{
-			struct v2_dqblk dq;
+		tprints("}");
+		break;
+	}
+	case Q_GETNEXTQUOTA:
+	{
+		struct if_nextdqblk dq;
 
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{ihardlimit=%u, ", dq.dqb_ihardlimit);
-			tprintf("isoftlimit=%u, ", dq.dqb_isoftlimit);
-			tprintf("curinodes=%u, ", dq.dqb_curinodes);
-			tprintf("bhardlimit=%u, ", dq.dqb_bhardlimit);
-			tprintf("bsoftlimit=%u, ", dq.dqb_bsoftlimit);
-			tprintf("curspace=%" PRIu64 ", ", dq.dqb_curspace);
-			tprintf("btime=%lu, ", (long) dq.dqb_btime);
-			tprintf("itime=%lu}", (long) dq.dqb_itime);
+		if (entering(tcp)) {
+			printuid(", ", id);
+			tprints(", ");
+
+			return 0;
+		}
+
+		if (umove_or_printaddr(tcp, data, &dq))
 			break;
+		PRINT_FIELD_U("{", dq, dqb_bhardlimit);
+		PRINT_FIELD_U(", ", dq, dqb_bsoftlimit);
+		PRINT_FIELD_U(", ", dq, dqb_curspace);
+		PRINT_FIELD_U(", ", dq, dqb_ihardlimit);
+		PRINT_FIELD_U(", ", dq, dqb_isoftlimit);
+		PRINT_FIELD_U(", ", dq, dqb_curinodes);
+		if (!abbrev(tcp)) {
+			PRINT_FIELD_U(", ", dq, dqb_btime);
+			PRINT_FIELD_U(", ", dq, dqb_itime);
+			tprints(", dqb_valid=");
+			printflags(if_dqblk_valid,
+				   dq.dqb_valid, "QIF_???");
+			PRINT_FIELD_U(", ", dq, dqb_id);
+		} else {
+			PRINT_FIELD_U(", ", dq, dqb_id);
+			tprints(", ...");
 		}
-		case Q_XGETQUOTA:
-		case Q_XGETNEXTQUOTA:
-			if (entering(tcp))
-				return 0;
-		case Q_XSETQLIM:
-		{
-			struct xfs_dqblk dq;
+		tprints("}");
+		break;
+	}
+	case Q_XGETQUOTA:
+	case Q_XGETNEXTQUOTA:
+		if (entering(tcp)) {
+			printuid(", ", id);
+			tprints(", ");
 
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{version=%d, ", dq.d_version);
-			tprints("flags=");
-			printflags(xfs_dqblk_flags,
-				   (uint8_t) dq.d_flags, "XFS_???_QUOTA");
-			tprintf(", fieldmask=%#x, ", dq.d_fieldmask);
-			tprintf("id=%u, ", dq.d_id);
-			tprintf("blk_hardlimit=%" PRIu64 ", ", dq.d_blk_hardlimit);
-			tprintf("blk_softlimit=%" PRIu64 ", ", dq.d_blk_softlimit);
-			tprintf("ino_hardlimit=%" PRIu64 ", ", dq.d_ino_hardlimit);
-			tprintf("ino_softlimit=%" PRIu64 ", ", dq.d_ino_softlimit);
-			tprintf("bcount=%" PRIu64 ", ", dq.d_bcount);
-			tprintf("icount=%" PRIu64 ", ", dq.d_icount);
-			if (!abbrev(tcp)) {
-				tprintf("itimer=%d, ", dq.d_itimer);
-				tprintf("btimer=%d, ", dq.d_btimer);
-				tprintf("iwarns=%u, ", dq.d_iwarns);
-				tprintf("bwarns=%u, ", dq.d_bwarns);
-				tprintf("rtbcount=%" PRIu64 ", ", dq.d_rtbcount);
-				tprintf("rtbtimer=%d, ", dq.d_rtbtimer);
-				tprintf("rtbwarns=%u}", dq.d_rtbwarns);
-			} else
-				tprints("...}");
+			return 0;
+		}
+
+		/* Fall-through */
+	case Q_XSETQLIM:
+	{
+		struct xfs_dqblk dq;
+
+		if (entering(tcp)) {
+			printuid(", ", id);
+			tprints(", ");
+		}
+
+		if (umove_or_printaddr(tcp, data, &dq))
 			break;
+		PRINT_FIELD_D("{", dq, d_version);
+		tprints(", d_flags=");
+		printflags(xfs_dqblk_flags,
+			   (uint8_t) dq.d_flags, "XFS_???_QUOTA");
+		PRINT_FIELD_X(", ", dq, d_fieldmask);
+		PRINT_FIELD_U(", ", dq, d_id);
+		PRINT_FIELD_U(", ", dq, d_blk_hardlimit);
+		PRINT_FIELD_U(", ", dq, d_blk_softlimit);
+		PRINT_FIELD_U(", ", dq, d_ino_hardlimit);
+		PRINT_FIELD_U(", ", dq, d_ino_softlimit);
+		PRINT_FIELD_U(", ", dq, d_bcount);
+		PRINT_FIELD_U(", ", dq, d_icount);
+		if (!abbrev(tcp)) {
+			PRINT_FIELD_D(", ", dq, d_itimer);
+			PRINT_FIELD_D(", ", dq, d_btimer);
+			PRINT_FIELD_U(", ", dq, d_iwarns);
+			PRINT_FIELD_U(", ", dq, d_bwarns);
+			PRINT_FIELD_U(", ", dq, d_rtb_hardlimit);
+			PRINT_FIELD_U(", ", dq, d_rtb_softlimit);
+			PRINT_FIELD_U(", ", dq, d_rtbcount);
+			PRINT_FIELD_D(", ", dq, d_rtbtimer);
+			PRINT_FIELD_U(", ", dq, d_rtbwarns);
+		} else {
+			tprints(", ...");
 		}
-		case Q_GETFMT:
-		{
-			uint32_t fmt;
+		tprints("}");
+		break;
+	}
+	case Q_GETFMT:
+	{
+		uint32_t fmt;
 
-			if (entering(tcp))
-				return 0;
-			if (umove_or_printaddr(tcp, data, &fmt))
-				break;
-			tprints("[");
-			printxval(quota_formats, fmt, "QFMT_VFS_???");
-			tprints("]");
+		if (entering(tcp)) {
+			tprints(", ");
+
+			return 0;
+		}
+
+		if (umove_or_printaddr(tcp, data, &fmt))
 			break;
-		}
-		case Q_GETINFO:
-			if (entering(tcp))
-				return 0;
-		case Q_SETINFO:
-		{
-			struct if_dqinfo dq;
+		tprints("[");
+		printxval(quota_formats, fmt, "QFMT_VFS_???");
+		tprints("]");
+		break;
+	}
+	case Q_GETINFO:
+		if (entering(tcp)) {
+			tprints(", ");
 
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{bgrace=%" PRIu64 ", ", dq.dqi_bgrace);
-			tprintf("igrace=%" PRIu64 ", ", dq.dqi_igrace);
-			tprints("flags=");
-			printflags(if_dqinfo_flags, dq.dqi_flags, "DQF_???");
-			tprints(", valid=");
-			printflags(if_dqinfo_valid, dq.dqi_valid, "IIF_???");
-			tprints("}");
+			return 0;
+		}
+
+		/* Fall-through */
+	case Q_SETINFO:
+	{
+		struct if_dqinfo dq;
+
+		if (entering(tcp))
+			tprints(", ");
+
+		if (umove_or_printaddr(tcp, data, &dq))
 			break;
-		}
-		case Q_V2_GETINFO:
-			if (entering(tcp))
-				return 0;
-		case Q_V2_SETINFO:
-		{
-			struct v2_dqinfo dq;
+		PRINT_FIELD_U("{", dq, dqi_bgrace);
+		PRINT_FIELD_U(", ", dq, dqi_igrace);
+		tprints(", dqi_flags=");
+		printflags(if_dqinfo_flags, dq.dqi_flags, "DQF_???");
+		tprints(", dqi_valid=");
+		printflags(if_dqinfo_valid, dq.dqi_valid, "IIF_???");
+		tprints("}");
+		break;
+	}
+	case Q_XGETQSTAT:
+	{
+		struct xfs_dqstats dq;
 
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{bgrace=%u, ", dq.dqi_bgrace);
-			tprintf("igrace=%u, ", dq.dqi_igrace);
-			tprints("flags=");
-			printflags(if_dqinfo_flags, dq.dqi_flags, "DQF_???");
-			tprintf(", blocks=%u, ", dq.dqi_blocks);
-			tprintf("free_blk=%u, ", dq.dqi_free_blk);
-			tprintf("free_entry=%u}", dq.dqi_free_entry);
+		if (entering(tcp)) {
+			tprints(", ");
+
+			return 0;
+		}
+
+		if (umove_or_printaddr(tcp, data, &dq))
 			break;
-		}
-		case Q_V1_GETSTATS:
-		{
-			struct v1_dqstats dq;
-
-			if (entering(tcp))
-				return 0;
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{lookups=%u, ", dq.lookups);
-			tprintf("drops=%u, ", dq.drops);
-			tprintf("reads=%u, ", dq.reads);
-			tprintf("writes=%u, ", dq.writes);
-			tprintf("cache_hits=%u, ", dq.cache_hits);
-			tprintf("allocated_dquots=%u, ", dq.allocated_dquots);
-			tprintf("free_dquots=%u, ", dq.free_dquots);
-			tprintf("syncs=%u}", dq.syncs);
-			break;
-		}
-		case Q_V2_GETSTATS:
-		{
-			struct v2_dqstats dq;
-
-			if (entering(tcp))
-				return 0;
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{lookups=%u, ", dq.lookups);
-			tprintf("drops=%u, ", dq.drops);
-			tprintf("reads=%u, ", dq.reads);
-			tprintf("writes=%u, ", dq.writes);
-			tprintf("cache_hits=%u, ", dq.cache_hits);
-			tprintf("allocated_dquots=%u, ", dq.allocated_dquots);
-			tprintf("free_dquots=%u, ", dq.free_dquots);
-			tprintf("syncs=%u, ", dq.syncs);
-			tprintf("version=%u}", dq.version);
-			break;
-		}
-		case Q_XGETQSTAT:
-		{
-			struct xfs_dqstats dq;
-
-			if (entering(tcp))
-				return 0;
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{version=%d, ", dq.qs_version);
-			if (abbrev(tcp)) {
-				tprints("...}");
-				break;
-			}
-			tprints("flags=");
+		PRINT_FIELD_D("{", dq, qs_version);
+		if (!abbrev(tcp)) {
+			tprints(", qs_flags=");
 			printflags(xfs_quota_flags,
 				   dq.qs_flags, "XFS_QUOTA_???");
-			tprintf(", incoredqs=%u, ", dq.qs_incoredqs);
-			tprintf("u_ino=%" PRIu64 ", ", dq.qs_uquota.qfs_ino);
-			tprintf("u_nblks=%" PRIu64 ", ", dq.qs_uquota.qfs_nblks);
-			tprintf("u_nextents=%u, ", dq.qs_uquota.qfs_nextents);
-			tprintf("g_ino=%" PRIu64 ", ", dq.qs_gquota.qfs_ino);
-			tprintf("g_nblks=%" PRIu64 ", ", dq.qs_gquota.qfs_nblks);
-			tprintf("g_nextents=%u, ", dq.qs_gquota.qfs_nextents);
-			tprintf("btimelimit=%d, ", dq.qs_btimelimit);
-			tprintf("itimelimit=%d, ", dq.qs_itimelimit);
-			tprintf("rtbtimelimit=%d, ", dq.qs_rtbtimelimit);
-			tprintf("bwarnlimit=%u, ", dq.qs_bwarnlimit);
-			tprintf("iwarnlimit=%u}", dq.qs_iwarnlimit);
-			break;
+			PRINT_FIELD_U(", ", dq, qs_incoredqs);
+			PRINT_FIELD_U(", qs_uquota={", dq.qs_uquota, qfs_ino);
+			PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nblks);
+			PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nextents);
+			PRINT_FIELD_U("}, qs_gquota={", dq.qs_gquota, qfs_ino);
+			PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nblks);
+			PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nextents);
+			PRINT_FIELD_D("}, ", dq, qs_btimelimit);
+			PRINT_FIELD_D(", ", dq, qs_itimelimit);
+			PRINT_FIELD_D(", ", dq, qs_rtbtimelimit);
+			PRINT_FIELD_U(", ", dq, qs_bwarnlimit);
+			PRINT_FIELD_U(", ", dq, qs_iwarnlimit);
+		} else {
+			tprints(", ...");
 		}
-		case Q_XGETQSTATV:
-		{
-			struct fs_quota_statv dq;
+		tprints("}");
+		break;
+	}
+	case Q_XGETQSTATV:
+	{
+		struct fs_quota_statv dq;
 
-			if (entering(tcp))
-				return 0;
-			if (umove_or_printaddr(tcp, data, &dq))
-				break;
-			tprintf("{version=%d, ", dq.qs_version);
-			if (abbrev(tcp)) {
-				tprints("...}");
-				break;
-			}
-			tprints("flags=");
+		if (entering(tcp)) {
+			tprints(", ");
+
+			return 0;
+		}
+
+		if (umove_or_printaddr(tcp, data, &dq))
+			break;
+		PRINT_FIELD_D("{", dq, qs_version);
+		if (!abbrev(tcp)) {
+			tprints(", qs_flags=");
 			printflags(xfs_quota_flags,
 				   dq.qs_flags, "XFS_QUOTA_???");
-			tprintf(", incoredqs=%u, ", dq.qs_incoredqs);
-			tprintf("u_ino=%" PRIu64 ", ", dq.qs_uquota.qfs_ino);
-			tprintf("u_nblks=%" PRIu64 ", ", dq.qs_uquota.qfs_nblks);
-			tprintf("u_nextents=%u, ", dq.qs_uquota.qfs_nextents);
-			tprintf("g_ino=%" PRIu64 ", ", dq.qs_gquota.qfs_ino);
-			tprintf("g_nblks=%" PRIu64 ", ", dq.qs_gquota.qfs_nblks);
-			tprintf("g_nextents=%u, ", dq.qs_gquota.qfs_nextents);
-			tprintf("p_ino=%" PRIu64 ", ", dq.qs_pquota.qfs_ino);
-			tprintf("p_nblks=%" PRIu64 ", ", dq.qs_pquota.qfs_nblks);
-			tprintf("p_nextents=%u, ", dq.qs_pquota.qfs_nextents);
-			tprintf("btimelimit=%d, ", dq.qs_btimelimit);
-			tprintf("itimelimit=%d, ", dq.qs_itimelimit);
-			tprintf("rtbtimelimit=%d, ", dq.qs_rtbtimelimit);
-			tprintf("bwarnlimit=%u, ", dq.qs_bwarnlimit);
-			tprintf("iwarnlimit=%u}", dq.qs_iwarnlimit);
-			break;
+			PRINT_FIELD_U(", ", dq, qs_incoredqs);
+			PRINT_FIELD_U(", qs_uquota={", dq.qs_uquota, qfs_ino);
+			PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nblks);
+			PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nextents);
+			PRINT_FIELD_U("}, qs_gquota={", dq.qs_gquota, qfs_ino);
+			PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nblks);
+			PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nextents);
+			PRINT_FIELD_U("}, qs_pquota={", dq.qs_pquota, qfs_ino);
+			PRINT_FIELD_U(", ", dq.qs_pquota, qfs_nblks);
+			PRINT_FIELD_U(", ", dq.qs_pquota, qfs_nextents);
+			PRINT_FIELD_D("}, ", dq, qs_btimelimit);
+			PRINT_FIELD_D(", ", dq, qs_itimelimit);
+			PRINT_FIELD_D(", ", dq, qs_rtbtimelimit);
+			PRINT_FIELD_U(", ", dq, qs_bwarnlimit);
+			PRINT_FIELD_U(", ", dq, qs_iwarnlimit);
+		} else {
+			tprints(", ...");
 		}
-		case Q_XQUOTAON:
-		case Q_XQUOTAOFF:
-		{
-			uint32_t flag;
+		tprints("}");
+		break;
+	}
+	case Q_XQUOTAON:
+	case Q_XQUOTAOFF:
+	{
+		uint32_t flag;
 
-			if (umove_or_printaddr(tcp, data, &flag))
-				break;
-			tprints("[");
-			printflags(xfs_quota_flags, flag, "XFS_QUOTA_???");
-			tprints("]");
+		tprints(", ");
+
+		if (umove_or_printaddr(tcp, data, &flag))
 			break;
-		}
-		default:
-			printaddr(data);
+		tprints("[");
+		printflags(xfs_quota_flags, flag, "XFS_QUOTA_???");
+		tprints("]");
+		break;
+	}
+	case Q_XQUOTARM:
+	{
+		uint32_t flag;
+
+		tprints(", ");
+
+		if (umove_or_printaddr(tcp, data, &flag))
 			break;
+		tprints("[");
+		printflags(xfs_dqblk_flags, flag, "XFS_???_QUOTA");
+		tprints("]");
+		break;
+	}
+	default:
+		printuid(", ", id);
+		tprints(", ");
+		printaddr(data);
+		break;
 	}
 	return RVAL_DECODED;
 }
@@ -520,21 +470,12 @@
 	uint32_t id = tcp->u_arg[2];
 
 	if (entering(tcp)) {
+		tprints("QCMD(");
 		printxval(quotacmds, cmd, "Q_???");
-		tprints("|");
+		tprints(", ");
 		printxval(quotatypes, type, "???QUOTA");
-		tprints(", ");
+		tprints("), ");
 		printpath(tcp, tcp->u_arg[1]);
-		tprints(", ");
-		switch (cmd) {
-			case Q_QUOTAON:
-			case Q_V1_QUOTAON:
-				printxval(quota_formats, id, "QFMT_VFS_???");
-				tprints(", ");
-				printpath(tcp, tcp->u_arg[3]);
-				return RVAL_DECODED;
-		}
-		tprintf("%u, ", id);
 	}
-	return decode_cmd_data(tcp, cmd, tcp->u_arg[3]);
+	return decode_cmd_data(tcp, id, cmd, tcp->u_arg[3]);
 }
diff --git a/readahead.c b/readahead.c
index 3f8e4ce..f2b9c80 100644
--- a/readahead.c
+++ b/readahead.c
@@ -6,7 +6,7 @@
 
 	printfd(tcp, tcp->u_arg[0]);
 	argn = printllval(tcp, ", %lld", 1);
-	tprintf(", %ld", tcp->u_arg[argn]);
+	tprintf(", %lu", tcp->u_arg[argn]);
 
 	return RVAL_DECODED;
 }
diff --git a/regs.h b/regs.h
index 9b0746c..d89581d 100644
--- a/regs.h
+++ b/regs.h
@@ -1,3 +1,6 @@
+#ifndef STRACE_REGS_H
+#define STRACE_REGS_H
+
 #include <sys/user.h>
 
 #ifdef HAVE_SYS_REG_H
@@ -5,3 +8,5 @@
 #endif
 
 #include "arch_regs.h"
+
+#endif /* !STRACE_REGS_H */
diff --git a/scsi.c b/scsi.c
index dc51dd5..979c342 100644
--- a/scsi.c
+++ b/scsi.c
@@ -275,7 +275,7 @@
 			else
 				print_sg_io_res(tcp, iid, arg);
 		}
-		tprintf("}");
+		tprints("}");
 		return RVAL_DECODED | 1;
 	}
 }
diff --git a/seccomp_fprog.h b/seccomp_fprog.h
index 6b1f77f..f483727 100644
--- a/seccomp_fprog.h
+++ b/seccomp_fprog.h
@@ -1,4 +1,9 @@
+#ifndef STRACE_SECCOMP_FPROG_H
+#define STRACE_SECCOMP_FPROG_H
+
 struct seccomp_fprog {
 	unsigned short len;
 	unsigned long filter;
 };
+
+#endif /* !STRACE_SECCOMP_FPROG_H */
diff --git a/sen.h b/sen.h
index bf6cdfd..f300344 100644
--- a/sen.h
+++ b/sen.h
@@ -1,5 +1,6 @@
 enum {
 SEN_printargs = 0,
+SEN_ARCH_mmap,
 SEN_accept,
 SEN_accept4,
 SEN_access,
@@ -8,7 +9,6 @@
 SEN_adjtimex,
 SEN_afs_syscall,
 SEN_alarm,
-SEN_ARCH_mmap,
 SEN_arch_prctl,
 SEN_bdflush,
 SEN_bind,
@@ -73,6 +73,7 @@
 SEN_fsetxattr,
 SEN_fstat,
 SEN_fstat64,
+SEN_fstatat64,
 SEN_fstatfs,
 SEN_fstatfs64,
 SEN_fsync,
@@ -81,6 +82,10 @@
 SEN_ftruncate64,
 SEN_futex,
 SEN_futimesat,
+SEN_get_kernel_syms,
+SEN_get_mempolicy,
+SEN_get_robust_list,
+SEN_get_thread_area,
 SEN_getcpu,
 SEN_getcwd,
 SEN_getdents,
@@ -96,8 +101,6 @@
 SEN_getgroups16,
 SEN_gethostname,
 SEN_getitimer,
-SEN_get_kernel_syms,
-SEN_get_mempolicy,
 SEN_getpagesize,
 SEN_getpeername,
 SEN_getpgid,
@@ -112,12 +115,10 @@
 SEN_getresuid,
 SEN_getresuid16,
 SEN_getrlimit,
-SEN_get_robust_list,
 SEN_getrusage,
 SEN_getsid,
 SEN_getsockname,
 SEN_getsockopt,
-SEN_get_thread_area,
 SEN_gettid,
 SEN_gettimeofday,
 SEN_getuid,
@@ -134,15 +135,15 @@
 SEN_inotify_init1,
 SEN_inotify_rm_watch,
 SEN_io_cancel,
-SEN_ioctl,
 SEN_io_destroy,
 SEN_io_getevents,
+SEN_io_setup,
+SEN_io_submit,
+SEN_ioctl,
 SEN_ioperm,
 SEN_iopl,
 SEN_ioprio_get,
 SEN_ioprio_set,
-SEN_io_setup,
-SEN_io_submit,
 SEN_ipc,
 SEN_kcmp,
 SEN_kexec_file_load,
@@ -200,17 +201,17 @@
 SEN_newfstatat,
 SEN_nfsservctl,
 SEN_nice,
-SEN_oldfstat,
-SEN_oldlstat,
 SEN_old_mmap,
 SEN_old_mmap_pgoff,
+SEN_oldfstat,
+SEN_oldlstat,
 SEN_oldolduname,
 SEN_oldselect,
 SEN_oldstat,
 SEN_olduname,
 SEN_open,
-SEN_openat,
 SEN_open_by_handle_at,
+SEN_openat,
 SEN_or1k_atomic,
 SEN_osf_fstatfs,
 SEN_osf_getitimer,
@@ -274,11 +275,11 @@
 SEN_rt_sigsuspend,
 SEN_rt_sigtimedwait,
 SEN_rt_tgsigqueueinfo,
+SEN_sched_get_priority_max,
+SEN_sched_get_priority_min,
 SEN_sched_getaffinity,
 SEN_sched_getattr,
 SEN_sched_getparam,
-SEN_sched_get_priority_max,
-SEN_sched_get_priority_min,
 SEN_sched_getscheduler,
 SEN_sched_rr_get_interval,
 SEN_sched_setaffinity,
@@ -299,6 +300,10 @@
 SEN_sendmmsg,
 SEN_sendmsg,
 SEN_sendto,
+SEN_set_mempolicy,
+SEN_set_robust_list,
+SEN_set_thread_area,
+SEN_set_tid_address,
 SEN_setdomainname,
 SEN_setfsgid,
 SEN_setfsgid16,
@@ -310,7 +315,6 @@
 SEN_setgroups16,
 SEN_sethostname,
 SEN_setitimer,
-SEN_set_mempolicy,
 SEN_setns,
 SEN_setpgid,
 SEN_setpgrp,
@@ -324,11 +328,8 @@
 SEN_setreuid,
 SEN_setreuid16,
 SEN_setrlimit,
-SEN_set_robust_list,
 SEN_setsid,
 SEN_setsockopt,
-SEN_set_thread_area,
-SEN_set_tid_address,
 SEN_settimeofday,
 SEN_setuid,
 SEN_setuid16,
@@ -381,13 +382,13 @@
 SEN_time,
 SEN_timer_create,
 SEN_timer_delete,
+SEN_timer_getoverrun,
+SEN_timer_gettime,
+SEN_timer_settime,
 SEN_timerfd,
 SEN_timerfd_create,
 SEN_timerfd_gettime,
 SEN_timerfd_settime,
-SEN_timer_getoverrun,
-SEN_timer_gettime,
-SEN_timer_settime,
 SEN_times,
 SEN_truncate,
 SEN_truncate64,
diff --git a/sigevent.h b/sigevent.h
index 6b3bacf..04c9079 100644
--- a/sigevent.h
+++ b/sigevent.h
@@ -25,8 +25,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef SIGEVENT_H_
-#define SIGEVENT_H_
+#ifndef STRACE_SIGEVENT_H
+#define STRACE_SIGEVENT_H
 
 typedef struct {
 	union {
@@ -44,4 +44,4 @@
 	} sigev_un;
 } struct_sigevent;
 
-#endif
+#endif /* !STRACE_SIGEVENT_H */
diff --git a/signal.c b/signal.c
index cb200bf..b483ce0 100644
--- a/signal.c
+++ b/signal.c
@@ -70,6 +70,7 @@
 # endif
 #endif
 
+#include "xlat/sa_handler_values.h"
 #include "xlat/sigact_flags.h"
 #include "xlat/sigprocmaskcmds.h"
 
@@ -113,6 +114,23 @@
  * Use (NSIG / 8) as a size instead.
  */
 
+static const char *
+get_sa_handler_str(unsigned long handler)
+{
+	return xlookup(sa_handler_values, handler);
+}
+
+static void
+print_sa_handler(unsigned long handler)
+{
+	const char *sa_handler_str = get_sa_handler_str(handler);
+
+	if (sa_handler_str)
+		tprints(sa_handler_str);
+	else
+		printaddr(handler);
+}
+
 const char *
 signame(const int sig)
 {
@@ -258,8 +276,6 @@
 	return 0;
 }
 
-#ifdef HAVE_SIGACTION
-
 struct old_sigaction {
 	/* sa_handler may be a libc #define, need to use other name: */
 #ifdef MIPS
@@ -320,14 +336,7 @@
 	 * compiler from generating code to manipulate
 	 * __sa_handler we cast the function pointers to long. */
 	tprints("{");
-	if ((long)sa.__sa_handler == (long)SIG_ERR)
-		tprints("SIG_ERR");
-	else if ((long)sa.__sa_handler == (long)SIG_DFL)
-		tprints("SIG_DFL");
-	else if ((long)sa.__sa_handler == (long)SIG_IGN)
-		tprints("SIG_IGN");
-	else
-		printaddr((long) sa.__sa_handler);
+	print_sa_handler((unsigned long) sa.__sa_handler);
 	tprints(", ");
 #ifdef MIPS
 	tprintsigmask_addr("", sa.sa_mask);
@@ -360,39 +369,15 @@
 	if (entering(tcp)) {
 		printsignal(tcp->u_arg[0]);
 		tprints(", ");
-		switch (tcp->u_arg[1]) {
-		case (long) SIG_ERR:
-			tprints("SIG_ERR");
-			break;
-		case (long) SIG_DFL:
-			tprints("SIG_DFL");
-			break;
-		case (long) SIG_IGN:
-			tprints("SIG_IGN");
-			break;
-		default:
-			printaddr(tcp->u_arg[1]);
-		}
+		print_sa_handler(tcp->u_arg[1]);
 		return 0;
-	}
-	else if (!syserror(tcp)) {
-		switch (tcp->u_rval) {
-		case (long) SIG_ERR:
-			tcp->auxstr = "SIG_ERR"; break;
-		case (long) SIG_DFL:
-			tcp->auxstr = "SIG_DFL"; break;
-		case (long) SIG_IGN:
-			tcp->auxstr = "SIG_IGN"; break;
-		default:
-			tcp->auxstr = NULL;
-		}
+	} else if (!syserror(tcp)) {
+		tcp->auxstr = get_sa_handler_str(tcp->u_rval);
 		return RVAL_HEX | RVAL_STR;
 	}
 	return 0;
 }
 
-#endif /* HAVE_SIGACTION */
-
 SYS_FUNC(siggetmask)
 {
 	if (exiting(tcp)) {
@@ -408,8 +393,6 @@
 	return RVAL_DECODED;
 }
 
-#ifdef HAVE_SIGACTION
-
 /* "Old" sigprocmask, which operates with word-sized signal masks */
 SYS_FUNC(sigprocmask)
 {
@@ -447,8 +430,6 @@
 	return 0;
 }
 
-#endif /* HAVE_SIGACTION */
-
 SYS_FUNC(kill)
 {
 	tprintf("%d, %s",
@@ -545,7 +526,7 @@
 		 * For little-endian, it's the same.
 		 * For big-endian, we swap 32-bit words.
 		 */
-		sa.sa_mask[0] = sa32.sa_mask[0] + ((long)(sa32.sa_mask[1]) << 32);
+		sa.sa_mask[0] = LONG_LONG(sa32.sa_mask[0], sa32.sa_mask[1]);
 	} else
 #endif
 	if (umove_or_printaddr(tcp, addr, &sa))
@@ -560,14 +541,7 @@
 	 * compiler from generating code to manipulate
 	 * __sa_handler we cast the function pointers to long. */
 	tprints("{");
-	if ((long)sa.__sa_handler == (long)SIG_ERR)
-		tprints("SIG_ERR");
-	else if ((long)sa.__sa_handler == (long)SIG_DFL)
-		tprints("SIG_DFL");
-	else if ((long)sa.__sa_handler == (long)SIG_IGN)
-		tprints("SIG_IGN");
-	else
-		printaddr((unsigned long) sa.__sa_handler);
+	print_sa_handler((unsigned long) sa.__sa_handler);
 	tprints(", ");
 	/*
 	 * Sigset size is in tcp->u_arg[4] (SPARC)
diff --git a/tests/signalfd.c b/stat.c
similarity index 63%
copy from tests/signalfd.c
copy to stat.c
index 7b1d6ce..2143819 100644
--- a/tests/signalfd.c
+++ b/stat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,30 +25,50 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "tests.h"
-#include <fcntl.h>
+#include "defs.h"
+#include "stat.h"
 
-#if defined HAVE_SYS_SIGNALFD_H && defined HAVE_SIGNALFD && defined O_CLOEXEC
-
-# include <signal.h>
-# include <unistd.h>
-# include <sys/signalfd.h>
-
-int
-main(void)
+static void
+decode_struct_stat(struct tcb *tcp, const unsigned long addr)
 {
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-	(void) close(0);
-	if (signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK))
-		perror_msg_and_skip("signalfd");
+	struct strace_stat st;
+
+	if (fetch_struct_stat(tcp, addr, &st))
+		print_struct_stat(tcp, &st);
+}
+
+SYS_FUNC(stat)
+{
+	if (entering(tcp)) {
+		printpath(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		decode_struct_stat(tcp, tcp->u_arg[1]);
+	}
 	return 0;
 }
 
-#else
+SYS_FUNC(fstat)
+{
+	if (entering(tcp)) {
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		decode_struct_stat(tcp, tcp->u_arg[1]);
+	}
+	return 0;
+}
 
-SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
-
-#endif
+SYS_FUNC(newfstatat)
+{
+	if (entering(tcp)) {
+		print_dirfd(tcp, tcp->u_arg[0]);
+		printpath(tcp, tcp->u_arg[1]);
+		tprints(", ");
+	} else {
+		decode_struct_stat(tcp, tcp->u_arg[2]);
+		tprints(", ");
+		printflags(at_flags, tcp->u_arg[3], "AT_???");
+	}
+	return 0;
+}
diff --git a/tests/signalfd.c b/stat.h
similarity index 70%
rename from tests/signalfd.c
rename to stat.h
index 7b1d6ce..092d268 100644
--- a/tests/signalfd.c
+++ b/stat.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,30 +25,26 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "tests.h"
-#include <fcntl.h>
+#ifndef STRACE_STAT_H
+#define STRACE_STAT_H
 
-#if defined HAVE_SYS_SIGNALFD_H && defined HAVE_SIGNALFD && defined O_CLOEXEC
+struct strace_stat {
+	unsigned long long	dev;
+	unsigned long long	ino;
+	unsigned long long	rdev;
+	unsigned long long	size;
+	unsigned long long	blocks;
+	unsigned long long	blksize;
+	unsigned long long	mode;
+	unsigned long long	nlink;
+	unsigned long long	uid;
+	unsigned long long	gid;
+	long long		atime;
+	long long		ctime;
+	long long		mtime;
+	unsigned long long	atime_nsec;
+	unsigned long long	ctime_nsec;
+	unsigned long long	mtime_nsec;
+};
 
-# include <signal.h>
-# include <unistd.h>
-# include <sys/signalfd.h>
-
-int
-main(void)
-{
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-	(void) close(0);
-	if (signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK))
-		perror_msg_and_skip("signalfd");
-	return 0;
-}
-
-#else
-
-SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
-
-#endif
+#endif /* !STRACE_STAT_H */
diff --git a/tests/signalfd.c b/stat64.c
similarity index 62%
copy from tests/signalfd.c
copy to stat64.c
index 7b1d6ce..3c816cd 100644
--- a/tests/signalfd.c
+++ b/stat64.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,30 +25,50 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "tests.h"
-#include <fcntl.h>
+#include "defs.h"
+#include "stat.h"
 
-#if defined HAVE_SYS_SIGNALFD_H && defined HAVE_SIGNALFD && defined O_CLOEXEC
-
-# include <signal.h>
-# include <unistd.h>
-# include <sys/signalfd.h>
-
-int
-main(void)
+static void
+decode_struct_stat64(struct tcb *tcp, const unsigned long addr)
 {
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-	(void) close(0);
-	if (signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK))
-		perror_msg_and_skip("signalfd");
+	struct strace_stat st;
+
+	if (fetch_struct_stat64(tcp, addr, &st))
+		print_struct_stat(tcp, &st);
+}
+
+SYS_FUNC(stat64)
+{
+	if (entering(tcp)) {
+		printpath(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		decode_struct_stat64(tcp, tcp->u_arg[1]);
+	}
 	return 0;
 }
 
-#else
+SYS_FUNC(fstat64)
+{
+	if (entering(tcp)) {
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
+	} else {
+		decode_struct_stat64(tcp, tcp->u_arg[1]);
+	}
+	return 0;
+}
 
-SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
-
-#endif
+SYS_FUNC(fstatat64)
+{
+	if (entering(tcp)) {
+		print_dirfd(tcp, tcp->u_arg[0]);
+		printpath(tcp, tcp->u_arg[1]);
+		tprints(", ");
+	} else {
+		decode_struct_stat64(tcp, tcp->u_arg[2]);
+		tprints(", ");
+		printflags(at_flags, tcp->u_arg[3], "AT_???");
+	}
+	return 0;
+}
diff --git a/statfs.h b/statfs.h
index 9341687..c986424 100644
--- a/statfs.h
+++ b/statfs.h
@@ -42,4 +42,4 @@
 	unsigned long long f_flags;
 };
 
-#endif /* STRACE_STATFS_H */
+#endif /* !STRACE_STATFS_H */
diff --git a/strace.1 b/strace.1
index b7dddc0..6cc17c5 100644
--- a/strace.1
+++ b/strace.1
@@ -601,10 +601,13 @@
 is used.
 .LP
 When using
-.BR \-p ,
+.B \-p
+without a
+.IR command ,
 the exit status of
 .B strace
-is zero unless there was an unexpected error in doing the tracing.
+is zero unless no processes has been attached or there was an unexpected error
+in doing the tracing.
 .SH "SETUID INSTALLATION"
 If
 .B strace
diff --git a/strace.c b/strace.c
index ab4867f..ffb6bae 100644
--- a/strace.c
+++ b/strace.c
@@ -138,7 +138,7 @@
 /* Are we "strace PROG" and need to hide everything until execve? */
 bool hide_log_until_execve = 0;
 
-static int exit_code = 0;
+static int exit_code;
 static int strace_child = 0;
 static int strace_tracer_pid = 0;
 
@@ -360,22 +360,26 @@
 	error_msg_and_help("invalid -%c argument: '%s'", opt, arg);
 }
 
-#if USE_SEIZE
+static const char *ptrace_attach_cmd;
+
 static int
 ptrace_attach_or_seize(int pid)
 {
+#if USE_SEIZE
 	int r;
 	if (!use_seize)
-		return ptrace(PTRACE_ATTACH, pid, 0L, 0L);
+		return ptrace_attach_cmd = "PTRACE_ATTACH",
+		       ptrace(PTRACE_ATTACH, pid, 0L, 0L);
 	r = ptrace(PTRACE_SEIZE, pid, 0L, (unsigned long) ptrace_setoptions);
 	if (r)
-		return r;
+		return ptrace_attach_cmd = "PTRACE_SEIZE", r;
 	r = ptrace(PTRACE_INTERRUPT, pid, 0L, 0L);
-	return r;
-}
+	return ptrace_attach_cmd = "PTRACE_INTERRUPT", r;
 #else
-# define ptrace_attach_or_seize(pid) ptrace(PTRACE_ATTACH, (pid), 0, 0)
+		return ptrace_attach_cmd = "PTRACE_ATTACH",
+		       ptrace(PTRACE_ATTACH, pid, 0L, 0L);
 #endif
+}
 
 /*
  * Used when we want to unblock stopped traced process.
@@ -401,10 +405,8 @@
 		msg = "CONT";
 	if (op == PTRACE_DETACH)
 		msg = "DETACH";
-#ifdef PTRACE_LISTEN
 	if (op == PTRACE_LISTEN)
 		msg = "LISTEN";
-#endif
 	/*
 	 * Why curcol != 0? Otherwise sometimes we get this:
 	 *
@@ -832,10 +834,6 @@
 	 * before detaching.  Arghh.  We go through hoops
 	 * to make a clean break of things.
 	 */
-#if defined(SPARC)
-# undef PTRACE_DETACH
-# define PTRACE_DETACH PTRACE_SUNDETACH
-#endif
 
 	if (!(tcp->flags & TCB_ATTACHED))
 		goto drop;
@@ -1011,6 +1009,69 @@
 }
 
 static void
+attach_tcb(struct tcb *const tcp)
+{
+	if (ptrace_attach_or_seize(tcp->pid) < 0) {
+		perror_msg("attach: ptrace(%s, %d)",
+			   ptrace_attach_cmd, tcp->pid);
+		droptcb(tcp);
+		return;
+	}
+
+	tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
+	newoutf(tcp);
+	if (debug_flag)
+		error_msg("attach to pid %d (main) succeeded", tcp->pid);
+
+	char procdir[sizeof("/proc/%d/task") + sizeof(int) * 3];
+	DIR *dir;
+	unsigned int ntid = 0, nerr = 0;
+
+	if (followfork && tcp->pid != strace_child &&
+	    sprintf(procdir, "/proc/%d/task", tcp->pid) > 0 &&
+	    (dir = opendir(procdir)) != NULL) {
+		struct_dirent *de;
+
+		while ((de = read_dir(dir)) != NULL) {
+			if (de->d_fileno == 0)
+				continue;
+
+			int tid = string_to_uint(de->d_name);
+			if (tid <= 0 || tid == tcp->pid)
+				continue;
+
+			++ntid;
+			if (ptrace_attach_or_seize(tid) < 0) {
+				++nerr;
+				if (debug_flag)
+					perror_msg("attach: ptrace(%s, %d)",
+						   ptrace_attach_cmd, tid);
+				continue;
+			}
+			if (debug_flag)
+				error_msg("attach to pid %d succeeded", tid);
+
+			struct tcb *tid_tcp = alloctcb(tid);
+			tid_tcp->flags |= TCB_ATTACHED | TCB_STARTUP |
+					  post_attach_sigstop;
+			newoutf(tid_tcp);
+		}
+
+		closedir(dir);
+	}
+
+	if (!qflag) {
+		if (ntid > nerr)
+			error_msg("Process %u attached"
+				  " with %u threads",
+				  tcp->pid, ntid - nerr + 1);
+		else
+			error_msg("Process %u attached",
+				  tcp->pid);
+	}
+}
+
+static void
 startup_attach(void)
 {
 	pid_t parent_pid = strace_tracer_pid;
@@ -1058,89 +1119,19 @@
 
 		if (tcp->pid == parent_pid || tcp->pid == strace_tracer_pid) {
 			errno = EPERM;
-			perror_msg("attach: %d", tcp->pid);
+			perror_msg("attach: pid %d", tcp->pid);
 			droptcb(tcp);
 			continue;
 		}
-		if (followfork && tcp->pid != strace_child) {
-			char procdir[sizeof("/proc/%d/task") + sizeof(int) * 3];
-			DIR *dir;
 
-			sprintf(procdir, "/proc/%d/task", tcp->pid);
-			dir = opendir(procdir);
-			if (dir != NULL) {
-				unsigned int ntid = 0, nerr = 0;
-				struct_dirent *de;
+		attach_tcb(tcp);
 
-				while ((de = read_dir(dir)) != NULL) {
-					struct tcb *cur_tcp;
-					int tid;
-
-					if (de->d_fileno == 0)
-						continue;
-					/* we trust /proc filesystem */
-					tid = atoi(de->d_name);
-					if (tid <= 0)
-						continue;
-					++ntid;
-					if (ptrace_attach_or_seize(tid) < 0) {
-						++nerr;
-						if (debug_flag)
-							error_msg("attach to pid %d failed", tid);
-						continue;
-					}
-					if (debug_flag)
-						error_msg("attach to pid %d succeeded", tid);
-					cur_tcp = tcp;
-					if (tid != tcp->pid)
-						cur_tcp = alloctcb(tid);
-					cur_tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
-					newoutf(cur_tcp);
-				}
-				closedir(dir);
-				if (interactive) {
-					sigprocmask(SIG_SETMASK, &empty_set, NULL);
-					if (interrupted)
-						goto ret;
-					sigprocmask(SIG_BLOCK, &blocked_set, NULL);
-				}
-				ntid -= nerr;
-				if (ntid == 0) {
-					perror_msg("attach: ptrace(PTRACE_ATTACH, ...)");
-					droptcb(tcp);
-					continue;
-				}
-				if (!qflag) {
-					if (ntid > 1)
-						error_msg("Process %u attached"
-							  " with %u threads",
-							  tcp->pid, ntid);
-					else
-						error_msg("Process %u attached",
-							  tcp->pid);
-				}
-				if (!(tcp->flags & TCB_ATTACHED)) {
-					/* -p PID, we failed to attach to PID itself
-					 * but did attach to some of its sibling threads.
-					 * Drop PID's tcp.
-					 */
-					droptcb(tcp);
-				}
-				continue;
-			} /* if (opendir worked) */
-		} /* if (-f) */
-		if (ptrace_attach_or_seize(tcp->pid) < 0) {
-			perror_msg("attach: ptrace(PTRACE_ATTACH, ...)");
-			droptcb(tcp);
-			continue;
+		if (interactive) {
+			sigprocmask(SIG_SETMASK, &empty_set, NULL);
+			if (interrupted)
+				goto ret;
+			sigprocmask(SIG_BLOCK, &blocked_set, NULL);
 		}
-		tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
-		newoutf(tcp);
-		if (debug_flag)
-			error_msg("attach to pid %d (main) succeeded", tcp->pid);
-
-		if (!qflag)
-			error_msg("Process %u attached", tcp->pid);
 	} /* for each tcbtab[] */
 
 	if (daemonized_tracer) {
@@ -1224,6 +1215,12 @@
 	perror_msg_and_die("exec");
 }
 
+/*
+ * Open a dummy descriptor for use as a placeholder.
+ * The descriptor is O_RDONLY with FD_CLOEXEC flag set.
+ * A read attempt from such descriptor ends with EOF,
+ * a write attempt is rejected with EBADF.
+ */
 static int
 open_dummy_desc(void)
 {
@@ -1232,9 +1229,56 @@
 	if (pipe(fds))
 		perror_msg_and_die("pipe");
 	close(fds[1]);
+	set_cloexec_flag(fds[0]);
 	return fds[0];
 }
 
+/* placeholder fds status for stdin and stdout */
+static bool fd_is_placeholder[2];
+
+/*
+ * Ensure that all standard file descriptors are open by opening placeholder
+ * file descriptors for those standard file descriptors that are not open.
+ *
+ * The information which descriptors have been made open is saved
+ * in fd_is_placeholder for later use.
+ */
+static void
+ensure_standard_fds_opened(void)
+{
+	int fd;
+
+	while ((fd = open_dummy_desc()) <= 2) {
+		if (fd == 2)
+			break;
+		fd_is_placeholder[fd] = true;
+	}
+
+	if (fd > 2)
+		close(fd);
+}
+
+/*
+ * Redirect stdin and stdout unless they have been opened earlier
+ * by ensure_standard_fds_opened as placeholders.
+ */
+static void
+redirect_standard_fds(void)
+{
+	int i;
+
+	/*
+	 * It might be a good idea to redirect stderr as well,
+	 * but we sometimes need to print error messages.
+	 */
+	for (i = 0; i <= 1; ++i) {
+		if (!fd_is_placeholder[i]) {
+			close(i);
+			open_dummy_desc();
+		}
+	}
+}
+
 static void
 startup_child(char **argv)
 {
@@ -1363,7 +1407,8 @@
 
 			if (ptrace_attach_or_seize(pid)) {
 				kill_save_errno(pid, SIGKILL);
-				perror_msg_and_die("Can't attach to %d", pid);
+				perror_msg_and_die("attach: ptrace(%s, %d)",
+						   ptrace_attach_cmd, pid);
 			}
 			if (!NOMMU_SYSTEM)
 				kill(pid, SIGCONT);
@@ -1411,18 +1456,11 @@
 	 * the pipe is still open, it has a reader. Thus, "head" will not get its
 	 * SIGPIPE at once, on the first write.
 	 *
-	 * Preventing it by closing strace's stdin/out.
+	 * Preventing it by redirecting strace's stdin/out.
 	 * (Don't leave fds 0 and 1 closed, this is bad practice: future opens
 	 * will reuse them, unexpectedly making a newly opened object "stdin").
 	 */
-	close(0);
-	open_dummy_desc(); /* opens to fd#0 */
-	dup2(0, 1);
-#if 0
-	/* A good idea too, but we sometimes need to print error messages */
-	if (shared_log != stderr)
-		dup2(0, 2);
-#endif
+	redirect_standard_fds();
 }
 
 #if USE_SEIZE
@@ -1755,24 +1793,18 @@
 		error_msg("ptrace_setoptions = %#x", ptrace_setoptions);
 	test_ptrace_seize();
 
-	if (fcntl(0, F_GETFD) == -1 || fcntl(1, F_GETFD) == -1) {
-		/*
-		 * Something weird with our stdin and/or stdout -
-		 * for example, may be not open? In this case,
-		 * ensure that none of the future opens uses them.
-		 *
-		 * This was seen in the wild when /proc/sys/kernel/core_pattern
-		 * was set to "|/bin/strace -o/tmp/LOG PROG":
-		 * kernel runs coredump helper with fd#0 open but fd#1 closed (!),
-		 * therefore LOG gets opened to fd#1, and fd#1 is closed by
-		 * "don't hold up stdin/out open" code soon after.
-		 */
-		int fd = open_dummy_desc();
-		while (fd >= 0 && fd < 2)
-			fd = dup(fd);
-		if (fd > 2)
-			close(fd);
-	}
+	/*
+	 * Is something weird with our stdin and/or stdout -
+	 * for example, may they be not open? In this case,
+	 * ensure that none of the future opens uses them.
+	 *
+	 * This was seen in the wild when /proc/sys/kernel/core_pattern
+	 * was set to "|/bin/strace -o/tmp/LOG PROG":
+	 * kernel runs coredump helper with fd#0 open but fd#1 closed (!),
+	 * therefore LOG gets opened to fd#1, and fd#1 is closed by
+	 * "don't hold up stdin/out open" code soon after.
+	 */
+	ensure_standard_fds_opened();
 
 	/* Check if they want to redirect the output. */
 	if (outfname) {
@@ -2389,6 +2421,8 @@
 {
 	init(argc, argv);
 
+	exit_code = !nprocs;
+
 	while (trace())
 		;
 
diff --git a/sys_func.h b/sys_func.h
index a40a293..614a187 100644
--- a/sys_func.h
+++ b/sys_func.h
@@ -58,13 +58,13 @@
 extern SYS_FUNC(fsetxattr);
 extern SYS_FUNC(fstat);
 extern SYS_FUNC(fstat64);
+extern SYS_FUNC(fstatat64);
 extern SYS_FUNC(fstatfs);
 extern SYS_FUNC(fstatfs64);
 extern SYS_FUNC(ftruncate);
 extern SYS_FUNC(ftruncate64);
 extern SYS_FUNC(futex);
 extern SYS_FUNC(futimesat);
-extern SYS_FUNC(fxstat);
 extern SYS_FUNC(getcpu);
 extern SYS_FUNC(getcwd);
 extern SYS_FUNC(getdents);
@@ -308,4 +308,3 @@
 extern SYS_FUNC(waitpid);
 extern SYS_FUNC(write);
 extern SYS_FUNC(writev);
-extern SYS_FUNC(xstat);
diff --git a/syscall.c b/syscall.c
index 6af0dec..0894733 100644
--- a/syscall.c
+++ b/syscall.c
@@ -419,12 +419,44 @@
 }
 
 static int
+lookup_class(const char *s)
+{
+	if (strcmp(s, "file") == 0)
+		return TRACE_FILE;
+	if (strcmp(s, "ipc") == 0)
+		return TRACE_IPC;
+	if (strcmp(s, "network") == 0)
+		return TRACE_NETWORK;
+	if (strcmp(s, "process") == 0)
+		return TRACE_PROCESS;
+	if (strcmp(s, "signal") == 0)
+		return TRACE_SIGNAL;
+	if (strcmp(s, "desc") == 0)
+		return TRACE_DESC;
+	if (strcmp(s, "memory") == 0)
+		return TRACE_MEMORY;
+	return -1;
+}
+
+static int
 qual_syscall(const char *s, const unsigned int bitflag, const int not)
 {
-	int p;
+	unsigned int p;
 	unsigned int i;
+	int n;
 	int rc = -1;
 
+	if ((n = lookup_class(s)) >= 0) {
+		for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+			for (i = 0; i < nsyscall_vec[p]; ++i) {
+				if ((sysent_vec[p][i].sys_flags & n) == n) {
+					qualify_one(i, bitflag, not, p);
+				}
+			}
+		}
+		return 0;
+	}
+
 	if (*s >= '0' && *s <= '9') {
 		i = string_to_uint(s);
 		if (i >= MAX_NSYSCALLS)
@@ -483,26 +515,6 @@
 	return -1;
 }
 
-static int
-lookup_class(const char *s)
-{
-	if (strcmp(s, "file") == 0)
-		return TRACE_FILE;
-	if (strcmp(s, "ipc") == 0)
-		return TRACE_IPC;
-	if (strcmp(s, "network") == 0)
-		return TRACE_NETWORK;
-	if (strcmp(s, "process") == 0)
-		return TRACE_PROCESS;
-	if (strcmp(s, "signal") == 0)
-		return TRACE_SIGNAL;
-	if (strcmp(s, "desc") == 0)
-		return TRACE_DESC;
-	if (strcmp(s, "memory") == 0)
-		return TRACE_MEMORY;
-	return -1;
-}
-
 void
 qualify(const char *s)
 {
@@ -544,16 +556,6 @@
 	}
 	copy = xstrdup(s);
 	for (p = strtok(copy, ","); p; p = strtok(NULL, ",")) {
-		int n;
-		if (opt->bitflag == QUAL_TRACE && (n = lookup_class(p)) > 0) {
-			unsigned pers;
-			for (pers = 0; pers < SUPPORTED_PERSONALITIES; pers++) {
-				for (i = 0; i < nsyscall_vec[pers]; i++)
-					if (sysent_vec[pers][i].sys_flags & n)
-						qualify_one(i, opt->bitflag, not, pers);
-			}
-			continue;
-		}
 		if (opt->qualify(p, opt->bitflag, not)) {
 			error_msg_and_die("invalid %s '%s'",
 				opt->argument_name, p);
@@ -643,11 +645,18 @@
 		sizeof(tcp->u_arg) - sizeof(tcp->u_arg[0]));
 	/*
 	 * Fetching the last arg of 7-arg syscalls (fadvise64_64
-	 * and sync_file_range) would require additional code,
+	 * and sync_file_range) requires additional code,
 	 * see linux/mips/get_syscall_args.c
 	 */
+	if (tcp->s_ent->nargs == MAX_ARGS) {
+		if (umoven(tcp,
+			   mips_REG_SP + MAX_ARGS * sizeof(tcp->u_arg[0]),
+			   sizeof(tcp->u_arg[0]),
+			   &tcp->u_arg[MAX_ARGS - 1]) < 0)
+		tcp->u_arg[MAX_ARGS - 1] = 0;
+	}
 }
-#endif
+#endif /* LINUX_MIPSO32 */
 
 static void
 dumpio(struct tcb *tcp)
@@ -753,11 +762,20 @@
 	if (SCNO_IS_VALID(scno))
 		return sysent[scno].sys_name;
 	else {
-		sprintf(buf, "syscall_%lu", shuffle_scno(scno));
+		sprintf(buf, "syscall_%lu", scno);
 		return buf;
 	}
 }
 
+const char *
+err_name(unsigned long err)
+{
+	if ((err < nerrnos) && errnoent[err])
+		return errnoent[err];
+
+	return NULL;
+}
+
 static long get_regs_error;
 
 void
@@ -787,10 +805,7 @@
 
 	if (res != 1) {
 		printleader(tcp);
-		if (scno_good != 1)
-			tprints("????" /* anti-trigraph gap */ "(");
-		else
-			tprintf("%s(", syscall_name(tcp->scno));
+		tprintf("%s(", scno_good == 1 ? tcp->s_ent->sys_name : "????");
 		/*
 		 * " <unavailable>" will be added later by the code which
 		 * detects ptrace errors.
@@ -849,7 +864,7 @@
 #endif
 
 	printleader(tcp);
-	tprintf("%s(", syscall_name(tcp->scno));
+	tprintf("%s(", tcp->s_ent->sys_name);
 	if ((tcp->qual_flg & QUAL_RAW) && SEN_exit != tcp->s_ent->sen)
 		res = printargs(tcp);
 	else
@@ -871,7 +886,8 @@
 	int sys_res;
 	struct timeval tv;
 	int res;
-	long u_error;
+	unsigned long u_error;
+	const char *u_error_str;
 
 	/* Measure the exit time as early as possible to avoid errors. */
 	if (Tflag || cflag)
@@ -910,7 +926,7 @@
 	if ((followfork < 2 && printing_tcp != tcp) || (tcp->flags & TCB_REPRINT)) {
 		tcp->flags &= ~TCB_REPRINT;
 		printleader(tcp);
-		tprintf("<... %s resumed> ", syscall_name(tcp->scno));
+		tprintf("<... %s resumed> ", tcp->s_ent->sys_name);
 	}
 	printing_tcp = tcp;
 
@@ -953,7 +969,7 @@
 	u_error = tcp->u_error;
 	if (tcp->qual_flg & QUAL_RAW) {
 		if (u_error)
-			tprintf("= -1 (errno %ld)", u_error);
+			tprintf("= -1 (errno %lu)", u_error);
 		else
 			tprintf("= %#lx", tcp->u_rval);
 	}
@@ -1013,13 +1029,13 @@
 			tprints("= ? ERESTART_RESTARTBLOCK (Interrupted by signal)");
 			break;
 		default:
-			if ((unsigned long) u_error < nerrnos
-			    && errnoent[u_error])
-				tprintf("= -1 %s (%s)", errnoent[u_error],
-					strerror(u_error));
+			u_error_str = err_name(u_error);
+			if (u_error_str)
+				tprintf("= -1 %s (%s)",
+					u_error_str, strerror(u_error));
 			else
-				tprintf("= -1 ERRNO_%lu (%s)", u_error,
-					strerror(u_error));
+				tprintf("= -1 %lu (%s)",
+					u_error, strerror(u_error));
 			break;
 		}
 		if ((sys_res & RVAL_STR) && tcp->auxstr)
@@ -1040,7 +1056,8 @@
 					tprintf("= %#lx", tcp->u_rval);
 				break;
 			case RVAL_OCTAL:
-				tprintf("= %#lo", tcp->u_rval);
+				tprints("= ");
+				print_numeric_long_umask(tcp->u_rval);
 				break;
 			case RVAL_UDECIMAL:
 #if SUPPORTED_PERSONALITIES > 1
@@ -1130,7 +1147,7 @@
 	}
 }
 
-static int saved_u_error;
+static unsigned long saved_u_error;
 
 void
 temporarily_clear_syserror(struct tcb *tcp)
@@ -1157,18 +1174,18 @@
 	/* Linux kernel defines MAX_ERRNO to 4095. */
 	kernel_ulong_t max = -(kernel_long_t) 4095;
 
-#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
-	if (current_wordsize < sizeof(val)) {
+#if defined X86_64 || defined X32
+	/*
+	 * current_wordsize is 4 for x32 personality
+	 * but truncation _must not_ be done in it, so
+	 * check current_personality instead.
+	 */
+	if (current_personality == 1) {
 		val = (uint32_t) val;
 		max = (uint32_t) max;
 	}
-#elif defined X32
-	/*
-	 * current_wordsize is 4 even in personality 0 (native X32)
-	 * but truncation _must not_ be done in it.
-	 * can't check current_wordsize here!
-	 */
-	if (current_personality != 0) {
+#elif SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+	if (current_wordsize < sizeof(val)) {
 		val = (uint32_t) val;
 		max = (uint32_t) max;
 	}
@@ -1277,6 +1294,20 @@
 #endif
 }
 
+struct sysent_buf {
+	struct tcb *tcp;
+	struct_sysent ent;
+	char buf[sizeof("syscall_%lu") + sizeof(long) * 3];
+};
+
+static void
+free_sysent_buf(void *ptr)
+{
+	struct sysent_buf *s = ptr;
+	s->tcp->s_prev_ent = s->tcp->s_ent = NULL;
+	free(ptr);
+}
+
 /*
  * Returns:
  * 0: "ignore this ptrace stop", bail out of trace_syscall_entering() silently.
@@ -1298,14 +1329,20 @@
 		tcp->s_ent = &sysent[tcp->scno];
 		tcp->qual_flg = qual_flags[tcp->scno];
 	} else {
-		static const struct_sysent unknown = {
-			.nargs = MAX_ARGS,
-			.sys_flags = 0,
-			.sys_func = printargs,
-			.sys_name = "system call",
-		};
-		tcp->s_ent = &unknown;
+		struct sysent_buf *s = xcalloc(1, sizeof(*s));
+
+		s->tcp = tcp;
+		s->ent.nargs = MAX_ARGS;
+		s->ent.sen = SEN_printargs;
+		s->ent.sys_func = printargs;
+		s->ent.sys_name = s->buf;
+		sprintf(s->buf, "syscall_%lu", shuffle_scno(tcp->scno));
+
+		tcp->s_ent = &s->ent;
 		tcp->qual_flg = QUAL_RAW | DEFAULT_QUAL_FLAGS;
+
+		set_tcb_priv_data(tcp, s, free_sysent_buf);
+
 		if (debug_flag)
 			error_msg("pid %d invalid syscall %ld", tcp->pid, tcp->scno);
 	}
diff --git a/sysinfo.c b/sysinfo.c
index c3cb9ad..a0f29cb 100644
--- a/sysinfo.c
+++ b/sysinfo.c
@@ -59,19 +59,19 @@
 			", freehigh=%llu"
 			", mem_unit=%u"
 			"}",
-			widen_to_ull(si.uptime)
-			, widen_to_ull(si.loads[0])
-			, widen_to_ull(si.loads[1])
-			, widen_to_ull(si.loads[2])
-			, widen_to_ull(si.totalram)
-			, widen_to_ull(si.freeram)
-			, widen_to_ull(si.sharedram)
-			, widen_to_ull(si.bufferram)
-			, widen_to_ull(si.totalswap)
-			, widen_to_ull(si.freeswap)
+			zero_extend_signed_to_ull(si.uptime)
+			, zero_extend_signed_to_ull(si.loads[0])
+			, zero_extend_signed_to_ull(si.loads[1])
+			, zero_extend_signed_to_ull(si.loads[2])
+			, zero_extend_signed_to_ull(si.totalram)
+			, zero_extend_signed_to_ull(si.freeram)
+			, zero_extend_signed_to_ull(si.sharedram)
+			, zero_extend_signed_to_ull(si.bufferram)
+			, zero_extend_signed_to_ull(si.totalswap)
+			, zero_extend_signed_to_ull(si.freeswap)
 			, (unsigned) si.procs
-			, widen_to_ull(si.totalhigh)
-			, widen_to_ull(si.freehigh)
+			, zero_extend_signed_to_ull(si.totalhigh)
+			, zero_extend_signed_to_ull(si.freehigh)
 			, si.mem_unit
 			);
 	}
diff --git a/term.c b/term.c
index 530ffc4..2b0be68 100644
--- a/term.c
+++ b/term.c
@@ -67,10 +67,10 @@
 	if (!(tios.c_lflag & ICANON))
 		tprintf("c_cc[VMIN]=%d, c_cc[VTIME]=%d, ",
 			tios.c_cc[VMIN], tios.c_cc[VTIME]);
-	tprintf("c_cc=\"");
+	tprints("c_cc=\"");
 	for (i = 0; i < NCCS; i++)
 		tprintf("\\x%02x", tios.c_cc[i]);
-	tprintf("\"}");
+	tprints("\"}");
 }
 
 static void
@@ -109,10 +109,10 @@
 		tprintf("c_cc[VMIN]=%d, c_cc[VTIME]=%d, ",
 			tio.c_cc[VMIN], tio.c_cc[VTIME]);
 #endif /* !_VMIN */
-	tprintf("c_cc=\"");
+	tprints("c_cc=\"");
 	for (i = 0; i < NCC; i++)
 		tprintf("\\x%02x", tio.c_cc[i]);
-	tprintf("\"}");
+	tprints("\"}");
 }
 
 static void
diff --git a/test/seccomp.c b/test/seccomp.c
new file mode 100644
index 0000000..00e6cca
--- /dev/null
+++ b/test/seccomp.c
@@ -0,0 +1,93 @@
+#include <stddef.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/prctl.h>
+#include <asm/unistd.h>
+#include <linux/audit.h>
+#include <linux/filter.h>
+#include <linux/seccomp.h>
+
+#if defined __i386__
+# define SECCOMP_ARCH AUDIT_ARCH_I386
+#elif defined __x86_64__
+# define SECCOMP_ARCH AUDIT_ARCH_X86_64
+#elif defined __arm__
+# define SECCOMP_ARCH AUDIT_ARCH_ARM
+#elif defined __arm64__ || defined __aarch64__
+# define SECCOMP_ARCH AUDIT_ARCH_AARCH64
+#else
+# error unsupported architecture
+#endif
+
+#define SOCK_FILTER_KILL_PROCESS \
+		BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_KILL)
+
+#define SOCK_FILTER_DENY_SYSCALL(nr, err) \
+		BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, __NR_ ## nr, 0, 1), \
+		BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ERRNO | (SECCOMP_RET_DATA & (err)))
+
+#define SOCK_FILTER_ALLOW_SYSCALL(nr) \
+		BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, __NR_ ## nr, 0, 1), \
+		BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW)
+
+static const struct sock_filter filter[] = {
+	/* load architecture */
+	BPF_STMT(BPF_LD | BPF_W | BPF_ABS, (offsetof (struct seccomp_data, arch))),
+	/* jump forward 1 instruction if architecture matches */
+	BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SECCOMP_ARCH, 1, 0),
+	/* kill process */
+	SOCK_FILTER_KILL_PROCESS,
+
+	/* load syscall number */
+	BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, nr)),
+
+	/* allow syscalls */
+	SOCK_FILTER_ALLOW_SYSCALL(close),
+	SOCK_FILTER_ALLOW_SYSCALL(exit),
+	SOCK_FILTER_ALLOW_SYSCALL(exit_group),
+
+	/* deny syscalls */
+	SOCK_FILTER_DENY_SYSCALL(sync, EBUSY),
+	SOCK_FILTER_DENY_SYSCALL(setsid, EACCES),
+	SOCK_FILTER_DENY_SYSCALL(getpid, EPERM),
+	SOCK_FILTER_DENY_SYSCALL(munlockall, SECCOMP_RET_DATA),
+
+	/* kill process */
+	SOCK_FILTER_KILL_PROCESS
+};
+
+static const struct sock_fprog prog = {
+	.len = sizeof(filter) / sizeof(filter[0]),
+	.filter = (struct sock_filter *) filter,
+};
+
+int
+main(void)
+{
+	int fds[2];
+
+	close(0);
+	close(1);
+	if (pipe(fds))
+		return 77;
+
+	if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0))
+		return 77;
+
+	if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog))
+		return 77;
+
+	if (close(0) || close(1))
+		_exit(1);
+
+#define TEST_DENIED_SYSCALL(nr, err, fail) \
+	if (errno = 0, syscall(__NR_ ## nr, 0xbad, 0xf00d, 0xdead, 0xbeef, err, fail) != -1 || err != errno) \
+		close(-fail)
+
+	TEST_DENIED_SYSCALL(sync, EBUSY, 2);
+	TEST_DENIED_SYSCALL(setsid, EACCES, 3);
+	TEST_DENIED_SYSCALL(getpid, EPERM, 4);
+	TEST_DENIED_SYSCALL(munlockall, SECCOMP_RET_DATA, 5);
+
+	_exit(0);
+}
diff --git a/test/threaded_execve.c b/test/threaded_execve.c
new file mode 100644
index 0000000..d1d2208
--- /dev/null
+++ b/test/threaded_execve.c
@@ -0,0 +1,147 @@
+/*
+ * Create NUM_THREADS threads which print "1" and sleep in pause().
+ * Then create another thread which prints "2", and re-execs the program.
+ * The leader then either sleeps in pause(), or exits if $LEADER_EXIT is set.
+ * This triggers "execve'ed thread replaces thread leader" case.
+ *
+ * gcc -Wall -Os -o threaded_execve threaded_execve.c
+ *
+ * Try running it under strace like this:
+ *
+ * # Should not be confused by traced execve-ing thread
+ * # replacing traced leader:
+ * strace -oLOG -f ./threaded_execve
+ *
+ * # Same, but different output mode. Output after execve
+ * # should go into leader's LOG.<pid> file, not into execve'ed
+ * # thread's log file:
+ * strace -oLOG -ff ./threaded_execve
+ *
+ * # Should not be confused by non-traced execve-ing thread
+ * # replacing traced leader:
+ * strace -oLOG ./threaded_execve
+ * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ * In Linux 3.2, non-traced execve-ing thread does not
+ * become traced after execve, even though it has pid == leader's pid
+ * after execve. And yet, strace's waitpid doesn't return ECHILD.
+ *
+ * # Run for NUM seconds, not just one second.
+ * # Watch top to check for memory leaks in strace:
+ * strace -oLOG -f ./threaded_execve <NUM>
+ *
+ */
+#define NUM_THREADS 1
+
+#define _GNU_SOURCE 1
+#include <assert.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdio.h>
+#include <sched.h>
+#include <signal.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <asm/unistd.h>
+
+/* Define clone2 for all arches */
+#ifdef __ia64__
+extern int __clone2(int (*fn) (void *), void *child_stack_base,
+		size_t stack_size, int flags, void *arg, ...);
+#define clone2 __clone2
+#elif defined(__metag__)
+#define clone2(func, stack_base, size, flags, arg...) \
+        clone(func, stack_base, flags, arg)
+#else
+#define clone2(func, stack_base, size, flags, arg...) \
+        clone(func, (stack_base) + (size), flags, arg)
+#endif
+/* Direct calls to syscalls, avoiding libc wrappers */
+#define syscall_tgkill(pid, tid, sig) syscall(__NR_tgkill, (pid), (tid), (sig))
+#define syscall_getpid() syscall(__NR_getpid)
+#define syscall_gettid() syscall(__NR_gettid)
+#define syscall_exit(v) syscall(__NR_exit, (v));
+
+static char my_name[PATH_MAX];
+static int leader_final_action;
+
+static int
+thread1(void *unused)
+{
+	write(1, "1", 1);
+	for(;;) pause();
+	return 0;
+}
+
+static int
+thread2(void *unused)
+{
+	char buf[64];
+	sprintf(buf, "%d", leader_final_action);
+	write(1, "2", 1);
+	usleep(20*1000);
+	/* This fails with ENOENT if leader has exited by now! :) */
+	execl("/proc/self/exe", "exe", "exe", buf, NULL);
+	/* So fall back to resolved name */
+	execl(my_name, "exe", "exe", buf, NULL);
+	for(;;) pause();
+	return 0;
+}
+
+static void
+thread_leader(void)
+{
+	/* malloc gives sufficiently aligned buffer.
+	 * long buf[] does not! (on ia64).
+	 */
+	int cnt = NUM_THREADS;
+	while (--cnt >= 0) {
+		/* As seen in pthread_create(): */
+		clone2(thread1, malloc(16 * 1024), 16 * 1024, 0
+			| CLONE_VM
+			| CLONE_FS
+			| CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM
+			| 0        /* no signal to send on death */
+			, NULL);
+		usleep(20*1000);
+	}
+	clone2(thread2, malloc(16 * 1024), 16 * 1024, 0
+		| CLONE_VM
+		| CLONE_FS
+		| CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM
+		| 0        /* no signal to send on death */
+		, NULL);
+
+	/* Various states leader can be while other thread execve's: */
+	switch (leader_final_action % 3) {
+		case 0: syscall_exit(42); /* leader is dead */
+		case 1: for(;;) pause(); /* leader is in syscall */
+		default: for(;;) continue; /* leader is in userspace */
+	}
+}
+
+int
+main(int argc, char **argv)
+{
+	if (readlink("/proc/self/exe", my_name, sizeof(my_name)-1) <= 0)
+		return 1;
+
+	setbuf(stdout, NULL);
+
+	if (argv[1] && strcmp(argv[1], "exe") == 0) {
+		leader_final_action = atoi(argv[2]) + 1;
+		thread_leader();
+	}
+
+	printf("%d: thread leader\n", getpid());
+
+	alarm(argv[1] ? atoi(argv[1]) : 1);
+	thread_leader();
+
+        return 0;
+}
diff --git a/test/x32_lseek.c b/test/x32_lseek.c
new file mode 100644
index 0000000..f95b1a1
--- /dev/null
+++ b/test/x32_lseek.c
@@ -0,0 +1,38 @@
+// Test program which explores whether lseek syscall (not llseek!)
+// on x32 uses 64-bit offset argument.
+// IOW: does _kernel_ truncate it on entry?
+// The answer appears to be "no, full 64-bit offset is used".
+// strace must show it correctly too - tricky if strace itself is x32 one!
+//
+// Build: x86_64-gcc -static -Wall -ox32_lseek x32_lseek.c
+// Run:   $ strace ./x32_lseek 2>&1 | grep lseek | grep 1250999896321
+//        lseek(0, 1250999896321, SEEK_SET) = 1250999896321
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <asm/unistd.h>
+// Ensure we are compiling to 64 bits
+struct bug { int t[sizeof(long) > 4 ? 1 : -1]; };
+int main(int argc, char **argv)
+{
+	long ofs = 0x12345678901;
+	errno = 0;
+	close(0);
+	if (open("/etc/passwd", O_RDONLY))
+		return 1;
+	long r = syscall(
+		(long) (__NR_lseek | 0x40000000), // make x32 call
+		(long) (0),
+		(long) (ofs),
+		(long) (SEEK_SET)
+	);
+	printf("pos:%ld(0x%lx) errno:%m\n", r, r);
+	if (!errno)
+		printf((r == ofs) ? "64-bit offset used\n" : "Kernel truncated offset\n");
+	return 0;
+}
diff --git a/test/x32_mmap.c b/test/x32_mmap.c
new file mode 100644
index 0000000..f7f3ed3
--- /dev/null
+++ b/test/x32_mmap.c
@@ -0,0 +1,49 @@
+// Test program which explores whether mmap's ofs parameter
+// is 64-bit, and whether it needs to be shifted << PAGE_SHIFT.
+// Apparently it is 64-bit and isn't shifted.
+//
+// Build: x86_64-gcc -static -Wall -ox32_mmap x32_mmap.c
+// Typical output:
+// 7f9390696000-7f93906a6000 r--s 12345670000 08:06 2224545 /etc/passwd
+//                                ^^^^^^^^^^^
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <asm/unistd.h>
+// Ensure we are compiling to 64 bits
+struct bug { int t[sizeof(long) > 4 ? 1 : -1]; };
+int main(int argc, char **argv)
+{
+	long ofs = 0x12345670000; // fails if not page-aligned
+	errno = 0;
+	close(0);
+	if (open("/etc/passwd", O_RDONLY))
+		return 1;
+	long r = syscall(
+		(long) (__NR_mmap | 0x40000000), // make x32 call
+		(long) (0),		// start
+		(long) (0x10000),	// len
+		(long) (PROT_READ),	// prot
+		(long) (MAP_SHARED),	// flags
+		(long) (0),		// fd
+		(long) (ofs)		// ofs
+	);
+	printf("ret:0x%lx errno:%m\n", r);
+
+	char buf[16*1024];
+	sprintf(buf, "/proc/%d/maps", getpid());
+	int fd = open(buf, O_RDONLY);
+	if (fd > 0) {
+		int sz = read(fd, buf, sizeof(buf));
+		if (sz > 0)
+			write(1, buf, sz);
+	}
+
+	return 0;
+}
diff --git a/tests/.gitignore b/tests/.gitignore
index 500ae69..5b33416 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -10,6 +10,7 @@
 accept4
 access
 acct
+addkey
 adjtimex
 aio
 alarm
@@ -44,6 +45,9 @@
 execveat
 execveat-v
 faccessat
+fadvise64
+fadvise64_64
+fallocate
 fanotify_mark
 fchdir
 fchmod
@@ -67,8 +71,10 @@
 fsync
 ftruncate
 ftruncate64
+futex
 futimesat
 get_mempolicy
+getcpu
 getcwd
 getdents
 getdents64
@@ -112,6 +118,7 @@
 ipc_msgbuf
 ipc_sem
 ipc_shm
+keyctl
 kill
 ksysent
 ksysent.h
@@ -169,6 +176,7 @@
 openat
 pause
 pc
+perf_event_open
 personality
 pipe
 poll
@@ -183,7 +191,12 @@
 pselect6
 ptrace
 pwritev
+quotactl
+quotactl-v
+quotactl-xfs
+quotactl-xfs-v
 read-write
+readahead
 readdir
 readlink
 readlinkat
@@ -192,10 +205,12 @@
 recvfrom
 recvmmsg-timeout
 recvmsg
+redirect-fds
 remap_file_pages
 rename
 renameat
 renameat2
+request_key
 restart_syscall
 rmdir
 rt_sigpending
@@ -248,7 +263,7 @@
 sigaltstack
 siginfo
 signal_receive
-signalfd
+signalfd4
 sigreturn
 sleep
 socketcall
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9023029..0c24969 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -54,6 +54,7 @@
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
 	tprintf.c \
@@ -68,6 +69,7 @@
 	accept4 \
 	access \
 	acct \
+	add_key \
 	adjtimex \
 	aio \
 	alarm \
@@ -102,6 +104,9 @@
 	execveat \
 	execveat-v \
 	faccessat \
+	fadvise64 \
+	fadvise64_64 \
+	fallocate \
 	fanotify_mark \
 	fchdir \
 	fchmod \
@@ -125,8 +130,10 @@
 	fsync \
 	ftruncate \
 	ftruncate64 \
+	futex \
 	futimesat \
 	get_mempolicy \
+	getcpu \
 	getcwd \
 	getdents \
 	getdents64 \
@@ -170,6 +177,7 @@
 	ipc_msgbuf \
 	ipc_sem \
 	ipc_shm \
+	keyctl \
 	kill \
 	ksysent \
 	lchown \
@@ -225,6 +233,7 @@
 	openat \
 	pause \
 	pc \
+	perf_event_open \
 	personality \
 	pipe \
 	poll \
@@ -239,7 +248,12 @@
 	pselect6 \
 	ptrace \
 	pwritev \
+	quotactl \
+	quotactl-v \
+	quotactl-xfs \
+	quotactl-xfs-v \
 	read-write \
+	readahead \
 	readdir \
 	readlink \
 	readlinkat \
@@ -248,10 +262,12 @@
 	recvfrom \
 	recvmmsg-timeout \
 	recvmsg \
+	redirect-fds \
 	remap_file_pages \
 	rename \
 	renameat \
 	renameat2 \
+	request_key \
 	restart_syscall \
 	rmdir \
 	rt_sigpending \
@@ -304,7 +320,7 @@
 	sigaltstack \
 	siginfo \
 	signal_receive \
-	signalfd \
+	signalfd4 \
 	sigreturn \
 	sleep \
 	socketcall \
@@ -401,6 +417,7 @@
 	accept4.test \
 	access.test \
 	acct.test \
+	add_key.test \
 	adjtimex.test \
 	aio.test \
 	alarm.test \
@@ -434,6 +451,9 @@
 	execveat-v.test \
 	execveat.test \
 	faccessat.test \
+	fadvise64.test \
+	fadvise64_64.test \
+	fallocate.test \
 	fanotify_mark.test \
 	fchdir.test \
 	fchmod.test \
@@ -455,8 +475,10 @@
 	fsync.test \
 	ftruncate.test \
 	ftruncate64.test \
+	futex.test \
 	futimesat.test \
 	get_mempolicy.test \
+	getcpu.test \
 	getcwd.test \
 	getdents.test \
 	getdents64.test \
@@ -500,6 +522,7 @@
 	ipc_msgbuf.test \
 	ipc_sem.test \
 	ipc_shm.test \
+	keyctl.test \
 	kill.test \
 	lchown.test \
 	lchown32.test \
@@ -550,6 +573,7 @@
 	open.test \
 	openat.test \
 	pause.test \
+	perf_event_open.test \
 	personality.test \
 	pipe.test \
 	poll.test \
@@ -564,7 +588,12 @@
 	pselect6.test \
 	ptrace.test \
 	pwritev.test \
+	quotactl.test \
+	quotactl-v.test \
+	quotactl-xfs.test \
+	quotactl-xfs-v.test \
 	read-write.test \
+	readahead.test \
 	readdir.test \
 	readlink.test \
 	readlinkat.test \
@@ -577,6 +606,7 @@
 	rename.test \
 	renameat.test \
 	renameat2.test \
+	request_key.test \
 	rmdir.test \
 	rt_sigpending.test \
 	rt_sigprocmask.test \
@@ -626,7 +656,7 @@
 	sigaction.test \
 	sigaltstack.test \
 	siginfo.test \
-	signalfd.test \
+	signalfd4.test \
 	sigreturn.test \
 	socketcall.test \
 	splice.test \
@@ -700,6 +730,7 @@
 	pc.test \
 	qual_syscall.test \
 	redirect.test \
+	redirect-fds.test \
 	restart_syscall.test \
 	signal_receive.test \
 	strace-E.test \
@@ -722,36 +753,34 @@
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
 
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
 
 EXTRA_DIST = init.sh run.sh match.awk \
 	     caps.awk \
 	     count-f.expected \
 	     eventfd.expected \
-	     fanotify_mark.expected \
+	     fadvise.h \
 	     filter-unavailable.expected \
 	     fstatat.c \
 	     fstatx.c \
 	     getresugid.c \
-	     ip_mreq.expected \
 	     ipc.sh \
 	     ipc_msgbuf.expected \
 	     ksysent.sed \
 	     lstatx.c \
-	     memfd_create.expected \
 	     mq.expected \
 	     net.expected \
 	     oldselect.expected \
 	     pipe.expected \
 	     ppoll.expected \
 	     ppoll-v.expected \
+	     quotactl.h \
 	     setfsugid.c \
 	     setreugid.c \
 	     setresugid.c \
 	     setugid.c \
 	     sigaction.awk \
 	     sigaltstack.expected \
-	     signalfd.expected \
 	     sockname.c \
 	     statfs.expected \
 	     statx.sh \
@@ -763,6 +792,7 @@
 	     struct_flock.c \
 	     sun_path.expected \
 	     uio.expected \
+	     umode_t.c \
 	     umovestr.expected \
 	     unix-pair-send-recv.expected \
 	     unix-pair-sendto-recvfrom.expected \
@@ -778,7 +808,7 @@
 ksysent.h: $(srcdir)/ksysent.sed
 	echo '#include <asm/unistd.h>' | \
 		$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > $@.t1
-	LC_COLLATE=C sed -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
+	LC_COLLATE=C sed -r -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
 	mv -f $@.t2 $@
 	rm -f $@.t1
 
diff --git a/tests/_newselect.c b/tests/_newselect.c
index be1672e..ae2bc51 100644
--- a/tests/_newselect.c
+++ b/tests/_newselect.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR__newselect
 
diff --git a/tests/access.c b/tests/access.c
index 2920db5..e6f169b 100644
--- a/tests/access.c
+++ b/tests/access.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_access
 
diff --git a/tests/acct.c b/tests/acct.c
index ef11b0b..1cc3fa5 100644
--- a/tests/acct.c
+++ b/tests/acct.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_acct
 
diff --git a/tests/add_key.c b/tests/add_key.c
new file mode 100644
index 0000000..62f4be3
--- /dev/null
+++ b/tests/add_key.c
@@ -0,0 +1,156 @@
+/*
+ * Check decoding of add_key syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_add_key
+
+# include <inttypes.h>
+# include <stdio.h>
+# include <unistd.h>
+
+void
+print_val_str(const void *ptr, const char *str)
+{
+	if (str)
+		printf("%s, ", str);
+	else
+		printf("%p, ", ptr);
+}
+
+void
+do_add_key(const char *type, const char *type_str, const char *desc,
+	const char *desc_str, const char *payload, const char *payload_str,
+	size_t plen, int32_t keyring, const char *keyring_str)
+{
+	long rc = syscall(__NR_add_key, type, desc, payload, plen, keyring);
+	const char *errstr = sprintrc(rc);
+	printf("add_key(");
+	print_val_str(type, type_str);
+	print_val_str(desc, desc_str);
+	print_val_str(payload, payload_str);
+	printf("%zu, ", plen);
+	if (keyring_str)
+		printf("%s", keyring_str);
+	else
+		printf("%d", keyring);
+	printf(") = %s\n", errstr);
+}
+
+# define _STR(_arg) #_arg
+# define ARG_STR(_arg) (_arg), #_arg
+
+int
+main(void)
+{
+	static const char unterminated1[] = { '\1', '\2', '\3', '\4', '\5' };
+	static const char unterminated2[] = { '\6', '\7', '\10', '\11', '\12' };
+	static const char unterminated3[] =
+		{ '\16', '\17', '\20', '\21', '\22' };
+
+	char *bogus_type = tail_memdup(unterminated1, sizeof(unterminated1));
+	char *bogus_desc = tail_memdup(unterminated2, sizeof(unterminated2));
+	char *bogus_payload = tail_memdup(unterminated3, sizeof(unterminated3));
+
+	unsigned i;
+	unsigned j;
+	unsigned k;
+	unsigned l;
+
+	struct {
+		const char *type;
+		const char *str;
+	} types[] = {
+		{ ARG_STR(NULL) },
+		{ (const char *) 0xfffffee1fffffbadULL, NULL },
+		{ bogus_type, NULL },
+		{ ARG_STR("\20\21\22\23\24") },
+		{ ARG_STR("user") },
+	};
+
+	struct {
+		const char *desc;
+		const char *str;
+	} descs[] = {
+		{ ARG_STR(NULL) },
+		{ (const char *) 0xfffff00dfffffca7ULL, NULL },
+		{ bogus_desc, NULL },
+		{ ARG_STR("\25\26\27\30\31") },
+		{ ARG_STR("desc") },
+		{ "overly long description", _STR("overly long ") "..." },
+	};
+
+	struct {
+		const char *pload;
+		const char *str;
+		size_t plen;
+	} payloads[] = {
+		{ ARG_STR(NULL), 0 },
+		{ (const char *) 0xfffffacefffff157ULL, NULL,
+			(size_t) 0xdeadbeefbadc0dedULL },
+		{ bogus_payload, _STR(""), 0 },
+		{ bogus_payload, _STR("\16\17\20\21\22"), 5 },
+		{ bogus_payload, NULL, 10 },
+		{ "overly long payload", _STR("overly long ") "...", 15 },
+	};
+
+	struct {
+		uint32_t keyring;
+		const char *str;
+	} keyrings[] = {
+		{ ARG_STR(0) },
+		{ ARG_STR(1234567890) },
+		{ ARG_STR(-1234567890) },
+		{ -1, "KEY_SPEC_THREAD_KEYRING" },
+	};
+
+	for (i = 0; i < ARRAY_SIZE(types); i++)
+		for (j = 0; j < ARRAY_SIZE(descs); j++)
+			for (k = 0; k < ARRAY_SIZE(payloads); k++)
+				for (l = 0; l < ARRAY_SIZE(keyrings); l++)
+					do_add_key(types[i].type, types[i].str,
+						descs[j].desc, descs[j].str,
+						payloads[k].pload,
+						payloads[k].str,
+						payloads[k].plen,
+						keyrings[l].keyring,
+						keyrings[l].str);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_add_key");
+
+#endif
diff --git a/tests/add_key.test b/tests/add_key.test
new file mode 100755
index 0000000..eadd8c2
--- /dev/null
+++ b/tests/add_key.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of add_key syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s12
diff --git a/tests/aio.c b/tests/aio.c
index ab259f4..8717f4f 100644
--- a/tests/aio.c
+++ b/tests/aio.c
@@ -26,13 +26,12 @@
  */
 
 #include "tests.h"
-#include <assert.h>
 #include <fcntl.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_io_setup \
  && defined __NR_io_submit \
@@ -44,6 +43,12 @@
 int
 main(void)
 {
+	static const long bogus_ctx =
+		(long) 0xface1e55deadbeefLL;
+
+	static const char data2[] =
+		"\0\1\2\3cat test test test 0123456789abcdef";
+
 	const unsigned int sizeof_data0 = 4096;
 	const unsigned int sizeof_data1 = 8192;
 	void *data0 = tail_alloc(sizeof_data0);
@@ -51,17 +56,17 @@
 
 	const struct iocb proto_cb[] = {
 		{
-			.aio_data = 0xfeedface11111111,
+			.aio_data = (unsigned long) 0xfeedface11111111ULL,
 			.aio_reqprio = 11,
 			.aio_buf = (unsigned long) data0,
-			.aio_offset = 0xdeface1facefeed,
+			.aio_offset = (unsigned long) 0xdeface1facefeedULL,
 			.aio_nbytes = sizeof_data0
 		},
 		{
-			.aio_data = 0xfeedface22222222,
+			.aio_data = (unsigned long) 0xfeedface22222222ULL,
 			.aio_reqprio = 22,
 			.aio_buf = (unsigned long) data1,
-			.aio_offset = 0xdeface2cafef00d,
+			.aio_offset = (unsigned long) 0xdeface2cafef00dULL,
 			.aio_nbytes = sizeof_data1
 		}
 	};
@@ -93,26 +98,84 @@
 
 	const struct iocb proto_cbv[] = {
 		{
-			.aio_data = 0xfeed11111111face,
+			.aio_data = (unsigned long) 0xfeed11111111faceULL,
 			.aio_lio_opcode = 7,
 			.aio_reqprio = 111,
 			.aio_buf = (unsigned long) iov0,
-			.aio_offset = 0xdeface1facefeed,
+			.aio_offset = (unsigned long) 0xdeface1facefeedULL,
 			.aio_nbytes = ARRAY_SIZE(proto_iov0)
 		},
 		{
-			.aio_data = 0xfeed22222222face,
+			.aio_data = (unsigned long) 0xfeed22222222faceULL,
 			.aio_lio_opcode = 7,
 			.aio_reqprio = 222,
 			.aio_buf = (unsigned long) iov1,
-			.aio_offset = 0xdeface2cafef00d,
+			.aio_offset = (unsigned long) 0xdeface2cafef00dULL,
 			.aio_nbytes = ARRAY_SIZE(proto_iov1)
 		}
 	};
 	const struct iocb *cbv = tail_memdup(proto_cbv, sizeof(proto_cbv));
 
+	/* For additional decoder testing */
+	const struct iocb proto_cbv2[] = {
+		{
+			.aio_data = 0xbadfacedc0ffeeedULL,
+			.aio_key = 0xdefaced0,
+			.aio_lio_opcode = 0xf00d,
+			.aio_reqprio = 0,
+			.aio_fildes = 0xdefaced1,
+			.aio_buf = 0,
+		},
+		{
+			.aio_data = 0,
+			.aio_key = 0xdefaced0,
+			.aio_lio_opcode = 1,
+			.aio_reqprio = 0xbeef,
+			.aio_fildes = 0xdefaced1,
+			.aio_buf = 0,
+			/* In order to make record valid */
+			.aio_nbytes = (size_t) 0x1020304050607080ULL,
+			.aio_offset = 0xdeadda7abadc0dedULL,
+# ifdef IOCB_FLAG_RESFD
+			.aio_flags = 0xfacef157,
+			.aio_resfd = 0xded1ca7e,
+# endif
+		},
+		{
+			.aio_data = 0,
+			.aio_key = 0xdefaced0,
+			.aio_lio_opcode = 1,
+			.aio_reqprio = 0xbeef,
+			.aio_fildes = 0xdefaced1,
+			.aio_buf = 0xbadc0ffeedefacedULL,
+			.aio_nbytes = 0x8090a0b0c0d0e0f0ULL,
+			.aio_offset = 0xdeadda7abadc0dedULL,
+		},
+		{
+			.aio_data = 0,
+			.aio_key = 0xdefaced0,
+			.aio_lio_opcode = 1,
+			.aio_reqprio = 0xbeef,
+			.aio_fildes = 0xdefaced1,
+			.aio_buf = (unsigned long)data2,
+			.aio_nbytes = sizeof(data2),
+			.aio_offset = 0xdeadda7abadc0ded,
+		},
+		{
+			.aio_data = 0,
+			.aio_key = 0xdefaced0,
+			.aio_lio_opcode = 8,
+			.aio_reqprio = 0xbeef,
+			.aio_fildes = 0xdefaced1,
+			.aio_buf = 0,
+			.aio_nbytes = 0x8090a0b0c0d0e0f0ULL,
+			.aio_offset = 0xdeadda7abadc0dedULL,
+		},
+	};
+	const struct iocb *cbv2 = tail_memdup(proto_cbv2, sizeof(proto_cbv2));
+
 	const struct iocb proto_cbc = {
-		.aio_data = 0xdeadbeefbadc0ded,
+		.aio_data = (unsigned long) 0xdeadbeefbadc0dedULL,
 		.aio_reqprio = 99,
 		.aio_fildes = -42
 	};
@@ -128,6 +191,13 @@
 	};
 	const long *cbvs = tail_memdup(proto_cbvs, sizeof(proto_cbvs));
 
+	const long proto_cbvs2[] = {
+		(long) &cbv2[0], (long) &cbv2[1], (long) &cbv2[2],
+		(long) &cbv2[3], (long) &cbv2[4],
+		(long) NULL, (long) 0xffffffffffffffffLL,
+	};
+	const long *cbvs2 = tail_memdup(proto_cbvs2, sizeof(proto_cbvs2));
+
 	unsigned long *ctx = tail_alloc(sizeof(unsigned long));
 	*ctx = 0;
 
@@ -142,67 +212,150 @@
 	if (open("/dev/zero", O_RDONLY))
 		perror_msg_and_skip("open: %s", "/dev/zero");
 
+	long rc = syscall(__NR_io_setup, 0xdeadbeef, NULL);
+	printf("io_setup(%u, NULL) = %s\n", 0xdeadbeef, sprintrc(rc));
+
+	rc = syscall(__NR_io_setup, lnr, ctx + 1);
+	printf("io_setup(%u, %p) = %s\n", nr, ctx + 1, sprintrc(rc));
+
 	if (syscall(__NR_io_setup, lnr, ctx))
 		perror_msg_and_skip("io_setup");
-	printf("io_setup(%u, [%lu]) = 0\n", nr, *ctx);
+	printf("io_setup(%u, [%#lx]) = 0\n", nr, *ctx);
 
-	assert(syscall(__NR_io_submit, *ctx, -1L, cbs) == -1);
-	printf("io_submit(%lu, -1, %p) = -1 %s (%m)\n",
-	       *ctx, cbs, errno2name());
+	rc = syscall(__NR_io_submit, bogus_ctx, (long) 0xca7faceddeadf00dLL,
+		     NULL);
+	printf("io_submit(%#lx, %ld, NULL) = %s\n",
+	       bogus_ctx, (long) 0xca7faceddeadf00dLL, sprintrc(rc));
 
-	if (syscall(__NR_io_submit, *ctx, nr, cbs) != (long) nr)
+	rc = syscall(__NR_io_submit, *ctx, nr, cbs + nr);
+	printf("io_submit(%#lx, %ld, %p) = %s\n",
+	       *ctx, (long) nr, cbs + nr, sprintrc(rc));
+
+	rc = syscall(__NR_io_submit, *ctx, -1L, cbs);
+	printf("io_submit(%#lx, -1, %p) = %s\n",
+	       *ctx, cbs, sprintrc(rc));
+
+	rc = syscall(__NR_io_submit, *ctx, nr, cbs);
+	if (rc != (long) nr)
 		perror_msg_and_skip("io_submit");
-	printf("io_submit(%lu, %u, ["
-		"{data=%#llx, pread, reqprio=11, fildes=0, "
-			"buf=%p, nbytes=%u, offset=%lld}, "
-		"{data=%#llx, pread, reqprio=22, fildes=0, "
-			"buf=%p, nbytes=%u, offset=%lld}"
-		"]) = %u\n",
+	printf("io_submit(%#lx, %u, ["
+	       "{data=%#" PRI__x64 ", pread, reqprio=11, fildes=0, "
+	               "buf=%p, nbytes=%u, offset=%" PRI__d64 "}, "
+	       "{data=%#" PRI__x64 ", pread, reqprio=22, fildes=0, "
+	               "buf=%p, nbytes=%u, offset=%" PRI__d64 "}"
+	       "]) = %s\n",
 	       *ctx, nr,
-	       (unsigned long long) cb[0].aio_data, data0,
-	       sizeof_data0, (long long) cb[0].aio_offset,
-	       (unsigned long long) cb[1].aio_data, data1,
-	       sizeof_data1, (long long) cb[1].aio_offset,
-	       nr);
+	       cb[0].aio_data, data0, sizeof_data0, cb[0].aio_offset,
+	       cb[1].aio_data, data1, sizeof_data1, cb[1].aio_offset,
+	       sprintrc(rc));
 
-	assert(syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts) == (long) nr);
-	printf("io_getevents(%lu, %u, %u, ["
-		"{data=%#llx, obj=%p, res=%u, res2=0}, "
-		"{data=%#llx, obj=%p, res=%u, res2=0}"
-		"], {0, 123456789}) = %u\n",
-	       *ctx, nr, nr + 1,
-	       (unsigned long long) cb[0].aio_data, &cb[0], sizeof_data0,
-	       (unsigned long long) cb[1].aio_data, &cb[1], sizeof_data1,
-	       nr);
+	rc = syscall(__NR_io_getevents, bogus_ctx,
+		     (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL,
+		     ev + 1, NULL);
+	printf("io_getevents(%#lx, %ld, %ld, %p, NULL) = %s\n",
+	       bogus_ctx, (long) 0xca7faceddeadf00dLL,
+	       (long) 0xba5e1e505ca571e0LL, ev + 1, sprintrc(rc));
 
-	assert(syscall(__NR_io_cancel, *ctx, cbc, ev) == -1);
-	printf("io_cancel(%lu, {data=%#llx, pread, reqprio=99, fildes=-42}, %p) "
-		"= -1 %s (%m)\n",
-	       *ctx, (unsigned long long) cbc->aio_data, ev, errno2name());
+	rc = syscall(__NR_io_getevents, bogus_ctx,
+		     (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL,
+		     NULL, ts + 1);
+	printf("io_getevents(%#lx, %ld, %ld, NULL, %p) = %s\n",
+	       bogus_ctx, (long) 0xca7faceddeadf00dLL,
+	       (long) 0xba5e1e505ca571e0LL, ts + 1, sprintrc(rc));
 
-	if (syscall(__NR_io_submit, *ctx, nr, cbvs) != (long) nr)
+	rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts);
+	printf("io_getevents(%#lx, %ld, %ld, ["
+	       "{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}, "
+	       "{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}"
+	       "], {0, 123456789}) = %s\n",
+	       *ctx, (long) nr, (long) (nr + 1),
+	       cb[0].aio_data, &cb[0], sizeof_data0,
+	       cb[1].aio_data, &cb[1], sizeof_data1,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_io_cancel, bogus_ctx, NULL, NULL);
+	printf("io_cancel(%#lx, NULL, NULL) = %s\n", bogus_ctx, sprintrc(rc));
+
+	rc = syscall(__NR_io_cancel, *ctx, cbc + 1, ev);
+	printf("io_cancel(%#lx, %p, %p) = %s\n", *ctx, cbc + 1, ev,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_io_cancel, *ctx, cbc, ev);
+	printf("io_cancel(%#lx, {data=%#" PRI__x64
+	       ", pread, reqprio=99, fildes=-42}, %p) = %s\n",
+	       *ctx, cbc->aio_data, ev, sprintrc(rc));
+
+	rc = syscall(__NR_io_submit, (unsigned long) 0xfacef157beeff00dULL,
+		     (long) 0xdeadc0defacefeedLL, NULL);
+	printf("io_submit(%#lx, %ld, NULL) = %s\n",
+	       (long) 0xfacef157beeff00dULL,
+	       (long) 0xdeadc0defacefeedLL, sprintrc(rc));
+
+	rc = syscall(__NR_io_submit, *ctx, -1L, cbvs + nr);
+	printf("io_submit(%#lx, %ld, %p) = %s\n",
+	       *ctx, -1L, cbvs + nr, sprintrc(rc));
+
+	rc = syscall(__NR_io_submit, *ctx, 1057L, cbvs2);
+	printf("io_submit(%#lx, %ld, ["
+	       "{data=%#" PRI__x64 ", key=%u, %hu /* SUB_??? */, fildes=%d}, "
+	       "{key=%u, pwrite, reqprio=%hd, fildes=%d, str=NULL"
+	               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64
+# ifdef IOCB_FLAG_RESFD
+	               ", resfd=%d, flags=%x"
+# endif
+	               "}, "
+	       "{key=%u, pwrite, reqprio=%hd, fildes=%d, buf=%#" PRI__x64
+	               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64 "}, "
+	       "{key=%u, pwrite, reqprio=%hd, fildes=%d"
+	               ", str=\"\\0\\1\\2\\3%.28s\"..."
+	               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64 "}, "
+	       "{key=%u, pwritev, reqprio=%hd, fildes=%d, buf=%#" PRI__x64
+	               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64 "}"
+	       ", {NULL}, {%#lx}, %p]) = %s\n",
+	       *ctx, 1057L,
+	       cbv2[0].aio_data, cbv2[0].aio_key,
+	       cbv2[0].aio_lio_opcode, cbv2[0].aio_fildes,
+	       cbv2[1].aio_key, cbv2[1].aio_reqprio, cbv2[1].aio_fildes,
+	       cbv2[1].aio_nbytes, cbv2[1].aio_offset,
+# ifdef IOCB_FLAG_RESFD
+	       cbv2[1].aio_resfd, cbv2[1].aio_flags,
+# endif
+	       cbv2[2].aio_key, cbv2[2].aio_reqprio, cbv2[2].aio_fildes,
+	       cbv2[2].aio_buf, cbv2[2].aio_nbytes, cbv2[2].aio_offset,
+	       cbv2[3].aio_key, cbv2[3].aio_reqprio, cbv2[3].aio_fildes,
+	       data2 + 4, cbv2[3].aio_nbytes, cbv2[3].aio_offset,
+	       cbv2[4].aio_key, cbv2[4].aio_reqprio, cbv2[4].aio_fildes,
+	       cbv2[4].aio_buf, cbv2[4].aio_nbytes, cbv2[4].aio_offset,
+	       cbvs2[6], cbvs2 + 7, sprintrc(rc));
+
+	rc = syscall(__NR_io_submit, *ctx, nr, cbvs);
+	if (rc != (long) nr)
 		perror_msg_and_skip("io_submit");
-	printf("io_submit(%lu, %u, ["
-		"{data=%#llx, preadv, reqprio=%hd, fildes=0, "
-			"iovec=[{iov_base=%p, iov_len=%u}"
-			", {iov_base=%p, iov_len=%u}], offset=%lld}, "
-		"{data=%#llx, preadv, reqprio=%hd, fildes=0, "
-			"iovec=[{iov_base=%p, iov_len=%u}"
-			", {iov_base=%p, iov_len=%u}], offset=%lld}"
-		"]) = %u\n",
+	printf("io_submit(%#lx, %u, ["
+	       "{data=%#" PRI__x64 ", preadv, reqprio=%hd, fildes=0, "
+	               "iovec=[{iov_base=%p, iov_len=%u}"
+	               ", {iov_base=%p, iov_len=%u}], offset=%" PRI__d64 "}, "
+	       "{data=%#" PRI__x64 ", preadv, reqprio=%hd, fildes=0, "
+	               "iovec=[{iov_base=%p, iov_len=%u}"
+	               ", {iov_base=%p, iov_len=%u}], offset=%" PRI__d64 "}"
+	       "]) = %s\n",
 	       *ctx, nr,
-	       (unsigned long long) cbv[0].aio_data, cbv[0].aio_reqprio,
+	       cbv[0].aio_data, cbv[0].aio_reqprio,
 	       iov0[0].iov_base, (unsigned int) iov0[0].iov_len,
 	       iov0[1].iov_base, (unsigned int) iov0[1].iov_len,
-	       (long long) cbv[0].aio_offset,
-	       (unsigned long long) cbv[1].aio_data, cbv[1].aio_reqprio,
+	       cbv[0].aio_offset,
+	       cbv[1].aio_data, cbv[1].aio_reqprio,
 	       iov1[0].iov_base, (unsigned int) iov1[0].iov_len,
 	       iov1[1].iov_base, (unsigned int) iov1[1].iov_len,
-	       (long long) cbv[1].aio_offset,
-	       nr);
+	       cbv[1].aio_offset,
+	       sprintrc(rc));
 
-	assert(syscall(__NR_io_destroy, *ctx) == 0);
-	printf("io_destroy(%lu) = 0\n", *ctx);
+	rc = syscall(__NR_io_destroy, bogus_ctx);
+	printf("io_destroy(%#lx) = %s\n",
+	       bogus_ctx, sprintrc(rc));
+
+	rc = syscall(__NR_io_destroy, *ctx);
+	printf("io_destroy(%#lx) = %s\n", *ctx, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/alarm.c b/tests/alarm.c
index fc10b66..f954dcf 100644
--- a/tests/alarm.c
+++ b/tests/alarm.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_alarm
 
diff --git a/tests/attach-f-p.c b/tests/attach-f-p.c
index 8e0f205..c75deb6 100644
--- a/tests/attach-f-p.c
+++ b/tests/attach-f-p.c
@@ -31,11 +31,9 @@
 #include <assert.h>
 #include <errno.h>
 #include <pthread.h>
-#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <time.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <unistd.h>
 
 #define N 3
@@ -45,38 +43,24 @@
 	pid_t pid;
 } retval_t;
 
-typedef struct {
-	sigset_t set;
-	unsigned int no;
-} thread_arg_t;
-
 static const char text_parent[] = "attach-f-p.test parent";
 static const char *child[N] = {
 	"attach-f-p.test child 0",
 	"attach-f-p.test child 1",
 	"attach-f-p.test child 2"
 };
-static const int sigs[N] = { SIGALRM, SIGUSR1, SIGUSR2 };
-static const struct itimerspec its[N] = {
-	{ .it_value.tv_sec = 1 },
-	{ .it_value.tv_sec = 2 },
-	{ .it_value.tv_sec = 3 }
-};
-static thread_arg_t args[N] = {
-	{ .no = 0 },
-	{ .no = 1 },
-	{ .no = 2 }
-};
+typedef int pipefd[2];
+static pipefd pipes[N];
 
 static void *
 thread(void *a)
 {
-	thread_arg_t *arg = a;
-	int signo;
-	errno = sigwait(&arg->set, &signo);
-	if (errno)
-		perror_msg_and_fail("sigwait");
-	assert(chdir(child[arg->no]) == -1);
+	unsigned int no = (long) a;
+	int i;
+
+	if (read(pipes[no][0], &i, sizeof(i)) != (int) sizeof(i))
+		perror_msg_and_fail("read[%u]", no);
+	assert(chdir(child[no]) == -1);
 	retval_t retval = { .pid = syscall(__NR_gettid) };
 	return retval.ptr;
 }
@@ -84,31 +68,17 @@
 int
 main(void)
 {
-	static timer_t timerid[N];
 	pthread_t t[N];
 	unsigned int i;
 
-	for (i = 0; i < N; ++i) {
-		sigemptyset(&args[i].set);
-		sigaddset(&args[i].set, sigs[i]);
-
-		errno = pthread_sigmask(SIG_BLOCK, &args[i].set, NULL);
-		if (errno)
-			perror_msg_and_fail("pthread_sigmask");
-	}
+	if (write(3, "", 0) != 0)
+		perror_msg_and_fail("write");
 
 	for (i = 0; i < N; ++i) {
-		struct sigevent sev = {
-			.sigev_notify = SIGEV_SIGNAL,
-			.sigev_signo = sigs[i]
-		};
-		if (timer_create(CLOCK_MONOTONIC, &sev, &timerid[i]))
-			perror_msg_and_skip("timer_create");
+		if (pipe(pipes[i]))
+			perror_msg_and_fail("pipe");
 
-		if (timer_settime(timerid[i], 0, &its[i], NULL))
-			perror_msg_and_fail("timer_settime");
-
-		errno = pthread_create(&t[i], NULL, thread, (void *) &args[i]);
+		errno = pthread_create(&t[i], NULL, thread, (void *) (long) i);
 		if (errno)
 			perror_msg_and_fail("pthread_create");
 	}
@@ -117,6 +87,10 @@
 		perror_msg_and_fail("write");
 
 	for (i = 0; i < N; ++i) {
+		/* sleep a bit to let the tracer catch up */
+		sleep(1);
+		if (write(pipes[i][1], &i, sizeof(i)) != (int) sizeof(i))
+			perror_msg_and_fail("write[%u]", i);
 		retval_t retval;
 		errno = pthread_join(t[i], &retval.ptr);
 		if (errno)
@@ -128,12 +102,7 @@
 	}
 
 	/* sleep a bit more to let the tracer catch up */
-	if (timer_settime(timerid[0], 0, &its[0], NULL))
-		perror_msg_and_fail("timer_settime");
-	int signo;
-	errno = sigwait(&args[0].set, &signo);
-	if (errno)
-		perror_msg_and_fail("sigwait");
+	sleep(1);
 
 	pid_t pid = getpid();
 	assert(chdir(text_parent) == -1);
diff --git a/tests/attach-f-p.test b/tests/attach-f-p.test
index 02230a0..030659a 100755
--- a/tests/attach-f-p.test
+++ b/tests/attach-f-p.test
@@ -44,6 +44,6 @@
 		fail_ 'set_ptracer_any sleep failed'
 done
 
-run_strace -a32 -f -echdir -esignal=none -p $tracee_pid
+run_strace -a32 -f -echdir -p $tracee_pid
 match_diff "$LOG" "$EXP"
 rm -f "$EXP" "$OUT"
diff --git a/tests/attach-p-cmd-cmd.c b/tests/attach-p-cmd-cmd.c
index d2b3ca1..edfff20 100644
--- a/tests/attach-p-cmd-cmd.c
+++ b/tests/attach-p-cmd-cmd.c
@@ -28,17 +28,19 @@
  */
 
 #include "tests.h"
-#include <assert.h>
 #include <stdio.h>
 #include <unistd.h>
 
 int
 main(void)
 {
-	static const char text[] = "attach-p-cmd.test cmd";
+	static const char dir[] = "attach-p-cmd.test cmd";
 	pid_t pid = getpid();
-	assert(chdir(text) == -1);
-	printf("%-5d chdir(\"%s\") = -1 ENOENT (%m)\n"
-	       "%-5d +++ exited with 0 +++\n", pid, text, pid);
+	int rc = chdir(dir);
+
+	printf("%-5d chdir(\"%s\") = %d %s (%m)\n"
+	       "%-5d +++ exited with 0 +++\n",
+	       pid, dir, rc, errno2name(), pid);
+
 	return 0;
 }
diff --git a/tests/attach-p-cmd-p.c b/tests/attach-p-cmd-p.c
index a059ce5..d63371d 100644
--- a/tests/attach-p-cmd-p.c
+++ b/tests/attach-p-cmd-p.c
@@ -28,8 +28,8 @@
  */
 
 #include "tests.h"
-#include <errno.h>
 #include <signal.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 
@@ -39,14 +39,8 @@
 }
 
 int
-main(int ac, char **av)
+main(void)
 {
-	if (ac < 2)
-		error_msg_and_fail("missing operand");
-
-	if (ac > 2)
-		error_msg_and_fail("extra operand");
-
 	const struct sigaction act = { .sa_handler = handler };
 	if (sigaction(SIGALRM, &act, NULL))
 		perror_msg_and_skip("sigaction");
@@ -56,8 +50,17 @@
 	if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
 		perror_msg_and_skip("sigprocmask");
 
-	alarm(atoi(av[1]));
+	alarm(1);
 	pause();
 
-	return !(chdir("attach-p-cmd.test -p") && ENOENT == errno);
+	static const char dir[] = "attach-p-cmd.test -p";
+	pid_t pid = getpid();
+	int rc = chdir(dir);
+
+	printf("%-5d --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---\n"
+	       "%-5d chdir(\"%s\") = %d %s (%m)\n"
+	       "%-5d +++ exited with 0 +++\n",
+	       pid, pid, dir, rc, errno2name(), pid);
+
+	return 0;
 }
diff --git a/tests/attach-p-cmd.test b/tests/attach-p-cmd.test
index f8c1d1c..2779719 100755
--- a/tests/attach-p-cmd.test
+++ b/tests/attach-p-cmd.test
@@ -32,9 +32,10 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 run_prog ./attach-p-cmd-cmd > /dev/null
-run_prog ./attach-p-cmd-p 1 > /dev/null
+run_prog ./attach-p-cmd-p > /dev/null
 
-./set_ptracer_any ./attach-p-cmd-p 1 > "$OUT" &
+rm -f "$OUT"
+./set_ptracer_any ./attach-p-cmd-p >> "$OUT" &
 tracee_pid=$!
 
 while ! [ -s "$OUT" ]; do
@@ -43,11 +44,5 @@
 done
 
 run_strace -a30 -echdir -p $tracee_pid ./attach-p-cmd-cmd > "$OUT"
-{
-printf '%-5d --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---\n' $tracee_pid
-printf '%-5d chdir("attach-p-cmd.test -p") = -1 ENOENT (No such file or directory)\n' $tracee_pid
-printf '%-5d +++ exited with 0 +++\n' $tracee_pid
-} >> "$OUT"
-
 match_diff "$LOG" "$OUT"
 rm -f "$OUT"
diff --git a/tests/bpf.c b/tests/bpf.c
index d9b05e5..5a1fcdc 100644
--- a/tests/bpf.c
+++ b/tests/bpf.c
@@ -29,7 +29,7 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined HAVE_UNION_BPF_ATTR_LOG_BUF && defined __NR_bpf
 # include <linux/bpf.h>
diff --git a/tests/brk.c b/tests/brk.c
index ed311aa..572ebd6 100644
--- a/tests/brk.c
+++ b/tests/brk.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_brk
 
diff --git a/tests/btrfs.c b/tests/btrfs.c
index e5940ce..d600534 100644
--- a/tests/btrfs.c
+++ b/tests/btrfs.c
@@ -1567,9 +1567,7 @@
 {
 	struct btrfs_ioctl_dev_replace_args args = {
 		.cmd = BTRFS_IOCTL_DEV_REPLACE_CMD_START,
-		.start = {
-			.srcdevid = 1,
-		},
+		.start.srcdevid = 1
 	};
 	strcpy((char *)args.start.srcdev_name, "/dev/sda1");
 	strcpy((char *)args.start.tgtdev_name, "/dev/sdb1");
diff --git a/tests/chmod.c b/tests/chmod.c
index 056101c..f6f98ec 100644
--- a/tests/chmod.c
+++ b/tests/chmod.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Anchit Jain <anchitjain1234@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,7 +27,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_chmod
 
@@ -40,30 +41,20 @@
 {
 	static const char fname[] = "chmod_test_file";
 
-	if (open(fname, O_CREAT|O_RDONLY, 0400) == -1)
+	if (open(fname, O_CREAT|O_RDONLY, 0400) < 0)
 		perror_msg_and_fail("open");
 
-	int chmod_res = syscall(__NR_chmod, fname, 0600);
+	long rc = syscall(__NR_chmod, fname, 0600);
+	printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc));
 
-	if (chmod_res == 0) {
-		printf("chmod(\"%s\", 0600) = 0\n", fname);
-	} else {
-		if (errno == ENOSYS) {
-			printf("chmod(\"%s\", 0600) = -1 ENOSYS (%m)\n", fname);
-		} else {
-			perror_msg_and_fail("chmod");
-		}
-	}
-
-	if (unlink(fname) == -1)
+	if (unlink(fname))
 		perror_msg_and_fail("unlink");
 
-	if (chmod_res == 0) {
-		if (syscall(__NR_chmod, fname, 0600) != -1)
-			perror_msg_and_fail("chmod");
+	rc = syscall(__NR_chmod, fname, 051);
+	printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc));
 
-		printf("chmod(\"%s\", 0600) = -1 ENOENT (%m)\n", fname);
-	}
+	rc = syscall(__NR_chmod, fname, 004);
+	printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/chown.c b/tests/chown.c
index 59a4d63..12aa8b7 100644
--- a/tests/chown.c
+++ b/tests/chown.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_chown
 
diff --git a/tests/chown32.c b/tests/chown32.c
index 5e590a8..4fffd76 100644
--- a/tests/chown32.c
+++ b/tests/chown32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_chown32
 
diff --git a/tests/chroot.c b/tests/chroot.c
index fb9548c..a084cf3 100644
--- a/tests/chroot.c
+++ b/tests/chroot.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_chroot
 
diff --git a/tests/clock_adjtime.c b/tests/clock_adjtime.c
index 93c58b7..01089b5 100644
--- a/tests/clock_adjtime.c
+++ b/tests/clock_adjtime.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_clock_adjtime
 
diff --git a/tests/clock_nanosleep.c b/tests/clock_nanosleep.c
index 1c4c427..d9b68fd 100644
--- a/tests/clock_nanosleep.c
+++ b/tests/clock_nanosleep.c
@@ -33,7 +33,7 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/time.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 static void
 handler(int signo)
@@ -47,7 +47,7 @@
 		struct timespec ts;
 		uint32_t pad[2];
 	} req = {
-		.ts = { .tv_nsec = 0xc0de1 },
+		.ts.tv_nsec = 0xc0de1,
 		.pad = { 0xdeadbeef, 0xbadc0ded }
 	}, rem = {
 		.ts = { .tv_sec = 0xc0de2, .tv_nsec = 0xc0de3 },
diff --git a/tests/clock_xettime.c b/tests/clock_xettime.c
index 633351a..04dddf6 100644
--- a/tests/clock_xettime.c
+++ b/tests/clock_xettime.c
@@ -30,7 +30,7 @@
 #include <stdint.h>
 #include <time.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_clock_getres \
  && defined __NR_clock_gettime \
diff --git a/tests/copy_file_range.c b/tests/copy_file_range.c
index 0e563d6..f3ec5b4 100644
--- a/tests/copy_file_range.c
+++ b/tests/copy_file_range.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_copy_file_range
 
diff --git a/tests/creat.c b/tests/creat.c
index 8572e7f..f22fdaa 100644
--- a/tests/creat.c
+++ b/tests/creat.c
@@ -1,23 +1,11 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_creat
 
-# include <stdio.h>
-# include <unistd.h>
-
-# define TMP_FILE "creat"
-
-int
-main(void)
-{
-	long rc = syscall(__NR_creat, TMP_FILE, 0400);
-	printf("creat(\"%s\", %#o) = %ld %s (%m)\n",
-	       TMP_FILE, 0400, rc, errno2name());
-
-	puts("+++ exited with 0 +++");
-	return 0;
-}
+# define TEST_SYSCALL_NR __NR_creat
+# define TEST_SYSCALL_STR "creat"
+# include "umode_t.c"
 
 #else
 
diff --git a/tests/creat.test b/tests/creat.test
index 49fddd2..069648f 100755
--- a/tests/creat.test
+++ b/tests/creat.test
@@ -3,4 +3,4 @@
 # Check creat syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a20
diff --git a/tests/dup2.c b/tests/dup2.c
index 70d8f3e..04a261c 100644
--- a/tests/dup2.c
+++ b/tests/dup2.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_dup2
 
diff --git a/tests/dup3.c b/tests/dup3.c
index 884331a..2611dd8 100644
--- a/tests/dup3.c
+++ b/tests/dup3.c
@@ -1,6 +1,6 @@
 #include "tests.h"
 #include <fcntl.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_dup3 && defined O_CLOEXEC
 
diff --git a/tests/epoll_create.c b/tests/epoll_create.c
index 4be06c4..1f24852 100644
--- a/tests/epoll_create.c
+++ b/tests/epoll_create.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_epoll_create
 
diff --git a/tests/epoll_create1.c b/tests/epoll_create1.c
index d348492..cd905ec 100644
--- a/tests/epoll_create1.c
+++ b/tests/epoll_create1.c
@@ -27,7 +27,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_epoll_create1 && defined O_CLOEXEC
 
@@ -38,16 +38,11 @@
 main(void)
 {
 	long rc = syscall(__NR_epoll_create1, O_CLOEXEC);
-	if (rc == -1) {
-		printf("epoll_create1(EPOLL_CLOEXEC) = -1 %s (%m)\n",
-		       errno2name());
-	} else {
-		printf("epoll_create1(EPOLL_CLOEXEC) = %ld\n", rc);
-	}
+	printf("epoll_create1(EPOLL_CLOEXEC) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_epoll_create1, O_CLOEXEC | O_NONBLOCK);
-	printf("epoll_create1(EPOLL_CLOEXEC|%#x) = %ld %s (%m)\n",
-	       O_NONBLOCK, rc, errno2name());
+	printf("epoll_create1(EPOLL_CLOEXEC|%#x) = %s\n",
+	       O_NONBLOCK, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/epoll_ctl.c b/tests/epoll_ctl.c
index 231e271..8b46f4e 100644
--- a/tests/epoll_ctl.c
+++ b/tests/epoll_ctl.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_epoll_ctl
 
diff --git a/tests/epoll_pwait.c b/tests/epoll_pwait.c
index acd4218..27337ec 100644
--- a/tests/epoll_pwait.c
+++ b/tests/epoll_pwait.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_epoll_pwait
 
diff --git a/tests/epoll_wait.c b/tests/epoll_wait.c
index c2eb563..038bf1f 100644
--- a/tests/epoll_wait.c
+++ b/tests/epoll_wait.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_epoll_wait
 
diff --git a/tests/eventfd.c b/tests/eventfd.c
index 8b08443..d6ad649 100644
--- a/tests/eventfd.c
+++ b/tests/eventfd.c
@@ -28,7 +28,7 @@
 #include "tests.h"
 #include <fcntl.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_eventfd2 && defined O_CLOEXEC
 
diff --git a/tests/execve-v.c b/tests/execve-v.c
index 26bc9d6..4506c63 100644
--- a/tests/execve-v.c
+++ b/tests/execve-v.c
@@ -1,3 +1,3 @@
 /* This file is part of execve-v strace test. */
-#define VERBOSE_EXECVE
+#define VERBOSE 1
 #include "execve.c"
diff --git a/tests/execve.c b/tests/execve.c
index 852eebf..74749e7 100644
--- a/tests/execve.c
+++ b/tests/execve.c
@@ -59,7 +59,7 @@
 	execve(FILENAME, tail_argv, tail_envp);
 	printf("execve(\"%s\""
 	       ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ???]"
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
 	       ", [/* 5 vars, unterminated */]"
@@ -67,7 +67,7 @@
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5]
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       , q_envp[0], q_envp[1], envp[2], envp[3], envp[4]
 #endif
 	       );
@@ -77,28 +77,28 @@
 
 	execve(FILENAME, tail_argv, tail_envp);
 	printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
 	       ", [/* 2 vars */]"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       , q_envp[0], q_envp[1]
 #endif
 	       );
 
 	execve(FILENAME, tail_argv + 2, tail_envp + 1);
 	printf("execve(\"%s\", [\"%s\"]"
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       ", [\"%s\"]"
 #else
 	       ", [/* 1 var */]"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[2]
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       , q_envp[1]
 #endif
 	       );
@@ -109,7 +109,7 @@
 
 	execve(FILENAME, empty, empty);
 	printf("execve(\"%s\", []"
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	       ", []"
 #else
 	       ", [/* 0 vars */]"
@@ -132,12 +132,12 @@
 	printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
 	for (i = 1; i < DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", a[i]);
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	printf(", \"%s\"", a[i]);
 #else
 	printf(", ...");
 #endif
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
@@ -150,7 +150,7 @@
 	printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", a[i]);
-#ifdef VERBOSE_EXECVE
+#if VERBOSE
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
diff --git a/tests/execveat-v.c b/tests/execveat-v.c
index 530ddfc..ff4de2e 100644
--- a/tests/execveat-v.c
+++ b/tests/execveat-v.c
@@ -1,3 +1,3 @@
 /* This file is part of execveat-v strace test. */
-#define VERBOSE_EXECVEAT
+#define VERBOSE 1
 #include "execveat.c"
diff --git a/tests/execveat.c b/tests/execveat.c
index 972fc17..4e444a2 100644
--- a/tests/execveat.c
+++ b/tests/execveat.c
@@ -30,7 +30,7 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_execveat
 
@@ -62,7 +62,7 @@
 	syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
 	printf("execveat(AT_FDCWD, \"%s\""
 	       ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ???]"
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
 	       ", [/* 5 vars, unterminated */]"
@@ -70,7 +70,7 @@
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5],
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
 #endif
 	       errno2name());
@@ -80,28 +80,28 @@
 
 	syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
 	printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
 	       ", [/* 2 vars */]"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       q_envp[0], q_envp[1],
 #endif
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100);
 	printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]"
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       ", [\"%s\"]"
 #else
 	       ", [/* 1 var */]"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[2],
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       q_envp[1],
 #endif
 	       errno2name());
@@ -112,7 +112,7 @@
 
 	syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100);
 	printf("execveat(AT_FDCWD, \"%s\", []"
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	       ", []"
 #else
 	       ", [/* 0 vars */]"
@@ -136,12 +136,12 @@
 	printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
 	for (i = 1; i < DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", a[i]);
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	printf(", \"%s\"", a[i]);
 #else
 	printf(", ...");
 #endif
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
@@ -155,7 +155,7 @@
 	printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", a[i]);
-#ifdef VERBOSE_EXECVEAT
+#if VERBOSE
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
diff --git a/tests/faccessat.c b/tests/faccessat.c
index 06a6ae3..c21039d 100644
--- a/tests/faccessat.c
+++ b/tests/faccessat.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_faccessat
 
diff --git a/tests/signalfd.c b/tests/fadvise.h
similarity index 60%
copy from tests/signalfd.c
copy to tests/fadvise.h
index 7b1d6ce..bc79091 100644
--- a/tests/signalfd.c
+++ b/tests/fadvise.h
@@ -1,5 +1,8 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Common definitions for fadvise64 and fadvise64_64 tests.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,30 +28,37 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "tests.h"
-#include <fcntl.h>
+#ifndef STRACE_TESTS_FADVISE_H
+#define STRACE_TESTS_FADVISE_H
 
-#if defined HAVE_SYS_SIGNALFD_H && defined HAVE_SIGNALFD && defined O_CLOEXEC
-
-# include <signal.h>
+# include <limits.h>
+# include <stdio.h>
 # include <unistd.h>
-# include <sys/signalfd.h>
+
+# include "xlat.h"
+# include "xlat/advise.h"
+
+# if WORDS_BIGENDIAN
+#  define LL_PAIR(HI, LO) (HI), (LO)
+# else
+#  define LL_PAIR(HI, LO) (LO), (HI)
+# endif
+# define LL_VAL_TO_PAIR(llval) LL_PAIR((long) ((llval) >> 32), (long) (llval))
+
+static void do_fadvise(long fd, long long offset, long long llen, long advice);
 
 int
 main(void)
 {
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-	(void) close(0);
-	if (signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK))
-		perror_msg_and_skip("signalfd");
+	static const long bogus_fd = (long) 0xfeedf00dbeeffaceULL;
+	static const long long bogus_offset = 0xbadc0dedda7a1057ULL;
+	static const long long bogus_len = 0xbadfaceca7b0d1e5ULL;
+	static const long bogus_advice = (long) 0xf00dfeeddeadca75ULL;
+
+	do_fadvise(bogus_fd, bogus_offset, bogus_len, bogus_advice);
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
-#else
-
-SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
-
-#endif
+#endif /* !STRACE_TESTS_FADVISE_H */
diff --git a/tests/fadvise64.c b/tests/fadvise64.c
new file mode 100644
index 0000000..02d7394
--- /dev/null
+++ b/tests/fadvise64.c
@@ -0,0 +1,76 @@
+/*
+ * Check decoding of fadvise64 syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_fadvise64
+
+# include "fadvise.h"
+
+static void
+do_fadvise(long fd, long long offset, long long llen, long advice)
+{
+	long ret;
+	const char *errstr;
+
+# if (LONG_MAX > INT_MAX) \
+  || (defined __x86_64__ && defined __ILP32__) \
+  || defined LINUX_MIPSN32
+	ret = syscall(__NR_fadvise64, fd, offset, llen, advice);
+	errstr = sprintrc(ret);
+	printf("fadvise64(%d, %lld, %llu, ", (int) fd, offset, llen);
+# elif defined LINUX_MIPSO32
+	ret = syscall(__NR_fadvise64, fd, 0,
+		      LL_VAL_TO_PAIR(offset), LL_VAL_TO_PAIR(llen), advice);
+	errstr = sprintrc(ret);
+	printf("fadvise64(%d, %lld, %lld, ", (int) fd, offset, llen);
+# else /* LONG_MAX == INT_MAX && !X32 && !LINUX_MIPSN32 */
+	long len = (long) llen;
+#  if defined POWERPC
+	ret = syscall(__NR_fadvise64, fd, 0,
+		      LL_VAL_TO_PAIR(offset), len, advice);
+#  else
+	ret = syscall(__NR_fadvise64, fd,
+		      LL_VAL_TO_PAIR(offset), len, advice);
+#  endif
+	errstr = sprintrc(ret);
+	printf("fadvise64(%d, %lld, %lu, ", (int) fd, offset, len);
+# endif /* LONG_MAX == INT_MAX && !X32 && !LINUX_MIPSN32 */
+	printxval(advise, (unsigned) advice, "POSIX_FADV_???");
+	printf(") = %s\n", errstr);
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fadvise64");
+
+#endif
diff --git a/tests/fadvise64.test b/tests/fadvise64.test
new file mode 100755
index 0000000..9f74672
--- /dev/null
+++ b/tests/fadvise64.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of fadvise64 syscall.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -e $NAME $args > "$EXP"
+check_prog grep
+grep -v "^$NAME([0123]," < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/fadvise64_64.c b/tests/fadvise64_64.c
new file mode 100644
index 0000000..69b1c7f
--- /dev/null
+++ b/tests/fadvise64_64.c
@@ -0,0 +1,74 @@
+/*
+ * Check decoding of fadvise64_64 syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __arm__
+# ifdef __NR_arm_fadvise64_64
+#  undef __NR_fadvise64_64
+#  define __NR_fadvise64_64 __NR_arm_fadvise64_64
+# endif /* __NR_arm_fadvise64_64 */
+#endif /* __arm__ */
+
+#ifdef __NR_fadvise64_64
+
+# include "fadvise.h"
+
+static void
+do_fadvise(long fd, long long offset, long long llen, long advice)
+{
+	long ret;
+	const char *errstr;
+
+# if (LONG_MAX > INT_MAX) \
+  || (defined __x86_64__ && defined __ILP32__) \
+  || defined LINUX_MIPSN32
+	ret = syscall(__NR_fadvise64_64, fd, offset, llen, advice);
+# elif defined __ARM_EABI__ || defined POWERPC || defined XTENSA
+	ret = syscall(__NR_fadvise64_64, fd, advice,
+		      LL_VAL_TO_PAIR(offset), LL_VAL_TO_PAIR(llen));
+# else
+	ret = syscall(__NR_fadvise64_64, fd,
+		      LL_VAL_TO_PAIR(offset), LL_VAL_TO_PAIR(llen), advice);
+# endif
+	errstr = sprintrc(ret);
+
+	printf("fadvise64_64(%d, %lld, %lld, ", (int) fd, offset, llen);
+	printxval(advise, (unsigned) advice, "POSIX_FADV_???");
+	printf(") = %s\n", errstr);
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fadvise64_64");
+
+#endif
diff --git a/tests/fadvise64_64.test b/tests/fadvise64_64.test
new file mode 100755
index 0000000..a50fe2b
--- /dev/null
+++ b/tests/fadvise64_64.test
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# Check decoding of fadvise64_64 syscall.
+
+. "${srcdir=.}/fadvise64.test"
diff --git a/tests/fallocate.c b/tests/fallocate.c
new file mode 100644
index 0000000..40ac244
--- /dev/null
+++ b/tests/fallocate.c
@@ -0,0 +1,75 @@
+/*
+ * Check decoding of fallocate syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_fallocate) && defined(HAVE_FALLOCATE) && HAVE_FALLOCATE
+
+# include <errno.h>
+# include <fcntl.h>
+# include <stdio.h>
+
+# include "xlat.h"
+# include "xlat/falloc_flags.h"
+
+int
+main(void)
+{
+	static const int bogus_fd = 0xbeefface;
+	static const int bogus_mode = 0xdeadca75;
+	static const off_t bogus_offset = (off_t) 0xbadc0dedda7a1057LLU;
+	static const off_t bogus_len = (off_t) 0xbadfaceca7b0d1e5LLU;
+
+	long rc = fallocate(bogus_fd, bogus_mode, bogus_offset, bogus_len);
+	/*
+	 * Workaround a bug fixed by commit glibc-2.11-346-gde240a0.
+	 */
+	if (rc > 0) {
+		errno = rc;
+		rc = -1;
+	}
+	const char *errstr = sprintrc(rc);
+
+	printf("fallocate(%d, ", bogus_fd);
+	printflags(falloc_flags, (unsigned) bogus_mode, "FALLOC_FL_???");
+	printf(", %lld, %lld) = %s\n",
+	       (long long) bogus_offset, (long long) bogus_len, errstr);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fallocate && HAVE_FALLOCATE");
+
+#endif
diff --git a/tests/fallocate.test b/tests/fallocate.test
new file mode 100755
index 0000000..405187e
--- /dev/null
+++ b/tests/fallocate.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check getcwd syscall decoding.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fanotify_mark.c b/tests/fanotify_mark.c
index e467bf0..9cac5ef 100644
--- a/tests/fanotify_mark.c
+++ b/tests/fanotify_mark.c
@@ -2,12 +2,18 @@
 
 #if defined HAVE_SYS_FANOTIFY_H && defined HAVE_FANOTIFY_MARK
 
+# include <stdio.h>
 # include <sys/fanotify.h>
 
 int
 main(void)
 {
-	fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -100, ".");
+	int rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+			       -100, ".");
+	printf("fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY|FAN_ONDIR"
+	       ", AT_FDCWD, \".\") = %d %s (%m)\n", rc, errno2name());
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests/fanotify_mark.expected b/tests/fanotify_mark.expected
deleted file mode 100644
index d2bb336..0000000
--- a/tests/fanotify_mark.expected
+++ /dev/null
@@ -1 +0,0 @@
-fanotify_mark\(-1, FAN_MARK_ADD, FAN_MODIFY\|FAN_ONDIR, AT_FDCWD, "\."\) += -1.*
diff --git a/tests/fanotify_mark.test b/tests/fanotify_mark.test
index 4b7749a..84b3c83 100755
--- a/tests/fanotify_mark.test
+++ b/tests/fanotify_mark.test
@@ -1,11 +1,6 @@
 #!/bin/sh
 
-# Check fanotify_mark syscall decoding.
+# Check decoding of fanotify_mark syscall.
 
 . "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -efanotify_mark $args
-match_grep
-
-exit 0
+run_strace_match_diff
diff --git a/tests/fchdir.c b/tests/fchdir.c
index 7306d4d..5808872 100644
--- a/tests/fchdir.c
+++ b/tests/fchdir.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fchdir
 
diff --git a/tests/fchmod.c b/tests/fchmod.c
index 57fefa1..932d083 100644
--- a/tests/fchmod.c
+++ b/tests/fchmod.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of fchmod syscall.
+ *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,14 +29,14 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
-#if defined __NR_fchmod
+#ifdef __NR_fchmod
 
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <unistd.h>
+# include <fcntl.h>
+# include <sys/stat.h>
+# include <stdio.h>
+# include <unistd.h>
 
 int
 main(void)
@@ -41,22 +44,22 @@
 	static const char fname[] = "fchmod_test_file";
 
 	int fd = open(fname, O_CREAT|O_RDONLY, 0400);
-
-	if (fd == -1)
+	if (fd < 0)
 		perror_msg_and_fail("open");
 
-	if (unlink(fname) == -1)
+	if (unlink(fname))
 		perror_msg_and_fail("unlink");
 
-	if (syscall(__NR_fchmod, fd, 0600) == 0) {
-		close(fd);
+	long rc = syscall(__NR_fchmod, fd, 0600);
+	printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
 
-		printf("fchmod(%d, 0600) = 0\n", fd);
+	close(fd);
 
-		if (syscall(__NR_fchmod, fd, 0600) != -1)
-			perror_msg_and_fail("fchmod");
-	}
-	printf("fchmod(%d, 0600) = -1 %s (%m)\n", fd, errno2name());
+	rc = syscall(__NR_fchmod, fd, 051);
+	printf("fchmod(%d, 051) = %s\n", fd, sprintrc(rc));
+
+	rc = syscall(__NR_fchmod, fd, 004);
+	printf("fchmod(%d, 004) = %s\n", fd, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/fchmod.test b/tests/fchmod.test
index 32ad456..4cb1263 100755
--- a/tests/fchmod.test
+++ b/tests/fchmod.test
@@ -3,4 +3,4 @@
 # Check fchmod syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a15
diff --git a/tests/fchmodat.c b/tests/fchmodat.c
index 2ae613e..c52a1ca 100644
--- a/tests/fchmodat.c
+++ b/tests/fchmodat.c
@@ -28,11 +28,12 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fchmodat
 
 # include <fcntl.h>
+# include <sys/stat.h>
 # include <stdio.h>
 # include <unistd.h>
 
@@ -41,21 +42,23 @@
 {
 	static const char sample[] = "fchmodat_sample";
 
-	if (open(sample, O_RDONLY | O_CREAT, 0400) == -1)
+	if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
 		perror_msg_and_fail("open");
 
-	if (syscall(__NR_fchmodat, -100, sample, 0600) == 0) {
-		printf("fchmodat(AT_FDCWD, \"%s\", 0600) = 0\n", sample);
+	long rc = syscall(__NR_fchmodat, -100, sample, 0600);
+	printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n",
+	       sample, sprintrc(rc));
 
-		if (unlink(sample))
-			perror_msg_and_fail("unlink");
+	if (unlink(sample))
+		perror_msg_and_fail("unlink");
 
-		if (syscall(__NR_fchmodat, -100, sample, 0600) != -1)
-			perror_msg_and_fail("fchmodat");
-	}
+	rc = syscall(__NR_fchmodat, -100, sample, 051);
+	printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n",
+	       sample, sprintrc(rc));
 
-	printf("fchmodat(AT_FDCWD, \"%s\", 0600) = -1 %s (%m)\n",
-	       sample, errno2name());
+	rc = syscall(__NR_fchmodat, -100, sample, 004);
+	printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n",
+	       sample, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/fchown.c b/tests/fchown.c
index 53a522e..d711903 100644
--- a/tests/fchown.c
+++ b/tests/fchown.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fchown
 
diff --git a/tests/fchown32.c b/tests/fchown32.c
index 0927b56..2d9d60f 100644
--- a/tests/fchown32.c
+++ b/tests/fchown32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fchown32
 
diff --git a/tests/fchownat.c b/tests/fchownat.c
index 9a0ecc8..f2f37ae 100644
--- a/tests/fchownat.c
+++ b/tests/fchownat.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <fcntl.h>
 
 #if defined __NR_fchownat && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW
@@ -47,22 +47,16 @@
 		perror_msg_and_fail("open");
 
 	long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0);
-	if (rc == 0) {
-		printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = 0\n",
-		       sample, uid, gid);
+	printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n",
+	       sample, uid, gid, sprintrc(rc));
 
-		if (unlink(sample))
-			perror_msg_and_fail("unlink");
+	if (unlink(sample))
+		perror_msg_and_fail("unlink");
 
-		rc = syscall(__NR_fchownat, AT_FDCWD,
-			     sample, -1, -1L, AT_SYMLINK_NOFOLLOW);
-
-		printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW)"
-		       " = %ld %s (%m)\n", sample, rc, errno2name());
-	} else {
-		printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0)"
-		       " = %ld %s (%m)\n", sample, uid, gid, rc, errno2name());
-	}
+	rc = syscall(__NR_fchownat, AT_FDCWD,
+		     sample, -1, -1L, AT_SYMLINK_NOFOLLOW);
+	printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+	       sample, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/fcntl.c b/tests/fcntl.c
index 1ea83e1..4ae5beb 100644
--- a/tests/fcntl.c
+++ b/tests/fcntl.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fcntl
 
@@ -59,7 +59,10 @@
 #if !defined(F_GETOWN_EX) || F_GETOWN_EX != F_SETLK64
 	TEST_FLOCK64_EINVAL(F_SETLK64);
 #endif
+/* F_GETLK and F_SETLKW64 have conflicting values on mips64 */
+#if !defined(__mips64) || F_GETLK != F_SETLKW64
 	TEST_FLOCK64_EINVAL(F_SETLKW64);
+#endif
 #if !defined(F_SETOWN_EX) || F_SETOWN_EX != F_GETLK64
 	TEST_FLOCK64_EINVAL(F_GETLK64);
 #endif
diff --git a/tests/fcntl64.c b/tests/fcntl64.c
index b83a098..ff6a531 100644
--- a/tests/fcntl64.c
+++ b/tests/fcntl64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fcntl64
 
diff --git a/tests/fdatasync.c b/tests/fdatasync.c
index 86f1cfa..c47a0bf 100644
--- a/tests/fdatasync.c
+++ b/tests/fdatasync.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fdatasync
 
diff --git a/tests/flock.c b/tests/flock.c
index d6e2008..cb231d5 100644
--- a/tests/flock.c
+++ b/tests/flock.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_flock
 
diff --git a/tests/fstat.c b/tests/fstat.c
index 0206c9f..9ddc811 100644
--- a/tests/fstat.c
+++ b/tests/fstat.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fstat
 
diff --git a/tests/fstat64.c b/tests/fstat64.c
index 59c94a2..cf147df 100644
--- a/tests/fstat64.c
+++ b/tests/fstat64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fstat64
 
@@ -34,6 +34,7 @@
 # define TEST_SYSCALL_STR "fstat64"
 # define STRUCT_STAT struct stat64
 # define STRUCT_STAT_STR "struct stat64"
+# define STRUCT_STAT_IS_STAT64 1
 # define SAMPLE_SIZE ((libc_off_t) 43147718418)
 # include "fstatx.c"
 
diff --git a/tests/fstatat64.c b/tests/fstatat64.c
index 1bf95c1..fa8992d 100644
--- a/tests/fstatat64.c
+++ b/tests/fstatat64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fstatat64
 
diff --git a/tests/fstatfs.c b/tests/fstatfs.c
index 7ff39dc..9e68c8d 100644
--- a/tests/fstatfs.c
+++ b/tests/fstatfs.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fstatfs
 
diff --git a/tests/fstatfs64.c b/tests/fstatfs64.c
index 6c59974..afc54aa 100644
--- a/tests/fstatfs64.c
+++ b/tests/fstatfs64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fstatfs64
 
diff --git a/tests/fsync.c b/tests/fsync.c
index 911c167..42aa5c7 100644
--- a/tests/fsync.c
+++ b/tests/fsync.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_fsync
 
diff --git a/tests/ftruncate.c b/tests/ftruncate.c
index db8388b..315f7bf 100644
--- a/tests/ftruncate.c
+++ b/tests/ftruncate.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_ftruncate
 
diff --git a/tests/ftruncate64.c b/tests/ftruncate64.c
index 0b13eaf..7530e70 100644
--- a/tests/ftruncate64.c
+++ b/tests/ftruncate64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_ftruncate64
 
diff --git a/tests/futex.c b/tests/futex.c
new file mode 100644
index 0000000..7cc6cc4
--- /dev/null
+++ b/tests/futex.c
@@ -0,0 +1,708 @@
+/*
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_futex
+
+# include <errno.h>
+# include <stdarg.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# include <sys/time.h>
+
+# ifndef FUTEX_PRIVATE_FLAG
+#  define FUTEX_PRIVATE_FLAG 128
+# endif
+# ifndef FUTEX_CLOCK_REALTIME
+#  define FUTEX_CLOCK_REALTIME 256
+# endif
+# ifndef FUTEX_CMD_MASK
+#  define FUTEX_CMD_MASK ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
+# endif
+
+# include "xlat.h"
+# include "xlat/futexops.h"
+# include "xlat/futexwakeops.h"
+# include "xlat/futexwakecmps.h"
+
+static struct timespec *tmout;
+
+void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
+	int *uaddr2, unsigned long val3, int rc)
+{
+	perror_msg_and_fail("futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
+		uaddr, op, (unsigned) val, timeout, uaddr, (unsigned) val3, rc);
+}
+
+# define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
+	enosys) \
+	do { \
+		rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \
+			(uaddr2), (val3)); \
+		/* It is here due to EPERM on WAKE_OP on AArch64 */ \
+		if ((rc == -1) && (errno == EPERM)) \
+			break; \
+		if (enosys && (rc == -1) && (errno == ENOSYS)) \
+			break; \
+		if (!(check)) \
+			futex_error((uaddr), (op), (val), \
+				(unsigned long) (timeout), (int *) (uaddr2), \
+				(val3), rc); \
+	} while (0)
+
+# define CHECK_FUTEX_ENOSYS(uaddr, op, val, timeout, uaddr2, val3, check) \
+	CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, 1)
+
+# define CHECK_FUTEX(uaddr, op, val, timeout, uaddr2, val3, check) \
+	CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, 0)
+
+enum argmask {
+	ARG3 = 1 << 0,
+	ARG4 = 1 << 1,
+	ARG5 = 1 << 2,
+	ARG6 = 1 << 3,
+};
+
+void invalid_op(int *val, int op, uint32_t argmask, ...)
+{
+	static const unsigned long args[] = {
+		(unsigned long) 0xface1e55deadbee1ULL,
+		(unsigned long) 0xface1e56deadbee2ULL,
+		(unsigned long) 0xface1e57deadbee3ULL,
+		(unsigned long) 0xface1e58deadbee4ULL,
+	};
+	/* Since timeout value is copied before full op check, we should provide
+	 * some valid timeout address or NULL */
+	int cmd = op & FUTEX_CMD_MASK;
+	bool valid_timeout = (cmd == FUTEX_WAIT) || (cmd == FUTEX_LOCK_PI) ||
+		(cmd == FUTEX_WAIT_BITSET) || (cmd == FUTEX_WAIT_REQUEUE_PI);
+	bool timeout_is_val2 = (cmd == FUTEX_REQUEUE) ||
+		(cmd == FUTEX_CMP_REQUEUE) || (cmd == FUTEX_WAKE_OP) ||
+		(cmd == FUTEX_CMP_REQUEUE_PI);
+	const char *fmt;
+	int saved_errno;
+	int rc;
+	int i;
+	va_list ap;
+
+
+	CHECK_FUTEX(val, op, args[0], valid_timeout ? 0 : args[1], args[2],
+		args[3], (rc == -1) && (errno == ENOSYS));
+	saved_errno = errno;
+	printf("futex(%p, %#x /* FUTEX_??? */", val, op);
+
+	va_start(ap, argmask);
+
+	for (i = 0; i < 4; i++) {
+		if (argmask & (1 << i)) {
+			fmt = va_arg(ap, const char *);
+
+			printf(", ");
+
+			if (((1 << i) == ARG3) || ((1 << i) == ARG6) ||
+			    (((1 << i) == ARG4) && timeout_is_val2))
+				printf(fmt, (unsigned) args[i]);
+			else
+				printf(fmt, args[i]);
+		}
+	}
+
+	va_end(ap);
+
+	errno = saved_errno;
+	printf(") = -1 ENOSYS (%m)\n");
+}
+
+# define CHECK_INVALID_CLOCKRT(op, ...) \
+	do { \
+		invalid_op(uaddr, FUTEX_CLOCK_REALTIME | (op), __VA_ARGS__); \
+		invalid_op(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG | \
+			(op), __VA_ARGS__); \
+	} while (0)
+
+/* Value which differs from one stored in int *val */
+# define VAL     ((unsigned long) 0xbadda7a0facefeedLLU)
+# define VAL_PR  ((unsigned) VAL)
+
+# define VAL2    ((unsigned long) 0xbadda7a0ca7b100dLLU)
+# define VAL2_PR ((unsigned) VAL2)
+
+# define VAL3    ((unsigned long) 0xbadda7a09caffee1LLU)
+# define VAL3_PR ((unsigned) VAL3)
+
+int
+main(int argc, char *argv[])
+{
+	int *uaddr = tail_alloc(sizeof(*uaddr));
+	int *uaddr2 = tail_alloc(sizeof(*uaddr2));
+	int rc;
+	unsigned i;
+	unsigned j;
+
+	uaddr[0] = 0x1deadead;
+	uaddr2[0] = 0xbadf00d;
+
+	tmout = tail_alloc(sizeof(*tmout));
+	tmout->tv_sec = 123;
+	tmout->tv_nsec = 0xbadc0de;
+
+	/* FUTEX_WAIT - check whether uaddr == val and sleep
+	 * Possible flags: PRIVATE, CLOCK_RT (since 4.5)
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_WAIT
+	 * 3. val     - expected value
+	 * 4. timeout - address to timespec with timeout
+	 * 5. uaddr2  - not used
+	 * 6. val3    - not used
+	 */
+
+	/* uaddr is NULL */
+	CHECK_FUTEX(NULL, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EFAULT));
+	printf("futex(NULL, FUTEX_WAIT, %u, {%jd, %jd}) = %s\n",
+		VAL_PR, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
+		sprintrc(rc));
+
+	/* uaddr is faulty */
+	CHECK_FUTEX(uaddr + 1, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_WAIT, %u, {%jd, %jd}) = %s\n",
+		uaddr + 1, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+
+	/* timeout is faulty */
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout + 1, uaddr2, VAL3,
+		(rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_WAIT, %u, %p) = %s\n",
+		uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+
+	/* uaddr is not as provided; uaddr2 is faulty but ignored */
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2 + 1, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT, %u, {%jd, %jd}) = %s\n",
+		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+
+	/* uaddr is not as provided; uaddr2 is faulty but ignored */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT, VAL, tmout,
+		uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {%jd, %jd}) = %s\n",
+		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+
+	/* Next 2 tests are with CLOCKRT bit set */
+
+	/* Valid after v4.4-rc2-27-g337f130 */
+	CHECK_FUTEX_ENOSYS(uaddr,
+		FUTEX_CLOCK_REALTIME | FUTEX_WAIT,
+		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u, "
+		"{%jd, %jd}) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
+		sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr,
+		FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG | FUTEX_WAIT ,
+		VAL, tmout, uaddr2, 0, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
+		"{%jd, %jd}) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
+		sprintrc(rc));
+
+	/* FUTEX_WAIT_BITSET - FUTEX_WAIT which provides additional bitmask
+	 *                     which should be matched at least in one bit with
+	 *                     wake mask in order to wake.
+	 * Possible flags: PRIVATE, CLOCKRT
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_TRYLOCK_PI
+	 * 3. val     - expected value stored in uaddr
+	 * 4. timeout - timeout
+	 * 5. uaddr2  - not used
+	 * 6. val3    - bitmask
+	 */
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1,
+		VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {%jd, %jd}, %#x) = %s\n",
+		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+
+	/* val3 of 0 is invalid  */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, 0,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {%jd, %jd}, %#x) = %s\n",
+		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, 0, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_BITSET, VAL,
+		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u, {%jd, %jd}, %#x) = "
+		"%s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+
+	/* Next 3 tests are with CLOCKRT bit set */
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
+		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
+		"{%jd, %jd}, %#x) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
+		sprintrc(rc));
+
+	/* val3 of 0 is invalid  */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
+		tmout, uaddr2 + 1, 0, (rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
+		"{%jd, %jd}, %#x) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, 0,
+		sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
+		FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
+		"{%jd, %jd}, %#x) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
+		sprintrc(rc));
+
+	/* FUTEX_WAKE - wake val processes waiting for uaddr
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_WAKE
+	 * 3. val     - how many processes to wake
+	 * 4. timeout - not used
+	 * 5. uaddr2  - not used
+	 * 6. val3    - not used
+	 */
+
+	/* Zero processes to wake is not a good idea, but it should return 0 */
+	CHECK_FUTEX(uaddr, FUTEX_WAKE, 0, NULL, NULL, 0, (rc == 0));
+	printf("futex(%p, FUTEX_WAKE, %u) = %s\n", uaddr, 0, sprintrc(rc));
+
+	/* Trying to wake some processes, but there's nothing to wake */
+	CHECK_FUTEX(uaddr, FUTEX_WAKE, 10, NULL, NULL, 0, (rc == 0));
+	printf("futex(%p, FUTEX_WAKE, %u) = %s\n", uaddr, 10, sprintrc(rc));
+
+	/* Trying to wake some processes, but there's nothing to wake */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAKE, 10, NULL,
+		NULL, 0, (rc == 0));
+	printf("futex(%p, FUTEX_WAKE_PRIVATE, %u) = %s\n", uaddr, 10,
+		sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_WAKE, ARG3, "%u");
+
+	/* FUTEX_WAKE_BITSET - wake val processes waiting for uaddr which has at
+	 *                     least one common bit with bitset provided in
+	 *                     val3.
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_WAKE
+	 * 3. val     - how many processes to wake
+	 * 4. timeout - not used
+	 * 5. uaddr2  - not used
+	 * 6. val3    - bitmask
+	 */
+
+	/* Trying to wake some processes, but there's nothing to wake */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAKE_BITSET, 10, NULL, NULL,
+		VAL3, (rc == 0));
+	printf("futex(%p, FUTEX_WAKE_BITSET, %u, %#x) = %s\n", uaddr, 10,
+		VAL3_PR, sprintrc(rc));
+
+	/* bitset 0 is invalid */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAKE_BITSET, 10, NULL, NULL, 0,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAKE_BITSET, %u, %#x) = %s\n", uaddr, 10, 0,
+		sprintrc(rc));
+
+	/* Trying to wake some processes, but there's nothing to wake */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAKE_BITSET, 10,
+		NULL, NULL, VAL3, (rc == 0));
+	printf("futex(%p, FUTEX_WAKE_BITSET_PRIVATE, %u, %#x) = %s\n", uaddr,
+		10, VAL3_PR, sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_WAKE_BITSET, ARG3 | ARG6, "%u", "%#x");
+
+	/* FUTEX_FD - deprecated
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_FD
+	 * 3. val     - signal number
+	 * 4. timeout - not used
+	 * 5. uaddr2  - not used
+	 * 6. val3    - not used
+	 */
+
+	/* FUTEX_FD is not implemented since 2.6.26 */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_FD, VAL, NULL, NULL, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_FD, %u) = %s\n", uaddr, VAL_PR, sprintrc(rc));
+
+	/* FUTEX_FD is not implemented since 2.6.26 */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_FD, VAL, NULL,
+		NULL, VAL3, (rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_FD|FUTEX_PRIVATE_FLAG, %u) = %s\n", uaddr,
+		VAL_PR, sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_FD, ARG3, "%u");
+
+	/* FUTEX_REQUEUE - wake val processes and re-queue rest on uaddr2
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_REQUEUE
+	 * 3. val     - how many processes to wake
+	 * 4. val2    - amount of processes to re-queue on uadr2
+	 * 5. uaddr2  - another futex address, to re-queue waiting processes on
+	 * 6. val3    - not used
+	 */
+
+	/* Trying to re-queue some processes but there's nothing to re-queue */
+	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VAL, VAL2, uaddr2, VAL3,
+		(rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
+
+	/* Trying to re-queue some processes but there's nothing to re-queue */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_REQUEUE, VAL, VAL2,
+		uaddr2, VAL3, (rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_REQUEUE, ARG3 | ARG4 | ARG5, "%u", "%u",
+		"%#lx");
+
+	/* FUTEX_CMP_REQUEUE - wake val processes and re-queue rest on uaddr2
+	 *                     if uaddr has value val3
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_CMP_REQUEUE
+	 * 3. val     - how many processes to wake
+	 * 4. val2    - amount of processes to re-queue on uadr2
+	 * 5. uaddr2  - another futex address, to re-queue waiting processes on
+	 * 6. val3    - expected value stored in uaddr
+	 */
+
+	/* Comparison re-queue with wrong val value */
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, VAL3_PR, sprintrc(rc));
+
+	/* Successful comparison re-queue */
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, *uaddr,
+		(rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
+
+	/* Successful comparison re-queue */
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_CMP_REQUEUE, VAL,
+		VAL2, uaddr2, *uaddr, (rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %u, %u, %p, %u) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_CMP_REQUEUE, ARG3 | ARG4 | ARG5 | ARG6,
+		"%u", "%u", "%#lx", "%u");
+
+	/* FUTEX_WAKE_OP - wake val processes waiting for uaddr, additionally
+	 *                 wake val2 processes waiting for uaddr2 in case
+	 *                 operation encoded in val3 (change of value at uaddr2
+	 *                 and comparison of previous value against provided
+	 *                 constant) succeedes with value at uaddr2. Operation
+	 *                 result is written to value of uaddr2 (in any case).
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_WAKE_OP
+	 * 3. val     - how many processes to wake
+	 * 4. val2    - amount of processes to wake in case operation encoded in
+	 *              val3 returns true
+	 * 5. uaddr2  - another futex address, for conditional wake of
+	 *              additional processes
+	 * 6. val3    - encoded operation:
+	 *                1. bit 31 - if 1 then value stored in field field 4
+	 *                            should be interpreted as power of 2.
+	 *                2. 28..30 - arithmetic operation which should be
+	 *                            applied to previous value stored in
+	 *                            uaddr2. Values available (from 2005 up to
+	 *                            2016): SET. ADD, OR, ANDN, XOR.
+	 *                3. 24..29 - comparison operation which should be
+	 *                            applied to the old value stored in uaddr2
+	 *                            (before arithmetic operation is applied).
+	 *                            Possible values: EQ, NE, LT, LE, GT, GE.
+	 *                4. 12..23 - Second operand for arithmetic operation.
+	 *                            If bit 31 is set, it is interpreted as
+	 *                            power of 2.
+	 *                5. 00..11 - Value against which old value stored in
+	 *                            uaddr2 is compared.
+	 */
+
+	static const struct {
+		uint32_t val;
+		const char *str;
+		int err;
+		const char *errstr;
+	} wake_ops[] = {
+		{ 0x00000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 0}" },
+		{ 0x00fff000, "{FUTEX_OP_SET, 4095, FUTEX_OP_CMP_EQ, 0}" },
+		{ 0x00000fff, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 4095}" },
+		{ 0x00ffffff, "{FUTEX_OP_SET, 4095, FUTEX_OP_CMP_EQ, 4095}" },
+		{ 0x10000000, "{FUTEX_OP_ADD, 0, FUTEX_OP_CMP_EQ, 0}" },
+		{ 0x20000000, "{FUTEX_OP_OR, 0, FUTEX_OP_CMP_EQ, 0}" },
+		{ 0x30000000, "{FUTEX_OP_ANDN, 0, FUTEX_OP_CMP_EQ, 0}" },
+		{ 0x40000000, "{FUTEX_OP_XOR, 0, FUTEX_OP_CMP_EQ, 0}" },
+		{ 0x50000000, "{0x5 /* FUTEX_OP_??? */, 0, FUTEX_OP_CMP_EQ, 0}",
+			ENOSYS, "ENOSYS" },
+		{ 0x70000000, "{0x7 /* FUTEX_OP_??? */, 0, FUTEX_OP_CMP_EQ, 0}",
+			ENOSYS, "ENOSYS" },
+		{ 0x80000000, "{FUTEX_OP_OPARG_SHIFT|FUTEX_OP_SET, 0, "
+			"FUTEX_OP_CMP_EQ, 0}" },
+		{ 0xa0caffee, "{FUTEX_OP_OPARG_SHIFT|FUTEX_OP_OR, 3247, "
+			"FUTEX_OP_CMP_EQ, 4078}" },
+		{ 0x01000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_NE, 0}" },
+		{ 0x01234567, "{FUTEX_OP_SET, 564, FUTEX_OP_CMP_NE, 1383}" },
+		{ 0x02000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_LT, 0}" },
+		{ 0x03000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_LE, 0}" },
+		{ 0x04000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 0}" },
+		{ 0x05000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_GE, 0}" },
+		{ 0x06000000, "{FUTEX_OP_SET, 0, 0x6 /* FUTEX_OP_CMP_??? */, "
+			"0}", ENOSYS, "ENOSYS" },
+		{ 0x07000000, "{FUTEX_OP_SET, 0, 0x7 /* FUTEX_OP_CMP_??? */, "
+			"0}", ENOSYS, "ENOSYS" },
+		{ 0x08000000, "{FUTEX_OP_SET, 0, 0x8 /* FUTEX_OP_CMP_??? */, "
+			"0}", ENOSYS, "ENOSYS" },
+		{ 0x0f000000, "{FUTEX_OP_SET, 0, 0xf /* FUTEX_OP_CMP_??? */, "
+			"0}", ENOSYS, "ENOSYS" },
+		{ 0xbadfaced, "{FUTEX_OP_OPARG_SHIFT|FUTEX_OP_ANDN, "
+			"3578, 0xa /* FUTEX_OP_CMP_??? */, 3309}", ENOSYS,
+			"ENOSYS" },
+		{ 0xffffffff, "{FUTEX_OP_OPARG_SHIFT|0x7 /* FUTEX_OP_??? */, "
+			"4095, 0xf /* FUTEX_OP_CMP_??? */, 4095}", ENOSYS,
+			"ENOSYS" },
+	};
+
+	for (i = 0; i < ARRAY_SIZE(wake_ops); i++) {
+		for (j = 0; j < 2; j++) {
+			CHECK_FUTEX_ENOSYS(uaddr,
+				j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
+				VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
+			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s) = "
+				"%s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i,
+				uaddr2, wake_ops[i].str, sprintrc(rc));
+		}
+	}
+
+	CHECK_INVALID_CLOCKRT(FUTEX_WAKE_OP, ARG3 | ARG4 | ARG5 | ARG6,
+		"%u", "%u", "%#lx",
+		/* Decoding of the 0xdeadbee4 value */
+		"{FUTEX_OP_OPARG_SHIFT|0x5 /* FUTEX_OP_??? */, 2779, "
+		"0xe /* FUTEX_OP_CMP_??? */, 3812}");
+
+	/* FUTEX_LOCK_PI - slow path for mutex lock with process inheritance
+	 *                 support. Expect that futex has 0 in unlocked case and
+	 *                 TID of owning process in locked case. Value can also
+	 *                 contain FUTEX_WAITERS bit signalling the presence of
+	 *                 waiters queue.
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_LOCK_PI
+	 * 3. val     - not used
+	 * 4. timeout - timeout
+	 * 5. uaddr2  - not used
+	 * 6. val3    - not used
+	 */
+
+	*uaddr = getpid();
+
+	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_LOCK_PI, VAL, tmout, uaddr2 + 1,
+		VAL3, (rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_LOCK_PI, {%jd, %jd}) = %s\n",
+		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
+		sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_LOCK_PI, VAL,
+		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {%jd, %jd}) = %s\n",
+		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
+		sprintrc(rc));
+
+	/* NULL is passed by invalid_op() in cases valid timeout address is
+	 * needed */
+	CHECK_INVALID_CLOCKRT(FUTEX_LOCK_PI, ARG4, "NULL");
+
+	/* FUTEX_UNLOCK_PI - slow path for mutex unlock with process inheritance
+	 *                   support. Expected to be called by process in case
+	 *                   it failed to execute fast path (it usually means
+	 *                   that FUTEX_WAITERS flag had been set while the lock
+	 *                   has been held).
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_UNLOCK_PI
+	 * 3. val     - not used
+	 * 4. timeout - not used
+	 * 5. uaddr2  - not used
+	 * 6. val3    - not used
+	 */
+
+	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_UNLOCK_PI, VAL, tmout, uaddr2 + 1,
+		VAL3, (rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_UNLOCK_PI) = %s\n", uaddr + 1, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_UNLOCK_PI, VAL,
+		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_UNLOCK_PI_PRIVATE) = %s\n", uaddr +1,
+		sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_UNLOCK_PI, 0);
+
+	/* FUTEX_TRYLOCK_PI - slow path for mutex trylock with process
+	 *                 inheritance support.
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_TRYLOCK_PI
+	 * 3. val     - not used
+	 * 4. timeout - not used
+	 * 5. uaddr2  - not used
+	 * 6. val3    - not used
+	 */
+
+	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_TRYLOCK_PI, VAL, tmout, uaddr2 + 1,
+		VAL3, (rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_TRYLOCK_PI) = %s\n", uaddr + 1, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_TRYLOCK_PI,
+		VAL, tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
+	printf("futex(%p, FUTEX_TRYLOCK_PI_PRIVATE) = %s\n", uaddr + 1,
+		sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_TRYLOCK_PI, 0);
+
+	/* FUTEX_WAIT_REQUEUE_PI - kernel-side handling of special case when
+	 *                         processes should be re-queued on PI-aware
+	 *                         futexes. This is so special since PI futexes
+	 *                         utilize rt_mutex and it should be at no time
+	 *                         left free with a wait queue, so this should
+	 *                         be performed atomically in-kernel.
+	 * Possible flags: PRIVATE, CLOCKRT
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_WAIT_REQUEUE_PI
+	 * 3. val     - expected value stored in uaddr
+	 * 4. timeout - timeout
+	 * 5. uaddr2  - (PI-aware) futex address to requeue process on
+	 * 6. val3    - not used (in kernel, it always initialized to
+	 *              FUTEX_BITSET_MATCH_ANY and passed to
+	 *              futex_wait_requeue_pi())
+	 */
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2,
+		VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u, {%jd, %jd}, %p) = %s\n",
+		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_REQUEUE_PI,
+		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u, {%jd, %jd}, %p) "
+		"= %s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_REQUEUE_PI,
+		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u, "
+		"{%jd, %jd}, %p) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
+		sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
+		FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME, "
+		"%u, {%jd, %jd}, %p) = %s\n", uaddr, VAL_PR,
+		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
+		sprintrc(rc));
+
+	/* FUTEX_CMP_REQUEUE_PI - version of FUTEX_CMP_REQUEUE which re-queues
+	 *                        on PI-aware futex.
+	 * Possible flags: PRIVATE
+	 * 1. uaddr   - futex address
+	 * 2. op      - FUTEX_CMP_REQUEUE
+	 * 3. val     - how many processes to wake
+	 * 4. val2    - amount of processes to re-queue on uadr2
+	 * 5. uaddr2  - (PI-aware) futex address, to re-queue waiting processes
+	 *              on
+	 * 6. val3    - expected value stored in uaddr
+	 */
+
+	/* All these should fail with EINVAL since we try to re-queue to  non-PI
+	 * futex.
+	 */
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CMP_REQUEUE_PI, VAL, VAL2, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PI, %u, %u, %p, %u) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, VAL3_PR, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CMP_REQUEUE_PI, VAL, VAL2, uaddr2,
+		*uaddr, (rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PI, %u, %u, %p, %u) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
+
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_CMP_REQUEUE_PI,
+		VAL, VAL2, uaddr2, *uaddr, (rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PI_PRIVATE, %u, %u, %p, %u) = %s\n",
+		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
+
+	CHECK_INVALID_CLOCKRT(FUTEX_CMP_REQUEUE_PI, ARG3 | ARG4 | ARG5 | ARG6,
+		"%u", "%u", "%#lx", "%u");
+
+	/*
+	 * Unknown commands
+	 */
+
+	CHECK_FUTEX(uaddr, 0xd, VAL, tmout + 1, uaddr2 + 1, VAL3,
+		(rc == -1) && (errno == ENOSYS));
+	printf("futex(%p, 0xd /* FUTEX_??? */, %u, %p, %p, %#x) = %s\n",
+		uaddr, VAL_PR, tmout + 1, uaddr2 + 1, VAL3_PR, sprintrc(rc));
+
+	CHECK_FUTEX(uaddr, 0xbefeeded, VAL, tmout + 1, uaddr2, VAL3,
+		(rc == -1) && (errno == ENOSYS));
+	printf("futex(%p, 0xbefeeded /* FUTEX_??? */, %u, %p, %p, %#x) = %s\n",
+		uaddr, VAL_PR, tmout + 1, uaddr2, VAL3_PR, sprintrc(rc));
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_futex")
+
+#endif
diff --git a/tests/futex.test b/tests/futex.test
new file mode 100755
index 0000000..fc98267
--- /dev/null
+++ b/tests/futex.test
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Check futex syscall decoding.
+
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a27
+run_strace_match_diff -v -a27
diff --git a/tests/futimesat.c b/tests/futimesat.c
index 785c894..4e76cc8 100644
--- a/tests/futimesat.c
+++ b/tests/futimesat.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_futimesat
 
diff --git a/tests/get_mempolicy.c b/tests/get_mempolicy.c
index 6923a21..6be3ef2 100644
--- a/tests/get_mempolicy.c
+++ b/tests/get_mempolicy.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_get_mempolicy
 
diff --git a/tests/getcpu.c b/tests/getcpu.c
new file mode 100644
index 0000000..baef1bb
--- /dev/null
+++ b/tests/getcpu.c
@@ -0,0 +1,76 @@
+/*
+ * Check decoding of getcpu syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_getcpu
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	static const unsigned *bogus_cpu =
+		(unsigned *) (unsigned long) 0xfffffeedfffffaceULL;
+	static const unsigned *bogus_node =
+		(unsigned *) (unsigned long) 0xfffffca7ffffc0deULL;
+	static const unsigned *bogus_tcache =
+		(unsigned *) (unsigned long) 0xffffda7affffdeadULL;
+
+	long res;
+	unsigned *cpu = tail_alloc(sizeof(*cpu));
+	unsigned *node = tail_alloc(sizeof(*node));
+	long * tcache = tail_alloc(128);
+
+	res = syscall(__NR_getcpu, NULL, NULL, NULL);
+	printf("getcpu(NULL, NULL, NULL) = %s\n", sprintrc(res));
+
+	res = syscall(__NR_getcpu, bogus_cpu, bogus_node, bogus_tcache);
+	printf("getcpu(%p, %p, %p) = %s\n",
+	       bogus_cpu, bogus_node, bogus_tcache, sprintrc(res));
+
+	res = syscall(__NR_getcpu, cpu, node, tcache);
+	if (res != 0)
+		perror_msg_and_skip("getcpu");
+
+	printf("getcpu([%u], [%u], %p) = 0\n", *cpu, *node, tcache);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getcpu");
+
+#endif
diff --git a/tests/getcpu.test b/tests/getcpu.test
new file mode 100755
index 0000000..fe21265
--- /dev/null
+++ b/tests/getcpu.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of getcpu syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getcwd.c b/tests/getcwd.c
index 3135df2..707c25c 100644
--- a/tests/getcwd.c
+++ b/tests/getcwd.c
@@ -1,6 +1,6 @@
 #include "tests.h"
 
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getcwd
 
@@ -13,6 +13,7 @@
 {
 	long res;
 	char cur_dir[PATH_MAX + 1];
+	static const size_t bogus_size = (size_t) 0xbadc0deddeadfaceULL;
 
 	res = syscall(__NR_getcwd, cur_dir, sizeof(cur_dir));
 
@@ -23,9 +24,15 @@
 	print_quoted_string(cur_dir);
 	printf("\", %zu) = %ld\n", sizeof(cur_dir), res);
 
-	syscall(__NR_getcwd, cur_dir, 0);
+	res = syscall(__NR_getcwd, cur_dir, 0);
+	printf("getcwd(%p, 0) = %s\n", cur_dir, sprintrc(res));
 
-	printf("getcwd(%p, 0) = -1 ERANGE (%m)\n", cur_dir);
+	res = syscall(__NR_getcwd, NULL, bogus_size);
+	printf("getcwd(NULL, %zu) = %s\n", bogus_size, sprintrc(res));
+
+	res = syscall(__NR_getcwd, (void *) -1L, sizeof(cur_dir));
+	printf("getcwd(%p, %zu) = %s\n",
+	       (void *) -1L, sizeof(cur_dir), sprintrc(res));
 
 	puts("+++ exited with 0 +++");
 
diff --git a/tests/getdents.c b/tests/getdents.c
index 7ea2067..5e64234 100644
--- a/tests/getdents.c
+++ b/tests/getdents.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getdents
 
diff --git a/tests/getdents64.c b/tests/getdents64.c
index 54149d2..2243b84 100644
--- a/tests/getdents64.c
+++ b/tests/getdents64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getdents64
 
diff --git a/tests/getegid.c b/tests/getegid.c
index 31e4b44..98f8b9c 100644
--- a/tests/getegid.c
+++ b/tests/getegid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getegid
 
diff --git a/tests/getegid32.c b/tests/getegid32.c
index 7dc358a..d995186 100644
--- a/tests/getegid32.c
+++ b/tests/getegid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getegid32
 
diff --git a/tests/geteuid.c b/tests/geteuid.c
index 0820656..ef8269f 100644
--- a/tests/geteuid.c
+++ b/tests/geteuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_geteuid
 
diff --git a/tests/geteuid32.c b/tests/geteuid32.c
index 7e731d0..4341e46 100644
--- a/tests/geteuid32.c
+++ b/tests/geteuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_geteuid32
 
diff --git a/tests/getgid.c b/tests/getgid.c
index 46969d3..2e06039 100644
--- a/tests/getgid.c
+++ b/tests/getgid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getgid
 
diff --git a/tests/getgid32.c b/tests/getgid32.c
index 11580d0..52e4d76 100644
--- a/tests/getgid32.c
+++ b/tests/getgid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getgid32
 
diff --git a/tests/getgroups.c b/tests/getgroups.c
index d70689c..4abcdef 100644
--- a/tests/getgroups.c
+++ b/tests/getgroups.c
@@ -36,7 +36,7 @@
 #else
 
 # include "tests.h"
-# include <sys/syscall.h>
+# include <asm/unistd.h>
 
 # ifdef __NR_getgroups
 
@@ -95,30 +95,18 @@
 	printf("%s(0, NULL) = %ld\n", SYSCALL_NAME, rc);
 
 	rc = syscall(SYSCALL_NR, -1U, 0);
-	printf("%s(%u, NULL) = %ld %s (%m)\n",
-	       SYSCALL_NAME, -1U, rc, errno2name());
+	printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
 
 	rc = syscall(SYSCALL_NR, -1L, 0);
-	printf("%s(%u, NULL) = %ld %s (%m)\n",
-	       SYSCALL_NAME, -1U, rc, errno2name());
+	printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
 
 	const unsigned int ngroups_max = sysconf(_SC_NGROUPS_MAX);
 
 	rc = syscall(SYSCALL_NR, ngroups_max, 0);
-	if (rc < 0)
-		printf("%s(%u, NULL) = %ld %s (%m)\n",
-		       SYSCALL_NAME, ngroups_max, rc, errno2name());
-	else
-		printf("%s(%u, NULL) = %ld\n",
-		       SYSCALL_NAME, ngroups_max, rc);
+	printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
 	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL | ngroups_max, 0);
-	if (rc < 0)
-		printf("%s(%u, NULL) = %ld %s (%m)\n",
-		       SYSCALL_NAME, ngroups_max, rc, errno2name());
-	else
-		printf("%s(%u, NULL) = %ld\n",
-		       SYSCALL_NAME, ngroups_max, rc);
+	printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
 	/* check how the second argument is decoded */
 	GID_TYPE *const g1 =
@@ -132,9 +120,8 @@
 
 	if (ngroups) {
 		rc = syscall(SYSCALL_NR, ngroups, efault);
-		printf("%s(%u, %p) = %ld %s (%m)\n",
-		       SYSCALL_NAME, (unsigned) ngroups, efault,
-		       rc, errno2name());
+		printf("%s(%u, %p) = %s\n",
+		       SYSCALL_NAME, (unsigned) ngroups, efault, sprintrc(rc));
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/getgroups32.c b/tests/getgroups32.c
index 2576548..d0a356d 100644
--- a/tests/getgroups32.c
+++ b/tests/getgroups32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getgroups32
 
diff --git a/tests/getpgrp.c b/tests/getpgrp.c
index fd3139b..8b9d088 100644
--- a/tests/getpgrp.c
+++ b/tests/getpgrp.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getpgrp
 
diff --git a/tests/getrandom.c b/tests/getrandom.c
index 4c17c29..de1a087 100644
--- a/tests/getrandom.c
+++ b/tests/getrandom.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getrandom
 
diff --git a/tests/getresgid.c b/tests/getresgid.c
index 5827cdd..b8c687b 100644
--- a/tests/getresgid.c
+++ b/tests/getresgid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getresgid
 
diff --git a/tests/getresgid32.c b/tests/getresgid32.c
index ca337d8..71f1134 100644
--- a/tests/getresgid32.c
+++ b/tests/getresgid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getresgid32
 
diff --git a/tests/getresuid.c b/tests/getresuid.c
index bf4ada1..b00f20b 100644
--- a/tests/getresuid.c
+++ b/tests/getresuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getresuid
 
diff --git a/tests/getresuid32.c b/tests/getresuid32.c
index 3154e27..4c9a83d 100644
--- a/tests/getresuid32.c
+++ b/tests/getresuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getresuid32
 
diff --git a/tests/getrlimit.c b/tests/getrlimit.c
index 9fb668d..bd9d0b0 100644
--- a/tests/getrlimit.c
+++ b/tests/getrlimit.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getrlimit
 
diff --git a/tests/getrusage.c b/tests/getrusage.c
index 7fd9823..3c09aa6 100644
--- a/tests/getrusage.c
+++ b/tests/getrusage.c
@@ -27,7 +27,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getrusage
 
diff --git a/tests/getuid.c b/tests/getuid.c
index 25731c8..57311f7 100644
--- a/tests/getuid.c
+++ b/tests/getuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getuid
 
diff --git a/tests/getuid32.c b/tests/getuid32.c
index c6f68ae..397dd08 100644
--- a/tests/getuid32.c
+++ b/tests/getuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_getuid32
 
diff --git a/tests/getxxid.c b/tests/getxxid.c
index 1f2076c..6eee52c 100644
--- a/tests/getxxid.c
+++ b/tests/getxxid.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_getxpid && defined __NR_getxuid && defined __NR_getxgid
 
diff --git a/tests/init.sh b/tests/init.sh
index b6fa522..46a08f9 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -56,10 +56,11 @@
 	fi
 	args="$*"
 	"$@" || {
-		if [ $? -eq 77 ]; then
+		rc=$?
+		if [ $rc -eq 77 ]; then
 			skip_ "$args exited with code 77"
 		else
-			fail_ "$args failed"
+			fail_ "$args failed with code $rc"
 		fi
 	}
 }
@@ -68,7 +69,7 @@
 run_prog_skip_if_failed()
 {
 	args="$*"
-	"$@" || framework_skip_ "$args failed"
+	"$@" || framework_skip_ "$args failed with code $?"
 }
 
 run_strace()
@@ -76,7 +77,7 @@
 	> "$LOG" || fail_ "failed to write $LOG"
 	args="$*"
 	$STRACE -o "$LOG" "$@" ||
-		dump_log_and_fail_with "$STRACE $args failed"
+		dump_log_and_fail_with "$STRACE $args failed with code $?"
 }
 
 run_strace_merge()
@@ -84,7 +85,7 @@
 	rm -f -- "$LOG".[0-9]*
 	run_strace -ff -tt "$@"
 	"$srcdir"/../strace-log-merge "$LOG" > "$LOG" ||
-		dump_log_and_fail_with 'strace-log-merge failed'
+		dump_log_and_fail_with 'strace-log-merge failed with code $?'
 	rm -f -- "$LOG".[0-9]*
 }
 
diff --git a/tests/ioctl_block.c b/tests/ioctl_block.c
index 3dc030d..07e7d34 100644
--- a/tests/ioctl_block.c
+++ b/tests/ioctl_block.c
@@ -50,7 +50,7 @@
 	const unsigned int *end = addr + size - sizeof(int);
 
 	for (; p <= end; ++p)
-		*(unsigned int *) p = magic;
+		*(unsigned int *) p = magic + (p - (unsigned int *) addr);
 }
 
 static struct xlat block_argless[] = {
diff --git a/tests/ioctl_evdev-v.c b/tests/ioctl_evdev-v.c
index 6f1adcf..3860716 100644
--- a/tests/ioctl_evdev-v.c
+++ b/tests/ioctl_evdev-v.c
@@ -1,3 +1,3 @@
 /* This file is part of ioctl_evdev-v strace test. */
-#define VERBOSE_IOCTL
+#define VERBOSE 1
 #include "ioctl_evdev.c"
diff --git a/tests/ioctl_evdev.c b/tests/ioctl_evdev.c
index 5040b1c..892075d 100644
--- a/tests/ioctl_evdev.c
+++ b/tests/ioctl_evdev.c
@@ -51,7 +51,7 @@
 		*(unsigned int *) p = magic;
 }
 
-# ifdef VERBOSE_IOCTL
+# if VERBOSE
 static void
 print_envelope(const struct ff_envelope *const e)
 {
@@ -60,7 +60,7 @@
 	       e->attack_length, e->attack_level,
 	       e->fade_length, e->fade_level);
 }
-# endif /* VERBOSE_IOCTL */
+# endif /* VERBOSE */
 
 static void
 print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
@@ -68,12 +68,12 @@
 	printf("ioctl(-1, EVIOCSFF, {type=%s, id=%" PRIu16
 	       ", direction=%" PRIu16 ", ",
 	       type_str, ffe->id, ffe->direction);
-# ifdef VERBOSE_IOCTL
+# if VERBOSE
 	printf("trigger={button=%hu, interval=%hu}"
 	       ", replay={length=%hu, delay=%hu}",
 	       ffe->trigger.button, ffe->trigger.interval,
 	       ffe->replay.length, ffe->replay.delay);
-# endif /* VERBOSE_IOCTL */
+# endif /* VERBOSE */
 }
 
 # define TEST_NULL_ARG(cmd) \
@@ -189,7 +189,7 @@
 	ioctl(-1, EVIOCSKEYCODE_V2, ike);
 	printf("ioctl(-1, EVIOCSKEYCODE_V2, {flags=%" PRIu8
 	       ", len=%" PRIu8 ", ", ike->flags, ike->len);
-#  ifdef VERBOSE_IOCTL
+#  if VERBOSE
 	printf("index=%" PRIu16 ", keycode=%s, scancode=[",
 	       ike->index, "KEY_1");
 	unsigned int i;
@@ -213,7 +213,7 @@
 	ioctl(-1, EVIOCSFF, ffe);
 	print_ffe_common(ffe, "FF_CONSTANT");
 
-#  ifdef VERBOSE_IOCTL
+#  if VERBOSE
 	printf(", constant={level=%hd", ffe->u.constant.level);
 	print_envelope(&ffe->u.constant.envelope);
 	printf("}");
@@ -223,7 +223,7 @@
 	errno = EBADF;
 	printf("}) = -1 EBADF (%m)\n");
 
-#  ifdef VERBOSE_IOCTL
+#  if VERBOSE
 	ffe->type = FF_RAMP;
 	ioctl(-1, EVIOCSFF, ffe);
 	print_ffe_common(ffe, "FF_RAMP");
diff --git a/tests/ioctl_rtc-v.c b/tests/ioctl_rtc-v.c
index abdace1..62b1615 100644
--- a/tests/ioctl_rtc-v.c
+++ b/tests/ioctl_rtc-v.c
@@ -1,3 +1,3 @@
 /* This file is part of ioctl_rtc-v strace test. */
-#define VERBOSE_IOCTL
+#define VERBOSE 1
 #include "ioctl_rtc.c"
diff --git a/tests/ioctl_rtc.c b/tests/ioctl_rtc.c
index ee09955..ac96763 100644
--- a/tests/ioctl_rtc.c
+++ b/tests/ioctl_rtc.c
@@ -56,7 +56,7 @@
 	       ", tm_mday=%d, tm_mon=%d, tm_year=%d",
 	       rt->tm_sec, rt->tm_min, rt->tm_hour,
 	       rt->tm_mday, rt->tm_mon, rt->tm_year);
-#ifdef VERBOSE_IOCTL
+#if VERBOSE
 	printf(", tm_wday=%d, tm_yday=%d, tm_isdst=%d}",
 	       rt->tm_wday, rt->tm_yday, rt->tm_isdst);
 #else
diff --git a/tests/ioctl_uffdio.c b/tests/ioctl_uffdio.c
index 73a8a99..10b8b84 100644
--- a/tests/ioctl_uffdio.c
+++ b/tests/ioctl_uffdio.c
@@ -27,7 +27,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_userfaultfd && defined HAVE_LINUX_USERFAULTFD_H
 
diff --git a/tests/ioperm.c b/tests/ioperm.c
index f39bdf0..12342f3 100644
--- a/tests/ioperm.c
+++ b/tests/ioperm.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_ioperm
 
diff --git a/tests/iopl.c b/tests/iopl.c
index b547f3c..14ec29e 100644
--- a/tests/iopl.c
+++ b/tests/iopl.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_iopl
 
diff --git a/tests/ip_mreq.c b/tests/ip_mreq.c
index 0559b92..86cd2bc 100644
--- a/tests/ip_mreq.c
+++ b/tests/ip_mreq.c
@@ -29,50 +29,109 @@
 #include <netinet/in.h>
 
 #if defined IP_ADD_MEMBERSHIP && defined IPV6_ADD_MEMBERSHIP \
- && defined IPV6_JOIN_ANYCAST
+ && defined IPV6_JOIN_ANYCAST && defined HAVE_IF_INDEXTONAME
 
 # include <assert.h>
+# include <stdio.h>
 # include <unistd.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
+# include <net/if.h>
 
 int
 main(void)
 {
+	static const char multi4addr[] = "224.0.0.3";
+	static const char multi6addr[] = "ff01::c";
+	static const char interface[] = "127.0.0.1";
+
 	struct ip_mreq m4;
 	struct ipv6_mreq m6;
 
-	inet_pton(AF_INET, "224.0.0.3", &m4.imr_multiaddr);
-	inet_pton(AF_INET, "127.0.0.1", &m4.imr_interface);
-	inet_pton(AF_INET6, "ff01::c", &m6.ipv6mr_multiaddr);
-	m6.ipv6mr_interface = 1;
+	inet_pton(AF_INET, multi4addr, &m4.imr_multiaddr);
+	inet_pton(AF_INET, interface, &m4.imr_interface);
+	inet_pton(AF_INET6, multi6addr, &m6.ipv6mr_multiaddr);
+
+	m6.ipv6mr_interface = if_nametoindex("lo");
+	if (!m6.ipv6mr_interface)
+		perror_msg_and_skip("lo");
 
 	(void) close(0);
 	if (socket(AF_INET, SOCK_DGRAM, 0))
 		perror_msg_and_skip("socket");
 
-	assert(setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, &m4, 1) == -1);
-	assert(setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, &m4, 1) == -1);
 	if (setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, &m4, sizeof(m4)) ||
 	    setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, &m4, sizeof(m4)))
 		perror_msg_and_skip("setsockopt");
+	printf("setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP"
+	       ", {imr_multiaddr=inet_addr(\"%s\")"
+	       ", imr_interface=inet_addr(\"%s\")}, %u) = 0\n",
+	       multi4addr, interface, (unsigned) sizeof(m4));
+	printf("setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP"
+	       ", {imr_multiaddr=inet_addr(\"%s\")"
+	       ", imr_interface=inet_addr(\"%s\")}, %u) = 0\n",
+	       multi4addr, interface, (unsigned) sizeof(m4));
+
+	assert(setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, &m4, 1) == -1);
+	printf("setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, \"\\%hho\", 1)"
+	       " = -1 %s (%m)\n",
+	       * (unsigned char *) (void *) &m4, errno2name());
+
+	assert(setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, &m4, 1) == -1);
+	printf("setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, \"\\%hho\", 1)"
+	       " = -1 %s (%m)\n",
+	       * (unsigned char *) (void *) &m4, errno2name());
 
 	assert(setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, &m6, 1) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, \"\\%hho\", 1)"
+	       " = -1 %s (%m)\n",
+	       * (unsigned char *) (void *) &m6, errno2name());
 	assert(setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, &m6, 1) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, \"\\%hho\", 1)"
+	       " = -1 %s (%m)\n",
+	       * (unsigned char *) (void *) &m6, errno2name());
+
 	assert(setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, &m6, sizeof(m6)) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP"
+	       ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
+	       ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
+	       multi6addr, errno2name());
+
 	assert(setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, &m6, sizeof(m6)) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP"
+	       ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
+	       ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
+	       multi6addr, errno2name());
 
 	assert(setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, &m6, 1) == -1);
-	assert(setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, &m6, 1) == -1);
-	assert(setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, &m6, sizeof(m6)) == -1);
-	assert(setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, &m6, sizeof(m6)) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, \"\\%hho\", 1)"
+	       " = -1 %s (%m)\n",
+	       * (unsigned char *) (void *) &m6, errno2name());
 
+	assert(setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, &m6, 1) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, \"\\%hho\", 1)"
+	       " = -1 %s (%m)\n",
+	       * (unsigned char *) (void *) &m6, errno2name());
+
+	assert(setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, &m6, sizeof(m6)) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST"
+	       ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
+	       ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
+	       multi6addr, errno2name());
+
+	assert(setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, &m6, sizeof(m6)) == -1);
+	printf("setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST"
+	       ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
+	       ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
+	       multi6addr, errno2name());
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
 #else
 
 SKIP_MAIN_UNDEFINED("IP_ADD_MEMBERSHIP && IPV6_ADD_MEMBERSHIP"
-		    " && IPV6_JOIN_ANYCAST")
+		    " && IPV6_JOIN_ANYCAST && HAVE_IF_INDEXTONAME")
 
 #endif
diff --git a/tests/ip_mreq.expected b/tests/ip_mreq.expected
deleted file mode 100644
index e694c73..0000000
--- a/tests/ip_mreq.expected
+++ /dev/null
@@ -1,12 +0,0 @@
-setsockopt\(0, SOL_IP, IP_ADD_MEMBERSHIP, "\\340", 1\) = -1 EINVAL .*
-setsockopt\(0, SOL_IP, IP_DROP_MEMBERSHIP, "\\340", 1\) = -1 EINVAL .*
-setsockopt\(0, SOL_IP, IP_ADD_MEMBERSHIP, \{imr_multiaddr=inet_addr\("224\.0\.0\.3"\), imr_interface=inet_addr\("127\.0\.0\.1"\)\}, 8\) = 0
-setsockopt\(0, SOL_IP, IP_DROP_MEMBERSHIP, \{imr_multiaddr=inet_addr\("224\.0\.0\.3"\), imr_interface=inet_addr\("127\.0\.0\.1"\)\}, 8\) = 0
-setsockopt\(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, "\\377", 1\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, "\\377", 1\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, \{ipv6mr_multiaddr=inet_pton\("ff01::c"\), ipv6mr_interface=if_nametoindex\("lo"\)\}, 20\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, \{ipv6mr_multiaddr=inet_pton\("ff01::c"\), ipv6mr_interface=if_nametoindex\("lo"\)\}, 20\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_JOIN_ANYCAST, "\\377", 1\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, "\\377", 1\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_JOIN_ANYCAST, \{ipv6mr_multiaddr=inet_pton\("ff01::c"\), ipv6mr_interface=if_nametoindex\("lo"\)\}, 20\) = -1 ENOPROTOOPT .*
-setsockopt\(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, \{ipv6mr_multiaddr=inet_pton\("ff01::c"\), ipv6mr_interface=if_nametoindex\("lo"\)\}, 20\) = -1 ENOPROTOOPT .*
diff --git a/tests/ip_mreq.test b/tests/ip_mreq.test
index d423b1b..d0a9e0f 100755
--- a/tests/ip_mreq.test
+++ b/tests/ip_mreq.test
@@ -3,9 +3,4 @@
 # Check {IP,IPV6}_{ADD,DROP}_MEMBERSHIP setsockopt decoding.
 
 . "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -e setsockopt $args
-match_grep
-
-exit 0
+run_strace_match_diff -e trace=setsockopt
diff --git a/tests/ipc.c b/tests/ipc.c
index d33a09f..f5b9ef5 100644
--- a/tests/ipc.c
+++ b/tests/ipc.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_ipc && defined HAVE_LINUX_IPC_H
 
diff --git a/tests/ipc_msg.c b/tests/ipc_msg.c
index 2fd7d4f..b493843 100644
--- a/tests/ipc_msg.c
+++ b/tests/ipc_msg.c
@@ -32,6 +32,26 @@
 #include <stdlib.h>
 #include <sys/msg.h>
 
+#include "xlat.h"
+#include "xlat/resource_flags.h"
+
+/*
+ * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data
+ * provided in third argument of msgctl call (in case of IPC_SET cmd)
+ * which led to segmentation fault.
+ */
+#undef TEST_MSGCTL_BOGUS_ADDR
+#if defined __GLIBC__ && defined POWERPC64
+# if !(defined __GLIBC_MINOR__) \
+   || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23)
+#  define TEST_MSGCTL_BOGUS_ADDR 0
+# endif
+#endif /* __GLIBC__ && POWERPC64 */
+
+#ifndef TEST_MSGCTL_BOGUS_ADDR
+# define TEST_MSGCTL_BOGUS_ADDR 1
+#endif
+
 static int id = -1;
 
 static void
@@ -45,46 +65,72 @@
 int
 main(void)
 {
+	static const key_t private_key =
+		(key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
+	static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
+	static const int bogus_msgid = 0xfdb97531;
+	static const int bogus_cmd = 0xdeadbeef;
+#if TEST_MSGCTL_BOGUS_ADDR
+	static void * const bogus_addr = (void *) -1L;
+#endif
+	static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
+
 	int rc;
 	struct msqid_ds ds;
 
-	id = msgget(IPC_PRIVATE, 0600);
+	rc = msgget(bogus_key, bogus_flags);
+	printf("msgget\\(%#llx, %s%s%s%#x\\|%#04o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key),
+	       IPC_CREAT & bogus_flags ? "IPC_CREAT\\|" : "",
+	       IPC_EXCL & bogus_flags ? "IPC_EXCL\\|" : "",
+	       IPC_NOWAIT & bogus_flags ? "IPC_NOWAIT\\|" : "",
+	       bogus_flags & ~(0777 | IPC_CREAT | IPC_EXCL | IPC_NOWAIT),
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	id = msgget(private_key, 0600);
 	if (id < 0)
 		perror_msg_and_skip("msgget");
 	printf("msgget\\(IPC_PRIVATE, 0600\\) += %d\n", id);
 	atexit(cleanup);
 
+	rc = msgctl(bogus_msgid, bogus_cmd, NULL);
+	printf("msgctl\\(%d, (IPC_64\\|)?%#x /\\* MSG_\\?\\?\\? \\*/, NULL\\)"
+	       " += %s\n", bogus_msgid, bogus_cmd, sprintrc_grep(rc));
+
+#if TEST_MSGCTL_BOGUS_ADDR
+	rc = msgctl(bogus_msgid, IPC_SET, bogus_addr);
+	printf("msgctl\\(%d, (IPC_64\\|)?IPC_SET, %p\\) += %s\n",
+	       bogus_msgid, bogus_addr, sprintrc_grep(rc));
+#endif
+
 	if (msgctl(id, IPC_STAT, &ds))
 		perror_msg_and_skip("msgctl IPC_STAT");
-	printf("msgctl\\(%d, (IPC_64\\|)?IPC_STAT, \\{msg_perm=\\{uid=%u, gid=%u, "
-		"mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u, msg_rtime=%u, "
-		"msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u, msg_lspid=%u, "
-		"msg_lrpid=%u\\}\\) += 0\n",
-		id, (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
-		(unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key,
-		(unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid,
-		(unsigned) ds.msg_stime, (unsigned) ds.msg_rtime,
-		(unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum,
-		(unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid,
-		(unsigned) ds.msg_lrpid);
+	printf("msgctl\\(%d, (IPC_64\\|)?IPC_STAT, \\{msg_perm=\\{uid=%u"
+	       ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u"
+	       ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u"
+	       ", msg_lspid=%u, msg_lrpid=%u\\}\\) += 0\n",
+	       id, (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
+	       (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key,
+	       (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid,
+	       (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime,
+	       (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum,
+	       (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid,
+	       (unsigned) ds.msg_lrpid);
 
-	int max = msgctl(0, MSG_INFO, &ds);
-	if (max < 0)
-		perror_msg_and_skip("msgctl MSG_INFO");
-	printf("msgctl\\(0, (IPC_64\\|)?MSG_INFO, %p\\) += %d\n", &ds, max);
+	if (msgctl(id, IPC_SET, &ds))
+		perror_msg_and_skip("msgctl IPC_SET");
+	printf("msgctl\\(%d, (IPC_64\\|)?IPC_SET, \\{msg_perm=\\{uid=%u"
+	       ", gid=%u, mode=%#o\\}, ...\\}\\) += 0\n",
+	       id, (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
+	       (unsigned) ds.msg_perm.mode);
+
+	rc = msgctl(0, MSG_INFO, &ds);
+	printf("msgctl\\(0, (IPC_64\\|)?MSG_INFO, %p\\) += %s\n",
+	       &ds, sprintrc_grep(rc));
 
 	rc = msgctl(id, MSG_STAT, &ds);
-	if (rc != id) {
-		/*
-		 * In linux < v2.6.24-rc1 the first argument must be
-		 * an index in the kernel's internal array.
-		 */
-		if (-1 != rc || EINVAL != errno)
-			perror_msg_and_skip("msgctl MSG_STAT");
-		printf("msgctl\\(%d, (IPC_64\\|)?MSG_STAT, %p\\) += -1 EINVAL \\(%m\\)\n", id, &ds);
-	} else {
-		printf("msgctl\\(%d, (IPC_64\\|)?MSG_STAT, %p\\) += %d\n", id, &ds, id);
-	}
+	printf("msgctl\\(%d, (IPC_64\\|)?MSG_STAT, %p\\) += %s\n",
+	       id, &ds, sprintrc_grep(rc));
 
 	return 0;
 }
diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c
index afe74d2..926fa89 100644
--- a/tests/ipc_sem.c
+++ b/tests/ipc_sem.c
@@ -32,6 +32,9 @@
 #include <stdlib.h>
 #include <sys/sem.h>
 
+#include "xlat.h"
+#include "xlat/resource_flags.h"
+
 union semun {
 	int              val;    /* Value for SETVAL */
 	struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
@@ -53,17 +56,48 @@
 int
 main(void)
 {
+	static const key_t private_key =
+		(key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
+	static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
+	static const int bogus_semid = 0xfdb97531;
+	static const int bogus_semnum = 0xeca86420;
+	static const int bogus_size = 0xdec0ded1;
+	static const int bogus_flags = 0xface1e55;
+	static const int bogus_cmd = 0xdeadbeef;
+	static const unsigned long bogus_arg =
+		(unsigned long) 0xbadc0dedfffffaceULL;
+
 	int rc;
 	union semun un;
 	struct semid_ds ds;
 	struct seminfo info;
 
-	id = semget(IPC_PRIVATE, 1, 0600);
+	rc = semget(bogus_key, bogus_size, bogus_flags);
+	printf("semget\\(%#llx, %d, %s%s%s%#x\\|%#04o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       IPC_CREAT & bogus_flags ? "IPC_CREAT\\|" : "",
+	       IPC_EXCL & bogus_flags ? "IPC_EXCL\\|" : "",
+	       IPC_NOWAIT & bogus_flags ? "IPC_NOWAIT\\|" : "",
+	       bogus_flags & ~(0777 | IPC_CREAT | IPC_EXCL | IPC_NOWAIT),
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	id = semget(private_key, 1, 0600);
 	if (id < 0)
 		perror_msg_and_skip("semget");
 	printf("semget\\(IPC_PRIVATE, 1, 0600\\) += %d\n", id);
 	atexit(cleanup);
 
+	rc = semctl(bogus_semid, bogus_semnum, bogus_cmd, bogus_arg);
+#ifdef __GLIBC__
+# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|0)\\])"
+#else
+# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|0)\\]|0)"
+#endif
+	printf("semctl\\(%d, %d, (IPC_64\\|)?%#x /\\* SEM_\\?\\?\\? \\*/"
+	       ", " SEMCTL_BOGUS_ARG_FMT "\\) += %s\n",
+	       bogus_semid, bogus_semnum, bogus_cmd,
+	       bogus_arg, bogus_arg, sprintrc_grep(rc));
+
 	un.buf = &ds;
 	if (semctl(id, 0, IPC_STAT, un))
 		perror_msg_and_skip("semctl IPC_STAT");
@@ -71,27 +105,14 @@
 	       id, &ds);
 
 	un.__buf = &info;
-	int max = semctl(0, 0, SEM_INFO, un);
-	if (max < 0)
-		perror_msg_and_skip("semctl SEM_INFO");
-	printf("semctl\\(0, 0, (IPC_64\\|)?SEM_INFO, \\[?%p\\]?\\) += %d\n",
-	       &info, max);
+	rc = semctl(0, 0, SEM_INFO, un);
+	printf("semctl\\(0, 0, (IPC_64\\|)?SEM_INFO, \\[?%p\\]?\\) += %s\n",
+	       &info, sprintrc_grep(rc));
 
 	un.buf = &ds;
 	rc = semctl(id, 0, SEM_STAT, un);
-	if (rc != id) {
-		/*
-		 * In linux < v2.6.24-rc1 the first argument must be
-		 * an index in the kernel's internal array.
-		 */
-		if (-1 != rc || EINVAL != errno)
-			perror_msg_and_skip("semctl SEM_STAT");
-		printf("semctl\\(%d, 0, (IPC_64\\|)?SEM_STAT, \\[?%p\\]?\\)"
-		       " += -1 EINVAL \\(%m\\)\n", id, &ds);
-	} else {
-		printf("semctl\\(%d, 0, (IPC_64\\|)?SEM_STAT, \\[?%p\\]?\\)"
-		       " += %d\n", id, &ds, id);
-	}
+	printf("semctl\\(%d, 0, (IPC_64\\|)?SEM_STAT, \\[?%p\\]?\\) += %s\n",
+	       id, &ds, sprintrc_grep(rc));
 
 	return 0;
 }
diff --git a/tests/ipc_shm.c b/tests/ipc_shm.c
index 54723e2..66960ff 100644
--- a/tests/ipc_shm.c
+++ b/tests/ipc_shm.c
@@ -32,6 +32,9 @@
 #include <stdlib.h>
 #include <sys/shm.h>
 
+#include "xlat.h"
+#include "xlat/shm_resource_flags.h"
+
 static int id = -1;
 
 static void
@@ -45,15 +48,50 @@
 int
 main(void)
 {
+	static const key_t private_key =
+		(key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
+	static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
+	static const int bogus_id = 0xdefaced1;
+	static const int bogus_cmd = 0xdefaced2;
+	static void * const bogus_addr = (void *) -1L;
+	static const size_t bogus_size =
+	/*
+	 * musl sets size to SIZE_MAX if size argument is greater than
+	 * PTRDIFF_MAX - musl/src/ipc/shmget.c
+	 */
+	#ifdef __GLIBC__
+		(size_t) 0xdec0ded1dec0ded2ULL;
+	#else
+		(size_t) 0x1e55c0de5dec0dedULL;
+	#endif
+	static const int bogus_flags = 0xface1e55;
+
 	int rc;
 	struct shmid_ds ds;
 
-	id = shmget(IPC_PRIVATE, 1, 0600);
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s%s%s%#x\\|%#04o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       IPC_CREAT & bogus_flags ? "IPC_CREAT\\|" : "",
+	       IPC_EXCL & bogus_flags ? "IPC_EXCL\\|" : "",
+	       SHM_HUGETLB & bogus_flags ? "SHM_HUGETLB\\|" : "",
+	       bogus_flags & ~(0777 | IPC_CREAT | IPC_EXCL | SHM_HUGETLB),
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	id = shmget(private_key, 1, 0600);
 	if (id < 0)
 		perror_msg_and_skip("shmget");
 	printf("shmget\\(IPC_PRIVATE, 1, 0600\\) += %d\n", id);
 	atexit(cleanup);
 
+	rc = shmctl(bogus_id, bogus_cmd, NULL);
+	printf("shmctl\\(%d, (IPC_64\\|)?%#x /\\* SHM_\\?\\?\\? \\*/, NULL\\)"
+	       " += %s\n", bogus_id, bogus_cmd, sprintrc_grep(rc));
+
+	rc = shmctl(bogus_id, IPC_STAT, bogus_addr);
+	printf("shmctl\\(%d, (IPC_64\\|)?IPC_STAT, %p\\) += %s\n",
+	       bogus_id, bogus_addr, sprintrc_grep(rc));
+
 	if (shmctl(id, IPC_STAT, &ds))
 		perror_msg_and_skip("shmctl IPC_STAT");
 	printf("shmctl\\(%d, (IPC_64\\|)?IPC_STAT, \\{shm_perm=\\{uid=%u, gid=%u, "
@@ -68,23 +106,20 @@
 		(unsigned) ds.shm_atime, (unsigned) ds.shm_dtime,
 		(unsigned) ds. shm_ctime);
 
-	int max = shmctl(0, SHM_INFO, &ds);
-	if (max < 0)
-		perror_msg_and_skip("shmctl SHM_INFO");
-	printf("shmctl\\(0, (IPC_64\\|)?SHM_INFO, %p\\) += %d\n", &ds, max);
+	if (shmctl(id, IPC_SET, &ds))
+		perror_msg_and_skip("shmctl IPC_SET");
+	printf("shmctl\\(%d, (IPC_64\\|)?IPC_SET, \\{shm_perm=\\{uid=%u, gid=%u"
+	       ", mode=%#o\\}, ...\\}\\) += 0\n",
+	       id, (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
+	       (unsigned) ds.shm_perm.mode);
+
+	rc = shmctl(0, SHM_INFO, &ds);
+	printf("shmctl\\(0, (IPC_64\\|)?SHM_INFO, %p\\) += %s\n",
+	       &ds, sprintrc_grep(rc));
 
 	rc = shmctl(id, SHM_STAT, &ds);
-	if (rc != id) {
-		/*
-		 * In linux < v2.6.24-rc1 the first argument must be
-		 * an index in the kernel's internal array.
-		 */
-		if (-1 != rc || EINVAL != errno)
-			perror_msg_and_skip("shmctl SHM_STAT");
-		printf("shmctl\\(%d, (IPC_64\\|)?SHM_STAT, %p\\) += -1 EINVAL \\(%m\\)\n", id, &ds);
-	} else {
-		printf("shmctl\\(%d, (IPC_64\\|)?SHM_STAT, %p\\) += %d\n", id, &ds, id);
-	}
+	printf("shmctl\\(%d, (IPC_64\\|)?SHM_STAT, %p\\) += %s\n",
+	       id, &ds, sprintrc_grep(rc));
 
 	return 0;
 }
diff --git a/tests/keyctl.c b/tests/keyctl.c
new file mode 100644
index 0000000..b580981
--- /dev/null
+++ b/tests/keyctl.c
@@ -0,0 +1,824 @@
+/*
+ * Check decoding of keyctl syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_keyctl
+
+# include <linux/types.h>
+# include <linux/keyctl.h>
+
+# include <errno.h>
+# include <inttypes.h>
+# include <stdarg.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <unistd.h>
+
+# include <sys/uio.h>
+
+# include "kernel_types.h"
+
+/* This check should be before #include "xlat/keyctl_commands.h" */
+# ifndef KEYCTL_DH_COMPUTE
+struct keyctl_dh_params {
+	int32_t private;
+	int32_t prime;
+	int32_t base;
+};
+# endif
+
+# include "xlat.h"
+# include "xlat/keyctl_commands.h"
+
+# ifndef KEY_SPEC_REQKEY_AUTH_KEY
+#  define KEY_SPEC_REQKEY_AUTH_KEY   -7
+# endif
+
+# ifndef KEY_SPEC_REQUESTOR_KEYRING
+#  define KEY_SPEC_REQUESTOR_KEYRING -8
+# endif
+
+static const size_t limit = 10;
+
+/*
+ * Well, this is true for DESCRIBE and GET_SECURITY, and false for READ and
+ * DH_COMPUTE and I see no ability to pass this information without
+ * significantly breaking interface.
+ */
+bool nul_terminated_buf = true;
+bool buf_in_arg = false;
+
+/*
+ * When this is called with positive size, the buffer provided is an "out"
+ * argument and rc contains resulting size (globally defined nul_terminated_buf
+ * controls whether it is nul-terminated or not). If size is negative,
+ * it contains "in" argument.
+ */
+void
+print_quoted_string_limit(const char *str, size_t size, long rc)
+{
+	size_t print_size = ((rc >= 0) && (size > 0)) ?
+		((unsigned long) rc > size ? size :
+		(unsigned long) rc) : size;
+	size_t limited_size = print_size > limit ? limit : print_size;
+
+	if ((rc == -1) && !buf_in_arg) {
+		printf("%p", str);
+		return;
+	}
+
+	if (!nul_terminated_buf ||
+	    (strnlen(str, limited_size) == limited_size)) {
+		printf("\"");
+		print_quoted_memory(str, limited_size);
+		if (print_size > limit)
+			printf("\"...");
+		else
+			printf("\"");
+	} else {
+		printf("\"");
+		print_quoted_string(str);
+		printf("\"");
+	}
+}
+
+static void
+print_arg(kernel_ulong_t arg, const char *str, const char *fmt, size_t size,
+	long rc)
+{
+	if (size == (size_t) -1)
+		size = 0;
+
+	if (str) {
+		printf("%s", str);
+	} else {
+		if (size == sizeof(uint64_t))
+			printf(fmt, (uint64_t)arg);
+		else if (size == sizeof(uint32_t))
+			printf(fmt, (uint32_t)arg);
+		else
+			print_quoted_string_limit((void *)arg, size, rc);
+	}
+}
+
+/*
+ * Arguments are passed as sz, val, str, fmt. Arguments are read until 4
+ * arguments are retrieved or size of 0 is occurred.
+ *
+ * str == NULL && fmt == NULL && sz not in {4, 8} - print_quoted_string_limit is
+ *   used for argument printing. If sz is negative, in argument is assumed, out
+ *   otherwise.
+ */
+void
+do_keyctl(kernel_ulong_t cmd, const char *cmd_str, ...)
+{
+	kernel_ulong_t args[4] = {
+		(kernel_ulong_t) 0xdeadfee1badc0de5ULL,
+		(kernel_ulong_t) 0xdeadfee2badc0de6ULL,
+		(kernel_ulong_t) 0xdeadfee3badc0de7ULL,
+		(kernel_ulong_t) 0xdeadfee4badc0de8ULL,
+	};
+	const char *arg_str[4] = { NULL };
+	const char *arg_fmt[4] = { "%llu", "%llu", "%llu", "%llu" };
+	size_t arg_sz[4] = {
+		sizeof(kernel_ulong_t),
+		sizeof(kernel_ulong_t),
+		sizeof(kernel_ulong_t),
+		sizeof(kernel_ulong_t),
+	};
+	unsigned i;
+	unsigned cnt = 0;
+
+	va_list ap;
+
+	va_start(ap, cmd_str);
+
+	do {
+		arg_sz[cnt] = va_arg(ap, size_t);
+		if (!arg_sz[cnt])
+			break;
+
+		if (arg_sz[cnt] == sizeof(uint64_t))
+			args[cnt] = va_arg(ap, uint64_t);
+		else if (arg_sz[cnt] == sizeof(uint32_t))
+			args[cnt] = va_arg(ap, uint32_t);
+		else
+			args[cnt] = (uintptr_t) va_arg(ap, void *);
+
+		arg_str[cnt] = va_arg(ap, char *);
+		arg_fmt[cnt] = va_arg(ap, char *);
+	} while (++cnt < 4);
+
+	long rc = syscall(__NR_keyctl, cmd, args[0], args[1], args[2], args[3]);
+	const char *errstr = sprintrc(rc);
+	printf("keyctl(%s", cmd_str);
+	for (i = 0; i < cnt; i++) {
+		printf(", ");
+		print_arg(args[i], arg_str[i], arg_fmt[i], arg_sz[i], rc);
+	}
+	printf(") = %s\n", errstr);
+}
+
+# define ARG_STR(_arg) (_arg), #_arg
+
+int
+main(void)
+{
+	enum { PR_LIMIT = 10, IOV_SIZE = 11, IOV_STR_SIZE = 4096 };
+
+	static const char *kulong_fmt =
+		sizeof(kernel_ulong_t) == sizeof(uint64_t) ? "%#llx" : "%#x";
+	static const char *ksize_fmt =
+		sizeof(kernel_ulong_t) == sizeof(uint64_t) ? "%llu" : "%u";
+	static const char *ptr_fmt =
+		sizeof(void *) == sizeof(uint64_t) ? "%#llx" : "%#x";
+	static const char unterminated1[] = { '\1', '\2', '\3', '\4', '\5' };
+	static const char unterminated2[] = { '\6', '\7', '\10', '\11', '\12' };
+	static const char short_type_str[] = "shrt type";
+	static const char short_desc_str[] = "shrt desc";
+	static const char long_type_str[] = "overly long key type";
+	static const char long_desc_str[] = "overly long key description";
+	static const int32_t bogus_key1 = 0xdeadf00d;
+	static const int32_t bogus_key2 = 0x1eefdead;
+	static const kernel_ulong_t bogus_key3 =
+		(kernel_ulong_t) 0xdec0ded1dec0ded2ULL;
+	static const char *bogus_key3_str = "-557785390";
+
+	static const struct keyctl_dh_params kcdhp_data = {
+		KEY_SPEC_GROUP_KEYRING, 1234567890, 3141592653U };
+	static const char *kcdhp_str = "{private=KEY_SPEC_GROUP_KEYRING, "
+		"prime=1234567890, base=-1153374643}";
+
+	char *bogus_str = tail_memdup(unterminated1, sizeof(unterminated1));
+	char *bogus_desc = tail_memdup(unterminated2, sizeof(unterminated2));
+	char *short_type = tail_memdup(short_type_str, sizeof(short_type_str));
+	char *short_desc = tail_memdup(short_desc_str, sizeof(short_desc_str));
+	char *long_type = tail_memdup(long_type_str, sizeof(long_type_str));
+	char *long_desc = tail_memdup(long_desc_str, sizeof(long_desc_str));
+	char *kcdhp = tail_memdup(&kcdhp_data, sizeof(kcdhp_data));
+	struct iovec *key_iov = tail_alloc(sizeof(*key_iov) * IOV_SIZE);
+	char *bogus_buf1 = tail_alloc(9);
+	char *bogus_buf2 = tail_alloc(256);
+	char *key_iov_str1;
+	char *key_iov_str2 = tail_alloc(4096);
+	ssize_t ret;
+	ssize_t kis_size = 0;
+	int i;
+
+	key_iov[0].iov_base = short_type;
+	key_iov[0].iov_len = sizeof(short_type_str);
+	key_iov[1].iov_base = long_type;
+	key_iov[1].iov_len = sizeof(long_type_str);
+	key_iov[2].iov_base = short_desc;
+	key_iov[2].iov_len = sizeof(short_desc_str);
+	key_iov[3].iov_base = long_desc;
+	key_iov[3].iov_len = sizeof(long_desc_str);
+	key_iov[4].iov_base = bogus_str;
+	key_iov[4].iov_len = 32;
+
+	for (i = 5; i < IOV_SIZE; i++) {
+		key_iov[i].iov_base =
+			(void *) (uintptr_t) (0xfffffacefffff00dULL +
+			0x100000001ULL * i);
+		key_iov[i].iov_len = (size_t) (0xcaffeeeddefaced7ULL +
+			0x100000001ULL * i);
+	}
+
+	ret = asprintf(&key_iov_str1, "[{iov_base=%p, iov_len=%zu}, "
+		       "{iov_base=%p, iov_len=%zu}, "
+		       "{iov_base=%p, iov_len=%zu}, "
+		       "{iov_base=%p, iov_len=%zu}]",
+		       key_iov[IOV_SIZE - 4].iov_base,
+		       key_iov[IOV_SIZE - 4].iov_len,
+		       key_iov[IOV_SIZE - 3].iov_base,
+		       key_iov[IOV_SIZE - 3].iov_len,
+		       key_iov[IOV_SIZE - 2].iov_base,
+		       key_iov[IOV_SIZE - 2].iov_len,
+		       key_iov[IOV_SIZE - 1].iov_base,
+		       key_iov[IOV_SIZE - 1].iov_len);
+
+	if (ret < 0)
+		error_msg_and_fail("asprintf");
+
+	ret = snprintf(key_iov_str2, IOV_STR_SIZE,
+		       "[{iov_base=\"%s\\0\", iov_len=%zu}, "
+		       "{iov_base=\"%.10s\"..., iov_len=%zu}, "
+		       "{iov_base=\"%s\\0\", iov_len=%zu}, "
+		       "{iov_base=\"%.10s\"..., iov_len=%zu}, ",
+		       (char *) key_iov[0].iov_base, key_iov[0].iov_len,
+		       (char *) key_iov[1].iov_base, key_iov[1].iov_len,
+		       (char *) key_iov[2].iov_base, key_iov[2].iov_len,
+		       (char *) key_iov[3].iov_base, key_iov[3].iov_len);
+
+	if ((ret < 0) || (ret >= IOV_STR_SIZE))
+		error_msg_and_fail("snprintf");
+
+	for (i = 4; i < PR_LIMIT; i++) {
+		kis_size += ret;
+
+		ret = snprintf(key_iov_str2 + kis_size, IOV_STR_SIZE - kis_size,
+			       "{iov_base=%p, iov_len=%zu}, ",
+			       key_iov[i].iov_base, key_iov[i].iov_len);
+
+		if ((ret < 0) || (ret >= (IOV_STR_SIZE - kis_size)))
+			error_msg_and_fail("snprintf");
+	}
+
+	kis_size += ret;
+	snprintf(key_iov_str2 + kis_size, IOV_STR_SIZE - kis_size, "...]");
+
+
+	/* Invalid command */
+	do_keyctl((kernel_ulong_t) 0xbadc0dedfacefeedULL,
+		  "0xfacefeed /* KEYCTL_??? */",
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfee1badc0de5ULL, NULL, kulong_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfee2badc0de6ULL, NULL, kulong_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfee3badc0de7ULL, NULL, kulong_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfee4badc0de8ULL, NULL, kulong_fmt);
+
+
+	/* GET_KEYRING_ID */
+	do_keyctl(ARG_STR(KEYCTL_GET_KEYRING_ID),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xbadc0dedffffffffLLU, "-1",
+		  NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_KEYRING_ID),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), "%d",
+		  sizeof(int), 3141592653U, NULL, "%d",
+		  NULL, 0UL);
+
+
+	/* KEYCTL_JOIN_SESSION_KEYRING */
+	do_keyctl(ARG_STR(KEYCTL_JOIN_SESSION_KEYRING),
+		  sizeof(char *), ARG_STR(NULL), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_JOIN_SESSION_KEYRING),
+		  sizeof(char *), (char *) 0xfffffacefffffeedULL, NULL, ptr_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_JOIN_SESSION_KEYRING),
+		  sizeof(char *), bogus_str, NULL, ptr_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_JOIN_SESSION_KEYRING),
+		  sizeof(char *), ARG_STR("bogus name"), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_JOIN_SESSION_KEYRING),
+		  sizeof(char *), "very long keyring name", "\"very long \"...",
+		  NULL, 0UL);
+
+
+	/* KEYCTL_UPDATE */
+
+	buf_in_arg = true;
+
+	do_keyctl(ARG_STR(KEYCTL_UPDATE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(char *), ARG_STR(NULL), NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_UPDATE),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), (char *) 0xfffffacefffffeedULL, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfee4badc0de8ULL, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_UPDATE),
+		  sizeof(int32_t), bogus_key2, NULL, "%d",
+		  sizeof(char *), bogus_str, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfee4badc0de8ULL, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_UPDATE),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(short_desc_str), short_desc, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) sizeof(short_desc_str) - 1, NULL,
+			  ksize_fmt,
+		  0UL);
+
+	buf_in_arg = false;
+
+
+	/* KEYCTL_REVOKE */
+	do_keyctl(ARG_STR(KEYCTL_REVOKE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_REVOKE),
+		  sizeof(int32_t), bogus_key1, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_REVOKE),
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_REVOKE),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_CHOWN */
+	do_keyctl(ARG_STR(KEYCTL_CHOWN),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(uid_t), ARG_STR(-1), NULL,
+		  sizeof(gid_t), ARG_STR(-1), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_CHOWN),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(uid_t), 2718281828U, NULL, "%u",
+		  sizeof(gid_t), 3141592653U, NULL, "%u", 0UL);
+
+
+	/* KEYCTL_SETPERM */
+	do_keyctl(ARG_STR(KEYCTL_SETPERM),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQKEY_AUTH_KEY), NULL,
+		  sizeof(uint32_t), 0xffffffffU,
+		  "KEY_POS_VIEW|KEY_POS_READ|KEY_POS_WRITE|"
+		  "KEY_POS_SEARCH|KEY_POS_LINK|KEY_POS_SETATTR|"
+		  "KEY_USR_VIEW|KEY_USR_READ|KEY_USR_WRITE|"
+		  "KEY_USR_SEARCH|KEY_USR_LINK|KEY_USR_SETATTR|"
+		  "KEY_GRP_VIEW|KEY_GRP_READ|KEY_GRP_WRITE|"
+		  "KEY_GRP_SEARCH|KEY_GRP_LINK|KEY_GRP_SETATTR|"
+		  "KEY_OTH_VIEW|KEY_OTH_READ|KEY_OTH_WRITE|"
+		  "KEY_OTH_SEARCH|KEY_OTH_LINK|KEY_OTH_SETATTR|"
+		  "0xc0c0c0c0", NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_SETPERM),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(uint32_t), 0, NULL, "%#x", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_SETPERM),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(uint32_t), 0xc0c0c0c0, "0xc0c0c0c0 /* KEY_??? */",
+			  NULL,
+		  0UL);
+
+
+	/* KEYCTL_DESCRIBE */
+	do_keyctl(ARG_STR(KEYCTL_DESCRIBE),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_DESCRIBE),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_DESCRIBE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) 9, (uintptr_t) bogus_buf1, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 9, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_DESCRIBE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) 256, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 256, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_DESCRIBE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) -4, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) -4, NULL, ksize_fmt, 0UL);
+
+
+	/* KEYCTL_CLEAR */
+	do_keyctl(ARG_STR(KEYCTL_CLEAR),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_CLEAR),
+		  sizeof(int32_t), bogus_key1, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_CLEAR),
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_CLEAR),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_LINK */
+	do_keyctl(ARG_STR(KEYCTL_LINK),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_LINK),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_LINK),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_UNLINK */
+	do_keyctl(ARG_STR(KEYCTL_UNLINK),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_UNLINK),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_UNLINK),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_SEARCH */
+	buf_in_arg = true;
+
+	do_keyctl(ARG_STR(KEYCTL_SEARCH),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_REQUESTOR_KEYRING), NULL,
+		  sizeof(char *), ARG_STR(NULL), NULL,
+		  sizeof(char *), ARG_STR(NULL), NULL,
+		  sizeof(int32_t), 0, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_SEARCH),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), (char *) 0xfffffacefffffeedULL, NULL, ptr_fmt,
+		  sizeof(char *), (char *) 0xfffff00dfffff157ULL, NULL, ptr_fmt,
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_USER_SESSION_KEYRING),
+			  NULL);
+	do_keyctl(ARG_STR(KEYCTL_SEARCH),
+		  sizeof(int32_t), bogus_key2, NULL, "%d",
+		  sizeof(char *), bogus_str, NULL, ptr_fmt,
+		  sizeof(char *), bogus_desc, NULL, ptr_fmt,
+		  sizeof(int32_t), bogus_key1, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_SEARCH),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(short_type_str), short_type, NULL, NULL,
+		  sizeof(short_desc_str), short_desc, NULL, NULL,
+		  sizeof(int32_t), bogus_key2, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_SEARCH),
+		  sizeof(int32_t), 0, NULL, "%d",
+		  sizeof(long_type_str), long_type, NULL, NULL,
+		  sizeof(long_type_str), long_desc, NULL, NULL,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL);
+
+	buf_in_arg = false;
+
+
+	/* KEYCTL_READ */
+	nul_terminated_buf = false;
+
+	/* Empty result is expected for these */
+	bogus_buf1[0] = '\377';
+	bogus_buf2[0] = '\377';
+
+	do_keyctl(ARG_STR(KEYCTL_READ),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_READ),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_READ),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) 9, (uintptr_t) bogus_buf1, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 9, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_READ),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) 256, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 256, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_READ),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) -4, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) -4, NULL, ksize_fmt, 0UL);
+
+	nul_terminated_buf = true;
+
+	/* KEYCTL_INSTANTIATE */
+	buf_in_arg = true;
+
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE),
+		  sizeof(int32_t), 0, NULL, "%d",
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  sizeof(int32_t), 0, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), (char *) 0xfffffacefffffeedULL, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfeedLLU, NULL, ksize_fmt,
+		  sizeof(int32_t), bogus_key1, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE),
+		  sizeof(int32_t), bogus_key2, NULL, "%d",
+		  sizeof(char *), bogus_str, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 32LLU, NULL, ksize_fmt,
+		  sizeof(int32_t), bogus_key2, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(short_type_str), short_desc, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) sizeof(short_type_str) - 1, NULL,
+			  ksize_fmt,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL);
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL,
+		  sizeof(long_type_str), long_desc, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) sizeof(long_type_str), NULL, ksize_fmt,
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL);
+
+	buf_in_arg = false;
+
+
+	/* KEYCTL_NEGATE */
+	do_keyctl(ARG_STR(KEYCTL_NEGATE),
+		  sizeof(int32_t), 0, NULL, "%d",
+		  sizeof(uint32_t), 0, NULL, "%u",
+		  sizeof(int32_t), 0, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_NEGATE),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(uint32_t), 3141592653U, NULL, "%u",
+		  sizeof(int32_t), bogus_key1, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_NEGATE),
+		  sizeof(int32_t), bogus_key2, NULL, "%d",
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, "3134983661", NULL,
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_NEGATE),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, "3134983661", NULL,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_SET_REQKEY_KEYRING */
+	do_keyctl(ARG_STR(KEYCTL_SET_REQKEY_KEYRING),
+		  sizeof(int32_t), ARG_STR(KEY_REQKEY_DEFL_NO_CHANGE), NULL,
+		  0UL);
+	/*
+	 * Keep it commented out until proper way of faking syscalls is not
+	 * implemented.
+	 */
+	/* do_keyctl(ARG_STR(KEYCTL_SET_REQKEY_KEYRING),
+		  sizeof(int32_t),
+		  ARG_STR(KEY_REQKEY_DEFL_REQUESTOR_KEYRING), NULL, 0UL); */
+	do_keyctl(ARG_STR(KEYCTL_SET_REQKEY_KEYRING),
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU,
+		  "0xbadc0ded /* KEY_REQKEY_DEFL_??? */", NULL, 0UL);
+
+
+	/* KEYCTL_SET_TIMEOUT */
+	do_keyctl(ARG_STR(KEYCTL_SET_TIMEOUT),
+		  sizeof(int32_t), 0, NULL, "%d",
+		  sizeof(uint32_t), 0, NULL, "%u", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_SET_TIMEOUT),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(uint32_t), 3141592653U, NULL, "%u", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_SET_TIMEOUT),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, "3134983661", NULL,
+		  0UL);
+
+
+	/* KEYCTL_ASSUME_AUTHORITY */
+	do_keyctl(ARG_STR(KEYCTL_ASSUME_AUTHORITY),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_ASSUME_AUTHORITY),
+		  sizeof(int32_t), bogus_key1, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_ASSUME_AUTHORITY),
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_ASSUME_AUTHORITY),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_GET_SECURITY */
+	do_keyctl(ARG_STR(KEYCTL_GET_SECURITY),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(uint32_t), 0xbadc0dedU, NULL, "%u", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_SECURITY),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_SECURITY),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) 9, (uintptr_t) bogus_buf1, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 9, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_SECURITY),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) 256, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 256, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_SECURITY),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_THREAD_KEYRING), NULL,
+		  (size_t) -4, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) -4, NULL, ksize_fmt, 0UL);
+
+
+	/* KEYCTL_SESSION_TO_PARENT */
+	do_keyctl(ARG_STR(KEYCTL_SESSION_TO_PARENT), 0UL);
+
+
+	/* KEYCTL_REJECT */
+	do_keyctl(ARG_STR(KEYCTL_REJECT),
+		  sizeof(int32_t), 0, NULL, "%d",
+		  sizeof(uint32_t), 0, NULL, "%u",
+		  sizeof(uint32_t), 0, NULL, "%u",
+		  sizeof(int32_t), 0, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_REJECT),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(uint32_t), 3141592653U, NULL, "%u",
+		  sizeof(uint32_t), 2718281828U, NULL, "%u",
+		  sizeof(int32_t), bogus_key1, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_REJECT),
+		  sizeof(int32_t), bogus_key2, NULL, "%d",
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadca75facef157LLU, "4207866199", NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, "3134983661", NULL,
+		  sizeof(int32_t), bogus_key2, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_REJECT),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, "3134983661", NULL,
+		  sizeof(uint32_t), ARG_STR(ENODEV), NULL,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL);
+
+
+	/* KEYCTL_INSTANTIATE_IOV */
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE_IOV),
+		  sizeof(int32_t), 0, NULL, "%d",
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  sizeof(int32_t), 0, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE_IOV),
+		  sizeof(int32_t), bogus_key1, NULL, "%d",
+		  sizeof(char *), (char *) 0xfffffacefffffeedULL, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xdeadfeedLLU, NULL, ksize_fmt,
+		  sizeof(int32_t), bogus_key1, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE_IOV),
+		  sizeof(int32_t), bogus_key2, NULL, "%d",
+		  sizeof(char *), key_iov + IOV_SIZE, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 32LLU, NULL, ksize_fmt,
+		  sizeof(int32_t), bogus_key2, NULL, "%d");
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE_IOV),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  sizeof(key_iov), key_iov + IOV_SIZE - 4, key_iov_str1, NULL,
+		  sizeof(kernel_ulong_t), (kernel_ulong_t) 4, NULL,
+			  ksize_fmt,
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL);
+	do_keyctl(ARG_STR(KEYCTL_INSTANTIATE_IOV),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL,
+		  sizeof(key_iov), key_iov, key_iov_str2, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) IOV_SIZE, NULL, ksize_fmt,
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL);
+
+
+	/* KEYCTL_INVALIDATE */
+	do_keyctl(ARG_STR(KEYCTL_INVALIDATE),
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_INVALIDATE),
+		  sizeof(int32_t), bogus_key1, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_INVALIDATE),
+		  sizeof(int32_t), bogus_key2, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_INVALIDATE),
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_GET_PERSISTENT */
+	do_keyctl(ARG_STR(KEYCTL_GET_PERSISTENT),
+		  sizeof(uid_t), ARG_STR(-1), NULL,
+		  sizeof(int32_t), ARG_STR(KEY_SPEC_GROUP_KEYRING), NULL, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_PERSISTENT),
+		  sizeof(uid_t), 2718281828U, NULL, "%u",
+		  sizeof(int32_t), bogus_key1, NULL, "%d", 0UL);
+	do_keyctl(ARG_STR(KEYCTL_GET_PERSISTENT),
+		  sizeof(uid_t), 2718281828U, NULL, "%u",
+		  sizeof(kernel_ulong_t), bogus_key3, bogus_key3_str, NULL,
+		  0UL);
+
+
+	/* KEYCTL_DH_COMPUTE */
+	nul_terminated_buf = false;
+
+	/* Empty result is expected for these */
+	bogus_buf1[0] = '\377';
+	bogus_buf2[0] = '\377';
+
+	do_keyctl(ARG_STR(KEYCTL_DH_COMPUTE),
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(char *), ARG_STR(NULL), ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_DH_COMPUTE),
+		  sizeof(char *), kcdhp + 1, NULL, ptr_fmt,
+		  sizeof(char *), (char *) 0xfffff157ffffdeadULL, NULL, ptr_fmt,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL, ksize_fmt,
+		  0UL);
+	do_keyctl(ARG_STR(KEYCTL_DH_COMPUTE),
+		  sizeof(kcdhp), kcdhp, kcdhp_str, NULL,
+		  (size_t) 9, (uintptr_t) bogus_buf1, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 9, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_DH_COMPUTE),
+		  sizeof(kcdhp), kcdhp, kcdhp_str, NULL,
+		  (size_t) 256, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) 256, NULL, ksize_fmt, 0UL);
+	do_keyctl(ARG_STR(KEYCTL_DH_COMPUTE),
+		  sizeof(kcdhp), kcdhp, kcdhp_str, NULL,
+		  (size_t) -1, (uintptr_t) bogus_buf2, NULL, NULL,
+		  sizeof(kernel_ulong_t),
+		  (kernel_ulong_t) -1, NULL, ksize_fmt, 0UL);
+
+	nul_terminated_buf = true;
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_keyctl");
+
+#endif
diff --git a/tests/keyctl.test b/tests/keyctl.test
new file mode 100755
index 0000000..875a82d
--- /dev/null
+++ b/tests/keyctl.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of keyctl syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31 -s10
diff --git a/tests/kill.c b/tests/kill.c
index 0755d68..0e07e1f 100644
--- a/tests/kill.c
+++ b/tests/kill.c
@@ -29,7 +29,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_kill
 
diff --git a/tests/ksysent.sed b/tests/ksysent.sed
index 56fe042..63ded4a 100644
--- a/tests/ksysent.sed
+++ b/tests/ksysent.sed
@@ -1,10 +1,10 @@
-#!/bin/sed -nf
+#!/bin/sed -rnf
 
 # should not have been exported at all
-/#define[[:space:]]\+__NR_\(sys_epoll_\|arch_specific_syscall\|syscalls\|syscall_count\|syscall_max\|available\|reserved\|unused\)/d
+/#define[[:space:]]+__NR_(sys_epoll_|arch_specific_syscall|syscalls|syscall_count|syscall_max|available|reserved|unused)/d
 
-# should not be named this way
-s/__NR_\(arm\|xtensa\)_fadvise64_64/__NR_fadvise64_64/
+# should not  have been named this way
+s/__NR_(arm|xtensa)_fadvise64_64/__NR_fadvise64_64/
 
 # legacy names
 s/__NR_get_cpu/__NR_getcpu/
@@ -12,4 +12,4 @@
 s/__NR_paccept/__NR_accept4/
 
 # generate
-s/#define[[:space:]]\+__NR_\([a-z_][^[:space:]]\+\)\([[:space:]].*\)\?$/#ifdef __NR_\1\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
+s/#define[[:space:]]+__NR_([a-z_][^[:space:]]+)([[:space:]].*)?$/#ifdef __NR_\1\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
diff --git a/tests/lchown.c b/tests/lchown.c
index a116901..a07c878 100644
--- a/tests/lchown.c
+++ b/tests/lchown.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_lchown
 
diff --git a/tests/lchown32.c b/tests/lchown32.c
index ff5ad3e..29cb01d 100644
--- a/tests/lchown32.c
+++ b/tests/lchown32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_lchown32
 
diff --git a/tests/libmmsg.c b/tests/libmmsg.c
index 07feb7c..b0db26d 100644
--- a/tests/libmmsg.c
+++ b/tests/libmmsg.c
@@ -29,7 +29,7 @@
 
 #include "tests.h"
 #include <errno.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifndef __NR_recvmmsg
 # define __NR_recvmmsg -1
diff --git a/tests/libsocketcall.c b/tests/libsocketcall.c
index 718b50e..04d6710 100644
--- a/tests/libsocketcall.c
+++ b/tests/libsocketcall.c
@@ -30,7 +30,7 @@
 #include "tests.h"
 #include <errno.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 /*
  * Invoke a socket syscall, either directly or via __NR_socketcall.
diff --git a/tests/link.c b/tests/link.c
index 4b84e41..d6550fd 100644
--- a/tests/link.c
+++ b/tests/link.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_link
 
diff --git a/tests/linkat.c b/tests/linkat.c
index 06d550e..2c3b8ba 100644
--- a/tests/linkat.c
+++ b/tests/linkat.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_linkat
 
diff --git a/tests/llseek.c b/tests/llseek.c
index e82535a..e687e94 100644
--- a/tests/llseek.c
+++ b/tests/llseek.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR__llseek
 
diff --git a/tests/lseek.c b/tests/lseek.c
index e5efaa3..84b2752 100644
--- a/tests/lseek.c
+++ b/tests/lseek.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_lseek
 
diff --git a/tests/lstat.c b/tests/lstat.c
index 663b638..76cb8a2 100644
--- a/tests/lstat.c
+++ b/tests/lstat.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_lstat
 
diff --git a/tests/lstat64.c b/tests/lstat64.c
index 4a1858b..68ef638 100644
--- a/tests/lstat64.c
+++ b/tests/lstat64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_lstat64
 
@@ -34,6 +34,7 @@
 # define TEST_SYSCALL_STR "lstat64"
 # define STRUCT_STAT struct stat64
 # define STRUCT_STAT_STR "struct stat64"
+# define STRUCT_STAT_IS_STAT64 1
 # define SAMPLE_SIZE ((libc_off_t) 43147718418)
 # include "lstatx.c"
 
diff --git a/tests/mbind.c b/tests/mbind.c
index b0f044d..94d4553 100644
--- a/tests/mbind.c
+++ b/tests/mbind.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_mbind
 
diff --git a/tests/membarrier.c b/tests/membarrier.c
index 7364d0f..adf24ef 100644
--- a/tests/membarrier.c
+++ b/tests/membarrier.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_membarrier
 
diff --git a/tests/memfd_create.c b/tests/memfd_create.c
index 9fe7f6d..ef49bed 100644
--- a/tests/memfd_create.c
+++ b/tests/memfd_create.c
@@ -1,13 +1,21 @@
 #include "tests.h"
-#include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_memfd_create
 
+# include <stdio.h>
+# include <unistd.h>
+
 int
 main(void)
 {
-	syscall(__NR_memfd_create, "strace", 7);
+	static const char text[] = "strace";
+	int rc = syscall(__NR_memfd_create, text, 7);
+
+	printf("memfd_create(\"%s\", %s) = %d %s (%m)\n",
+	       text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name());
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests/memfd_create.expected b/tests/memfd_create.expected
deleted file mode 100644
index 6fb938f..0000000
--- a/tests/memfd_create.expected
+++ /dev/null
@@ -1 +0,0 @@
-memfd_create\("strace", MFD_CLOEXEC\|MFD_ALLOW_SEALING\|0x4\) += -1 .*
diff --git a/tests/memfd_create.test b/tests/memfd_create.test
index 6a34fc1..4361dae 100755
--- a/tests/memfd_create.test
+++ b/tests/memfd_create.test
@@ -1,11 +1,6 @@
 #!/bin/sh
 
-# Check memfd_create syscall decoding.
+# Check decoding of memfd_create syscall.
 
 . "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -e memfd_create $args
-match_grep
-
-exit 0
+run_strace_match_diff
diff --git a/tests/migrate_pages.c b/tests/migrate_pages.c
index 995723c..9f71b52 100644
--- a/tests/migrate_pages.c
+++ b/tests/migrate_pages.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_migrate_pages
 
diff --git a/tests/mkdir.c b/tests/mkdir.c
index dbb43c3..d971b18 100644
--- a/tests/mkdir.c
+++ b/tests/mkdir.c
@@ -1,23 +1,11 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_mkdir
 
-# include <stdio.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-	static const char sample[] = "mkdir";
-
-	long rc = syscall(__NR_mkdir, sample, 0600);
-	printf("mkdir(\"%s\", 0600) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	puts("+++ exited with 0 +++");
-	return 0;
-}
+# define TEST_SYSCALL_NR __NR_mkdir
+# define TEST_SYSCALL_STR "mkdir"
+# include "umode_t.c"
 
 #else
 
diff --git a/tests/mkdir.test b/tests/mkdir.test
index 98d5a52..38ed692 100755
--- a/tests/mkdir.test
+++ b/tests/mkdir.test
@@ -3,4 +3,4 @@
 # Check mkdir syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a20
diff --git a/tests/mkdirat.c b/tests/mkdirat.c
index cbdf16c..ce2e9c1 100644
--- a/tests/mkdirat.c
+++ b/tests/mkdirat.c
@@ -1,24 +1,13 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_mkdirat
 
-# include <stdio.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-	static const char sample[] = "mkdirat.sample";
-	const long fd = (long) 0xdeadbeefffffffff;
-
-	long rc = syscall(__NR_mkdirat, fd, sample, 0600);
-	printf("mkdirat(%d, \"%s\", 0600) = %ld %s (%m)\n",
-	       (int) fd, sample, rc, errno2name());
-
-	puts("+++ exited with 0 +++");
-	return 0;
-}
+# define TEST_SYSCALL_NR		__NR_mkdirat
+# define TEST_SYSCALL_STR		"mkdirat"
+# define TEST_SYSCALL_PREFIX_ARGS	(long int) 0xdeadbeefffffffff,
+# define TEST_SYSCALL_PREFIX_STR	"-1, "
+# include "umode_t.c"
 
 #else
 
diff --git a/tests/mkdirat.test b/tests/mkdirat.test
index e41ce35..0fcb841 100755
--- a/tests/mkdirat.test
+++ b/tests/mkdirat.test
@@ -3,4 +3,4 @@
 # Check mkdirat syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a28
diff --git a/tests/mknod.c b/tests/mknod.c
index 91ce751..2d42874 100644
--- a/tests/mknod.c
+++ b/tests/mknod.c
@@ -1,51 +1,64 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_mknod
 
 # include <stdio.h>
 # include <sys/stat.h>
+# include <sys/sysmacros.h>
 # include <unistd.h>
 
-# ifdef MAJOR_IN_SYSMACROS
-#  include <sys/sysmacros.h>
-# endif
-# ifdef MAJOR_IN_MKDEV
-#  include <sys/mkdev.h>
-# endif
+static const char sample[] = "mknod";
 
-# define TMP_FILE "mknod"
+static long
+call_mknod(unsigned short mode, unsigned long dev)
+{
+	unsigned long lmode = (unsigned long) 0xffffffffffff0000 | mode;
+	return syscall(__NR_mknod, sample, lmode, dev);
+}
 
 int
 main(void)
 {
-	long rc = syscall(__NR_mknod, TMP_FILE, 0, 0xdeadbeef);
-	printf("mknod(\"%s\", 0) = %ld %s (%m)\n",
-	       TMP_FILE, rc, errno2name());
+	unsigned long dev = (unsigned long) 0xdeadbeefbadc0ded;
 
-	rc = syscall(__NR_mknod, TMP_FILE, -1L, 0xdeadbeef);
-	printf("mknod(\"%s\", %#o) = %ld %s (%m)\n",
-	       TMP_FILE, -1, rc, errno2name());
+	long rc = call_mknod(0, dev);
+	printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
 
-	rc = syscall(__NR_mknod, TMP_FILE, S_IFREG|0600, 0);
-	printf("mknod(\"%s\", S_IFREG|0600) = %ld %s (%m)\n",
-	       TMP_FILE, rc, errno2name());
+	rc = call_mknod(0xffff, dev);
+	printf("mknod(\"%s\", %#03ho) = %ld %s (%m)\n",
+	       sample, (unsigned short) -1, rc, errno2name());
 
-	unsigned long dev =
-		(unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
+	rc = call_mknod(S_IFREG, 0);
+	printf("mknod(\"%s\", S_IFREG|000) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
 
-	rc = syscall(__NR_mknod, TMP_FILE, S_IFCHR | 0400, dev);
-	printf("mknod(\"%s\", S_IFCHR|0400, makedev(1, 7)) = %ld %s (%m)\n",
-	       TMP_FILE, rc, errno2name());
+	rc = call_mknod(S_IFDIR | 06, 0);
+	printf("mknod(\"%s\", S_IFDIR|006) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
 
-	const unsigned long mode =
-		((unsigned long) 0xfacefeedffffffff & ~S_IFMT) | S_IFBLK;
+	rc = call_mknod(S_IFLNK | 060, 0);
+	printf("mknod(\"%s\", S_IFLNK|060) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	rc = call_mknod(S_IFIFO | 0600, 0);
+	printf("mknod(\"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	dev = (unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
+
+	rc = call_mknod(S_IFCHR | 024, dev);
+	printf("mknod(\"%s\", S_IFCHR|024, makedev(1, 7)) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
 	dev = (unsigned long) 0xdeadbeefbadc0ded;
 
-	rc = syscall(__NR_mknod, TMP_FILE, mode, dev);
-	printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#o"
+	rc = call_mknod(mode, dev);
+	printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
 	       ", makedev(%u, %u)) = %ld %s (%m)\n",
-	       TMP_FILE, (unsigned) mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX),
+	       sample, mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX),
 	       major((unsigned) dev), minor((unsigned) dev),
 	       rc, errno2name());
 
diff --git a/tests/mknodat.c b/tests/mknodat.c
index 2cdc47c..614513e 100644
--- a/tests/mknodat.c
+++ b/tests/mknodat.c
@@ -1,34 +1,67 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_mknodat
 
 # include <stdio.h>
 # include <sys/stat.h>
+# include <sys/sysmacros.h>
 # include <unistd.h>
 
-# ifdef MAJOR_IN_SYSMACROS
-#  include <sys/sysmacros.h>
-# endif
-# ifdef MAJOR_IN_MKDEV
-#  include <sys/mkdev.h>
-# endif
+static const char sample[] = "mknodat_sample";
+static const long int fd = (long int) 0xdeadbeefffffffff;
+
+static long
+call_mknodat(unsigned short mode, unsigned long dev)
+{
+	unsigned long lmode = (unsigned long) 0xffffffffffff0000 | mode;
+	return syscall(__NR_mknodat, fd, sample, lmode, dev);
+}
 
 int
 main(void)
 {
-	static const char sample[] = "mknokat_sample";
-	const long int fd = (long int) 0xdeadbeefffffffff;
-	long rc = syscall(__NR_mknodat, fd, sample, S_IFREG|0600, 0);
-	printf("mknodat(%d, \"%s\", S_IFREG|0600) = %ld %s (%m)\n",
-	       (int) fd, sample, rc, errno2name());
+	unsigned long dev = (unsigned long) 0xdeadbeefbadc0ded;
 
-	const unsigned long dev =
-		(unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
+	long rc = call_mknodat(0, dev);
+	printf("mknodat(-1, \"%s\", 000) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
 
-	rc = syscall(__NR_mknodat, fd, sample, S_IFCHR | 0400, dev);
-	printf("mknodat(%d, \"%s\", S_IFCHR|0400, makedev(1, 7)) = %ld %s (%m)\n",
-	       (int) fd, sample, rc, errno2name());
+	rc = call_mknodat(0xffff, dev);
+	printf("mknodat(-1, \"%s\", %#03ho) = %ld %s (%m)\n",
+	       sample, (unsigned short) -1, rc, errno2name());
+
+	rc = call_mknodat(S_IFREG, 0);
+	printf("mknodat(-1, \"%s\", S_IFREG|000) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	rc = call_mknodat(S_IFDIR | 06, 0);
+	printf("mknodat(-1, \"%s\", S_IFDIR|006) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	rc = call_mknodat(S_IFLNK | 060, 0);
+	printf("mknodat(-1, \"%s\", S_IFLNK|060) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	rc = call_mknodat(S_IFIFO | 0600, 0);
+	printf("mknodat(-1, \"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	dev = (unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
+
+	rc = call_mknodat(S_IFCHR | 024, dev);
+	printf("mknodat(-1, \"%s\", S_IFCHR|024, makedev(1, 7)) = %ld %s (%m)\n",
+	       sample, rc, errno2name());
+
+	const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
+	dev = (unsigned long) 0xdeadbeefbadc0ded;
+
+	rc = call_mknodat(mode, dev);
+	printf("mknodat(-1, \"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
+	       ", makedev(%u, %u)) = %ld %s (%m)\n",
+	       sample, mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX),
+	       major((unsigned) dev), minor((unsigned) dev),
+	       rc, errno2name());
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/mknodat.test b/tests/mknodat.test
index edf0498..1701a36 100755
--- a/tests/mknodat.test
+++ b/tests/mknodat.test
@@ -3,4 +3,4 @@
 # Check mknodat syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff
+run_strace_match_diff -a35
diff --git a/tests/mlock.c b/tests/mlock.c
index a56dc1f..be962e2 100644
--- a/tests/mlock.c
+++ b/tests/mlock.c
@@ -1,30 +1,22 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_mlock && defined __NR_munlock
 
 # include <stdio.h>
 # include <unistd.h>
 
-const int size = 1024;
-
 int
 main(void)
 {
+	const int size = 1024;
 	const char *addr = tail_alloc(size);
-	if (syscall(__NR_mlock, addr, size) == 0) {
-		printf("mlock(%p, %d) = 0\n", addr, size);
-	} else {
-		printf("mlock(%p, %d) = -1 %s (%m)\n",
-		       addr, size, errno2name());
-	}
 
-	if (syscall(__NR_munlock, addr, size) == 0) {
-		printf("munlock(%p, %d) = 0\n", addr, size);
-	} else {
-		printf("munlock(%p, %d) = -1 %s (%m)\n",
-		       addr, size, errno2name());
-	}
+	long rc = syscall(__NR_mlock, addr, size);
+	printf("mlock(%p, %d) = %s\n", addr, size, sprintrc(rc));
+
+	rc = syscall(__NR_munlock, addr, size);
+	printf("munlock(%p, %d) = %s\n", addr, size, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/mlock2.c b/tests/mlock2.c
index af63917..e557042 100644
--- a/tests/mlock2.c
+++ b/tests/mlock2.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_mlock2
 
@@ -36,9 +36,12 @@
 int
 main(void)
 {
-	long rc = syscall(__NR_mlock2, 0xdeadbeef, 0xdefaced, 0xffff);
-	printf("mlock2(0xdeadbeef, 233811181, MLOCK_ONFAULT|0xfffe)"
-	       " = %ld %s (%m)\n", rc, errno2name());
+	const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
+	const unsigned long len = (unsigned long) 0xcafef00dbadc0dedULL;
+
+	long rc = syscall(__NR_mlock2, addr, len, -1UL);
+	printf("mlock2(%#lx, %lu, MLOCK_ONFAULT|0xfffffffe)"
+	       " = %ld %s (%m)\n", addr, len, rc, errno2name());
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/mlockall.c b/tests/mlockall.c
index cafa4d6..682d070 100644
--- a/tests/mlockall.c
+++ b/tests/mlockall.c
@@ -35,12 +35,11 @@
 int
 main(void)
 {
-	printf("mlockall(0) = %d EINVAL (%m)\n", mlockall(0));
+	int rc = mlockall(0);
+	printf("mlockall(0) = %s\n", sprintrc(rc));
 
-	if (mlockall(MCL_CURRENT) == 0)
-		puts("mlockall(MCL_CURRENT) = 0");
-	else
-		printf("mlockall(MCL_CURRENT) = -1 %s (%m)\n", errno2name());
+	rc = mlockall(MCL_CURRENT);
+	printf("mlockall(MCL_CURRENT) = %s\n", sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/mmsg_name-v.c b/tests/mmsg_name-v.c
index 60bd2bc..c663536 100644
--- a/tests/mmsg_name-v.c
+++ b/tests/mmsg_name-v.c
@@ -1,4 +1,4 @@
 /* This file is part of mmsg_name-v strace test. */
-#define VERBOSE_MMSGHDR
+#define VERBOSE 1
 #define TEST_NAME "mmsg_name-v"
 #include "mmsg_name.c"
diff --git a/tests/mmsg_name.c b/tests/mmsg_name.c
index f2b624a..a7a55c5 100644
--- a/tests/mmsg_name.c
+++ b/tests/mmsg_name.c
@@ -121,7 +121,7 @@
 		if (i)
 			printf(", ");
 		if (i >= IOV_MAX
-# ifndef VERBOSE_MMSGHDR
+# if !VERBOSE
 			|| i >= DEFAULT_STRLEN
 # endif
 		   ) {
@@ -165,7 +165,7 @@
 		if (i)
 			printf(", ");
 		if (i >= IOV_MAX
-#ifndef VERBOSE_MMSGHDR
+#if !VERBOSE
 			|| i >= DEFAULT_STRLEN
 #endif
 		   ) {
@@ -205,7 +205,7 @@
 	for (i = 0; i < rc; ++i) {
 		if (i)
 			printf(", ");
-#ifndef VERBOSE_MMSGHDR
+#if !VERBOSE
 		if (i >= DEFAULT_STRLEN) {
 			printf("...");
 			break;
diff --git a/tests/move_pages.c b/tests/move_pages.c
index 1059366..3be7446 100644
--- a/tests/move_pages.c
+++ b/tests/move_pages.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_move_pages
 
@@ -140,25 +140,19 @@
 
 	long rc = syscall(__NR_move_pages,
 			  pid, count, pages, NULL, status, flags);
+	const char *errstr = sprintrc(rc);
+	printf("move_pages(%d, %lu, ", (int) pid, count);
+	print_page_array(pages, count, 0);
+	printf(", NULL, ");
 	if (rc) {
-		int saved_errno = errno;
-		printf("move_pages(%d, %lu, ", (int) pid, count);
-		print_page_array(pages, count, 0);
-		printf(", NULL, ");
 		if (count)
 			printf("%p", status);
 		else
 			printf("[]");
-		errno = saved_errno;
-		printf(", MPOL_MF_MOVE) = %ld %s (%m)\n",
-		       rc, errno2name());
 	} else {
-		printf("move_pages(%d, %lu, ", (int) pid, count);
-		print_page_array(pages, count, 0);
-		printf(", NULL, ");
 		print_status_array(status, count);
-		printf(", MPOL_MF_MOVE) = 0\n");
 	}
+	printf(", MPOL_MF_MOVE) = %s\n", errstr);
 }
 
 static void
@@ -174,7 +168,7 @@
 
 	long rc = syscall(__NR_move_pages,
 			  pid, count, pages, nodes, status, flags);
-	int saved_errno = errno;
+	const char *errstr = sprintrc(rc);
 	printf("move_pages(%d, %lu, ", (int) pid, count);
 	print_page_array(pages, count, offset);
 	printf(", ");
@@ -184,13 +178,7 @@
 		printf("%p", status);
 	else
 		printf("[]");
-	printf(", MPOL_MF_MOVE_ALL) = ");
-	if (rc) {
-		errno = saved_errno;
-		printf("%ld %s (%m)\n", rc, errno2name());
-	} else {
-		puts("0");
-	}
+	printf(", MPOL_MF_MOVE_ALL) = %s\n", errstr);
 }
 
 int
diff --git a/tests/msg_control-v.c b/tests/msg_control-v.c
index d2a5653..b0afa52 100644
--- a/tests/msg_control-v.c
+++ b/tests/msg_control-v.c
@@ -1,3 +1,3 @@
 /* This file is part of msg_control-v strace test. */
-#define VERBOSE_MSGHDR
+#define VERBOSE 1
 #include "msg_control.c"
diff --git a/tests/msg_control.c b/tests/msg_control.c
index 4f23b2a..7540c3d 100644
--- a/tests/msg_control.c
+++ b/tests/msg_control.c
@@ -77,7 +77,7 @@
 	for (i = 0; i < nfd; ++i) {
 		if (i)
 			printf(", ");
-#ifndef VERBOSE_MSGHDR
+#if !VERBOSE
 		if (i >= DEFAULT_STRLEN) {
 			printf("...");
 			break;
@@ -479,7 +479,7 @@
 	for (i = 0; i < data_len; ++i) {
 		if (i)
 			printf(", ");
-#ifndef VERBOSE_MSGHDR
+#if !VERBOSE
 		if (i >= DEFAULT_STRLEN) {
 			printf("...");
 			break;
diff --git a/tests/nanosleep.c b/tests/nanosleep.c
index 6b5999b..db430e5 100644
--- a/tests/nanosleep.c
+++ b/tests/nanosleep.c
@@ -45,7 +45,7 @@
 		struct timespec ts;
 		uint32_t pad[2];
 	} req = {
-		.ts = { .tv_nsec = 0xc0de1 },
+		.ts.tv_nsec = 0xc0de1,
 		.pad = { 0xdeadbeef, 0xbadc0ded }
 	}, rem = {
 		.ts = { .tv_sec = 0xc0de2, .tv_nsec = 0xc0de3 },
diff --git a/tests/netlink_protocol.c b/tests/netlink_protocol.c
index aee9a87..34e114b 100644
--- a/tests/netlink_protocol.c
+++ b/tests/netlink_protocol.c
@@ -61,83 +61,65 @@
 		.magic = "abcd"
 	};
 	struct req *const req = tail_memdup(&c_req, sizeof(c_req));
+	long rc;
+	const char *errstr;
 
 	/* zero address */
-	if (sendto(fd, NULL, sizeof(*req), MSG_DONTWAIT, NULL, 0) != -1)
-		perror_msg_and_skip("sendto");
-
-	printf("sendto(%d, NULL, %u, MSG_DONTWAIT, NULL, 0) = -1 %s (%m)\n",
-	       fd, (unsigned) sizeof(*req), errno2name());
+	rc = sendto(fd, NULL, sizeof(*req), MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, NULL, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, (unsigned) sizeof(*req), sprintrc(rc));
 
 	/* zero length */
-	if (sendto(fd, req, 0, MSG_DONTWAIT, NULL, 0) != 0)
-		perror_msg_and_skip("sendto");
-
-	printf("sendto(%d, \"\", 0, MSG_DONTWAIT, NULL, 0) = 0\n", fd);
+	rc = sendto(fd, req, 0, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, \"\", 0, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, sprintrc(rc));
 
 	/* zero address and length */
-	if (sendto(fd, NULL, 0, MSG_DONTWAIT, NULL, 0) != 0)
-		perror_msg_and_skip("sendto");
-
-	printf("sendto(%d, NULL, 0, MSG_DONTWAIT, NULL, 0) = 0\n", fd);
+	rc = sendto(fd, NULL, 0, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, NULL, 0, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, sprintrc(rc));
 
 	/* unfetchable struct nlmsghdr */
 	const void *const efault = tail_alloc(sizeof(struct nlmsghdr) - 1);
-	sendto(fd, efault, sizeof(struct nlmsghdr), MSG_DONTWAIT, NULL, 0);
-
-	printf("sendto(%d, %p, %u, MSG_DONTWAIT, NULL, 0) = -1 EFAULT (%m)\n",
-	       fd, efault, (unsigned) sizeof(struct nlmsghdr));
+	rc = sendto(fd, efault, sizeof(struct nlmsghdr), MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, %p, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, efault, (unsigned) sizeof(struct nlmsghdr), sprintrc(rc));
 
 	/* whole message length < sizeof(struct nlmsghdr) */
-	if (sendto(fd, req->magic, sizeof(req->magic), MSG_DONTWAIT, NULL, 0)
-	    != (unsigned) sizeof(req->magic))
-		perror_msg_and_skip("sendto");
-
-	printf("sendto(%d, \"abcd\", %u, MSG_DONTWAIT, NULL, 0) = %u\n",
-	       fd, (unsigned) sizeof(req->magic), (unsigned) sizeof(req->magic));
+	rc = sendto(fd, req->magic, sizeof(req->magic), MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, \"abcd\", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, (unsigned) sizeof(req->magic), sprintrc(rc));
 
 	/* a single message with some data */
-	if (sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0) !=
-	    (unsigned) sizeof(*req))
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, {{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-	       ", seq=0, pid=0}, \"abcd\"}, %u, MSG_DONTWAIT, NULL, 0) = %u\n",
+	       ", seq=0, pid=0}, \"abcd\"}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
 	       fd, req->nlh.nlmsg_len, NLM_F_DUMP,
-	       (unsigned) sizeof(*req), (unsigned) sizeof(*req));
+	       (unsigned) sizeof(*req), sprintrc(rc));
 
 	/* a single message without data */
 	req->nlh.nlmsg_len = sizeof(req->nlh);
-
-	if (sendto(fd, &req->nlh, sizeof(req->nlh), MSG_DONTWAIT, NULL, 0)
-	    != (unsigned) sizeof(req->nlh))
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, &req->nlh, sizeof(req->nlh), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, {{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-	       ", seq=0, pid=0}}, %u, MSG_DONTWAIT, NULL, 0) = %u\n",
+	       ", seq=0, pid=0}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
 	       fd, req->nlh.nlmsg_len, NLM_F_DUMP,
-	       (unsigned) sizeof(req->nlh), (unsigned) sizeof(req->nlh));
+	       (unsigned) sizeof(req->nlh), sprintrc(rc));
 
 	/* nlmsg_len > whole message length */
 	req->nlh.nlmsg_len = sizeof(*req) + 8;
-	if (sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0) !=
-	    (unsigned) sizeof(*req))
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, {{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-	       ", seq=0, pid=0}, \"abcd\"}, %u, MSG_DONTWAIT, NULL, 0) = %u\n",
+	       ", seq=0, pid=0}, \"abcd\"}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
 	       fd, req->nlh.nlmsg_len, NLM_F_DUMP,
-	       (unsigned) sizeof(*req), (unsigned) sizeof(*req));
+	       (unsigned) sizeof(*req), sprintrc(rc));
 
 	/* nlmsg_len < sizeof(struct nlmsghdr) */
 	req->nlh.nlmsg_len = 8;
-	if (sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0) != sizeof(*req))
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, {{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-	       ", seq=0, pid=0}}, %u, MSG_DONTWAIT, NULL, 0) = %u\n",
+	       ", seq=0, pid=0}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
 	       fd, req->nlh.nlmsg_len, NLM_F_DUMP,
-	       (unsigned) sizeof(*req), (unsigned) sizeof(*req));
+	       (unsigned) sizeof(*req), sprintrc(rc));
 
 	/* a sequence of two nlmsg objects */
 	struct reqs {
@@ -148,53 +130,47 @@
 	memcpy(&reqs->req1, &c_req, sizeof(c_req));
 	memcpy(&reqs->req2, &c_req, sizeof(c_req));
 
-	sendto(fd, reqs, sizeof(*reqs), MSG_DONTWAIT, NULL, 0);
-
+	rc = sendto(fd, reqs, sizeof(*reqs), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, [{{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
 	       ", seq=0, pid=0}, \"abcd\"}, {{len=%u, type=NLMSG_NOOP"
 	       ", flags=NLM_F_REQUEST|0x%x, seq=0, pid=0}, \"abcd\"}]"
-	       ", %u, MSG_DONTWAIT, NULL, 0) = %u\n",
+	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
 	       fd, reqs->req1.nlh.nlmsg_len, NLM_F_DUMP,
 	       reqs->req2.nlh.nlmsg_len, NLM_F_DUMP,
-	       (unsigned) sizeof(*reqs), (unsigned) sizeof(*reqs));
+	       (unsigned) sizeof(*reqs), sprintrc(rc));
 
 	/* unfetchable second struct nlmsghdr */
 	void *const efault2 = tail_memdup(&reqs->req1, sizeof(reqs->req1));
-	sendto(fd, efault2, sizeof(*reqs), MSG_DONTWAIT, NULL, 0);
-
+	rc = sendto(fd, efault2, sizeof(*reqs), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, [{{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
 	       ", seq=0, pid=0}, \"abcd\"}, %p], %u, MSG_DONTWAIT, NULL, 0)"
-	       " = -1 EFAULT (%m)\n",
+	       " = %s\n",
 	       fd, reqs->req1.nlh.nlmsg_len, NLM_F_DUMP,
-	       &((struct reqs *) efault2)->req2, (unsigned) sizeof(*reqs));
+	       &((struct reqs *) efault2)->req2, (unsigned) sizeof(*reqs),
+	       sprintrc(rc));
 
 	/* message length is not enough for the second struct nlmsghdr */
-	if (sendto(fd, reqs, sizeof(*reqs) - sizeof(req->nlh), MSG_DONTWAIT, NULL, 0)
-	    != sizeof(*reqs) - sizeof(req->nlh))
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, reqs, sizeof(*reqs) - sizeof(req->nlh), MSG_DONTWAIT,
+		    NULL, 0);
+	errstr = sprintrc(rc);
 	printf("sendto(%d, [{{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
 	       ", seq=0, pid=0}, \"abcd\"}, \"",
 	       fd, reqs->req1.nlh.nlmsg_len, NLM_F_DUMP);
 	print_quoted_memory((void *) &reqs->req2.nlh,
 			    sizeof(reqs->req2) - sizeof(req->nlh));
-	printf("\"], %u, MSG_DONTWAIT, NULL, 0) = %u\n",
-	       (unsigned) (sizeof(*reqs) - sizeof(req->nlh)),
-	       (unsigned) (sizeof(*reqs) - sizeof(req->nlh)));
+	printf("\"], %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       (unsigned) (sizeof(*reqs) - sizeof(req->nlh)), errstr);
 
 	/* second nlmsg_len < sizeof(struct nlmsghdr) */
 	reqs->req2.nlh.nlmsg_len = 4;
-	if (sendto(fd, reqs, sizeof(*reqs), MSG_DONTWAIT, NULL, 0)
-	    != sizeof(*reqs))
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, reqs, sizeof(*reqs), MSG_DONTWAIT, NULL, 0);
 	printf("sendto(%d, [{{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
 	       ", seq=0, pid=0}, \"abcd\"}, {{len=%u, type=NLMSG_NOOP"
 	       ", flags=NLM_F_REQUEST|0x%x, seq=0, pid=0}}], %u"
-	       ", MSG_DONTWAIT, NULL, 0) = %u\n",
+	       ", MSG_DONTWAIT, NULL, 0) = %s\n",
 	       fd, reqs->req1.nlh.nlmsg_len, NLM_F_DUMP,
 	       reqs->req2.nlh.nlmsg_len, NLM_F_DUMP,
-	       (unsigned) sizeof(*reqs), (unsigned) sizeof(*reqs));
+	       (unsigned) sizeof(*reqs), sprintrc(rc));
 
 	/* abbreviated output */
 # define DEFAULT_STRLEN 32
@@ -210,9 +186,8 @@
 		msgs[i].nlmsg_pid = 0;
 	}
 
-	if (sendto(fd, msgs, msg_len, MSG_DONTWAIT, NULL, 0) != (int) msg_len)
-		perror_msg_and_skip("sendto");
-
+	rc = sendto(fd, msgs, msg_len, MSG_DONTWAIT, NULL, 0);
+	errstr = sprintrc(rc);
 	printf("sendto(%d, [", fd);
 	for (i = 0; i < DEFAULT_STRLEN; ++i) {
 		if (i)
@@ -221,7 +196,7 @@
 		       ", seq=%u, pid=0}}",
 		       msgs[i].nlmsg_len, NLM_F_DUMP, msgs[i].nlmsg_seq);
 	}
-	printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %u\n", msg_len, msg_len);
+	printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %s\n", msg_len, errstr);
 }
 
 int main(void)
diff --git a/tests/newfstatat.c b/tests/newfstatat.c
index 6fb34db..b501d88 100644
--- a/tests/newfstatat.c
+++ b/tests/newfstatat.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_newfstatat
 
diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c
index c9c92c4..8e09acb 100644
--- a/tests/nsyscalls.c
+++ b/tests/nsyscalls.c
@@ -48,7 +48,7 @@
 #include "syscallent.h"
 };
 
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __X32_SYSCALL_BIT && defined __NR_read \
  && (__X32_SYSCALL_BIT & __NR_read) != 0
@@ -57,10 +57,8 @@
 # define SYSCALL_BIT 0
 #endif
 
-static const unsigned long nr = ARRAY_SIZE(syscallent) | SYSCALL_BIT;
-
-int
-main(void)
+static void
+test_syscall(const unsigned long nr)
 {
 	static const kernel_ulong_t a[] = {
 		(kernel_ulong_t) 0xface0fedbadc0ded,
@@ -71,14 +69,15 @@
 		(kernel_ulong_t) 0xface5fedbadc5ded
 	};
 
-	long rc = syscall(nr, a[0], a[1], a[2], a[3], a[4], a[5]);
+	long rc = syscall(nr | SYSCALL_BIT,
+			  a[0], a[1], a[2], a[3], a[4], a[5]);
 #ifdef LINUX_MIPSO32
 	printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)"
-	       " = %ld ENOSYS (%m)\n", nr,
+	       " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT,
 	       a[0], a[1], a[2], a[3], a[4], a[5], rc);
 #else
 	printf("syscall_%lu(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)"
-	       " = %ld (errno %d)\n", nr & (~SYSCALL_BIT),
+	       " = %ld (errno %d)\n", nr,
 	       (unsigned long long) a[0],
 	       (unsigned long long) a[1],
 	       (unsigned long long) a[2],
@@ -87,6 +86,20 @@
 	       (unsigned long long) a[5],
 	       rc, errno);
 #endif
+}
+
+int
+main(void)
+{
+	test_syscall(ARRAY_SIZE(syscallent));
+
+#ifdef SYS_socket_subcall
+	test_syscall(SYS_socket_subcall + 1);
+#endif
+
+#ifdef SYS_ipc_subcall
+	test_syscall(SYS_ipc_subcall + 1);
+#endif
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/nsyscalls.test b/tests/nsyscalls.test
index 3760831..61f72d5 100755
--- a/tests/nsyscalls.test
+++ b/tests/nsyscalls.test
@@ -4,9 +4,10 @@
 
 . "${srcdir=.}/init.sh"
 
-case "$STRACE_ARCH" in
-	mips) syscall=syscall ;;
-	*) syscall=none ;;
-esac
+if [ "$MIPS_ABI" = "o32" ]; then
+	syscall=syscall
+else
+	syscall=none
+fi
 
 run_strace_match_diff -e trace=$syscall
diff --git a/tests/old_mmap.c b/tests/old_mmap.c
index 97051db..de1bafb 100644
--- a/tests/old_mmap.c
+++ b/tests/old_mmap.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 /*
  * On s390x, this is the mmap syscall used by glibc, so,
diff --git a/tests/oldselect.c b/tests/oldselect.c
index b8f265a..7413fc3 100644
--- a/tests/oldselect.c
+++ b/tests/oldselect.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
diff --git a/tests/open.c b/tests/open.c
index 726b1ec..01e89b0 100644
--- a/tests/open.c
+++ b/tests/open.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_open
 
@@ -38,27 +38,35 @@
 main(void)
 {
 	static const char sample[] = "open.sample";
-	int fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400);
 
-	if (fd < 0) {
-		printf("open(\"%s\", O_RDONLY|O_CREAT, 0400)"
-		       " = %d %s (%m)\n", sample, fd, errno2name());
-	} else {
-		printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %d\n",
-		       sample, fd);
+	long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400);
+	printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
+	       sample, sprintrc(fd));
+
+	if (fd != -1) {
 		close(fd);
 		if (unlink(sample))
 			perror_msg_and_fail("unlink");
 
 		fd = syscall(__NR_open, sample, O_RDONLY);
-		printf("open(\"%s\", O_RDONLY) = %d %s (%m)\n",
-		       sample, fd, errno2name());
+		printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd));
 
 		fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000);
-		printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000)"
-		       " = %d %s (%m)\n", sample, fd, errno2name());
+		printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
+		       sample, sprintrc(fd));
 	}
 
+#ifdef O_TMPFILE
+# if O_TMPFILE == (O_TMPFILE & ~O_DIRECTORY)
+#  define STR_O_TMPFILE "O_TMPFILE"
+# else
+#  define STR_O_TMPFILE "O_DIRECTORY|O_TMPFILE"
+# endif
+	fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600);
+	printf("open(\"%s\", O_WRONLY|%s, 0600) = %s\n",
+	       sample, STR_O_TMPFILE, sprintrc(fd));
+#endif /* O_TMPFILE */
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests/openat.c b/tests/openat.c
index a3de1dd..1d6765c 100644
--- a/tests/openat.c
+++ b/tests/openat.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_openat
 
@@ -38,20 +38,19 @@
 main(void)
 {
 	static const char sample[] = "openat.sample";
-	int fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
-	if (fd == -1) {
-		printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400)"
-		       " = -1 %s (%m)\n", sample, errno2name());
-	} else {
-		printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400)"
-		       " = %d\n", sample, fd);
+
+	long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
+	printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
+	       sample, sprintrc(fd));
+
+	if (fd != -1) {
 		close(fd);
 		if (unlink(sample) == -1)
 			perror_msg_and_fail("unlink");
 
 		fd = syscall(__NR_openat, -100, sample, O_RDONLY);
-		printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %d %s (%m)\n",
-		       sample, fd, errno2name());
+		printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n",
+		       sample, sprintrc(fd));
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/pause.c b/tests/pause.c
index 6dadd15..8687362 100644
--- a/tests/pause.c
+++ b/tests/pause.c
@@ -29,10 +29,11 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_pause
 
+# include <errno.h>
 # include <signal.h>
 # include <stdio.h>
 # include <sys/time.h>
@@ -60,8 +61,12 @@
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_fail("setitimer");
 
-	pause();
-	printf("pause() = ? ERESTARTNOHAND (To be restarted if no handler)\n");
+	syscall(__NR_pause);
+	if (errno == ENOSYS)
+		printf("pause() = -1 ENOSYS (%m)\n");
+	else
+		printf("pause() = ? ERESTARTNOHAND"
+		       " (To be restarted if no handler)\n");
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/pc.test b/tests/pc.test
index cc55878..beadb7d 100755
--- a/tests/pc.test
+++ b/tests/pc.test
@@ -37,13 +37,13 @@
 $STRACE $args 2> "$LOG" ||
 	dump_log_and_fail_with "$STRACE $args failed"
 
-len="$(sed -n 's/^\[[[:xdigit:]]\+\] write(-1, NULL, \([[:digit:]]\{1,2\}\))[[:space:]]\+= -1 .*/\1/p' "$LOG")" &&
+len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, NULL, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
 [ -n "$len" ] &&
-pid="$(sed -n 's/^\[[[:xdigit:]]\{'"$len"'\}\] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_\(KILLED\|DUMPED\), si_pid=\([[:digit:]]\+\), .*/\2/p' "$LOG")" &&
+pid="$(sed -r -n 's/^\[[[:xdigit:]]{'"$len"'}\] --- SIGCHLD \{si_signo=SIGCHLD, si_code=CLD_(KILLED|DUMPED), si_pid=([[:digit:]]+), .*/\2/p' "$LOG")" &&
 [ -n "$pid" ] &&
-ip="$(sed -n 's/^\[pid \+'"$pid"'\] \[\([[:xdigit:]]\{'"$len"'\}\)] --- SIGSEGV {.*} ---$/\1/p' "$LOG")" &&
+ip="$(sed -r -n 's/^\[pid +'"$pid"'\] \[([[:xdigit:]]{'"$len"'})] --- SIGSEGV \{.*\} ---$/\1/p' "$LOG")" &&
 [ -n "$ip" ] &&
-addr="$(echo "$ip" |sed 's/^0\+//')" &&
+addr="$(echo "$ip" |sed -r 's/^0+//')" &&
 [ -n "$addr" ] ||
 	dump_log_and_fail_with
 
diff --git a/tests/perf_event_open.c b/tests/perf_event_open.c
new file mode 100644
index 0000000..72f5d3c
--- /dev/null
+++ b/tests/perf_event_open.c
@@ -0,0 +1,113 @@
+/*
+ * Check decoding of perf_event_open syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
+
+# include <limits.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <linux/perf_event.h>
+
+# include "xlat.h"
+# include "xlat/perf_event_open_flags.h"
+
+#if ULONG_MAX > UINT_MAX
+#define LONG_STR_PREFIX "ffffffff"
+#else
+#define LONG_STR_PREFIX ""
+#endif
+
+static const char *printaddr(void *ptr)
+{
+	static char buf[sizeof("0x") + sizeof(void *) * 2];
+
+	if (ptr == NULL)
+		return "NULL";
+
+	snprintf(buf, sizeof(buf), "%#lx", (unsigned long)ptr);
+
+	return buf;
+}
+
+int
+main(void)
+{
+	struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+
+	attr->type = PERF_TYPE_HARDWARE;
+	attr->size = sizeof(*attr);
+
+	struct {
+		struct perf_event_attr *attr;
+		pid_t pid;
+		int cpu;
+		int group_fd;
+		unsigned long flags;
+		const char *flags_str;
+	} args[] = {
+		{ NULL,     0xfacef00d, 0xbadabba7, -1,
+			(unsigned long) 0xFFFFFFFFFFFFFFFFLLU,
+			"PERF_FLAG_FD_NO_GROUP|PERF_FLAG_FD_OUTPUT|"
+			"PERF_FLAG_PID_CGROUP|PERF_FLAG_FD_CLOEXEC|"
+			"0x" LONG_STR_PREFIX "fffffff0"
+			},
+		{ attr + 1, 0,          0,          0,
+			0, "0" },
+		{ attr,     -1,         -1,         1,
+			PERF_FLAG_FD_CLOEXEC, "PERF_FLAG_FD_CLOEXEC" },
+		{ attr - 1, -100,       100,        0xface1e55,
+			PERF_FLAG_FD_NO_GROUP | PERF_FLAG_FD_OUTPUT |
+			PERF_FLAG_PID_CGROUP | PERF_FLAG_FD_CLOEXEC,
+			"PERF_FLAG_FD_NO_GROUP|PERF_FLAG_FD_OUTPUT|"
+			"PERF_FLAG_PID_CGROUP|PERF_FLAG_FD_CLOEXEC" },
+	};
+	size_t i;
+	int rc;
+
+	for (i = 0; i < ARRAY_SIZE(args); i++) {
+		rc = syscall(__NR_perf_event_open, args[i].attr, args[i].pid,
+			args[i].cpu, args[i].group_fd, args[i].flags);
+		printf("perf_event_open(%s, %d, %d, %d, %s) = %s\n",
+			printaddr(args[i].attr), args[i].pid, args[i].cpu,
+			args[i].group_fd, args[i].flags_str, sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_perf_event_open && HAVE_LINUX_PERF_EVENT_H");
+
+#endif
diff --git a/tests/perf_event_open.test b/tests/perf_event_open.test
new file mode 100755
index 0000000..0e46556
--- /dev/null
+++ b/tests/perf_event_open.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of perf_event_open syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34
diff --git a/tests/poll.c b/tests/poll.c
index 551e9b4..c47c97e 100644
--- a/tests/poll.c
+++ b/tests/poll.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_poll
 
diff --git a/tests/prctl-seccomp-filter-v.c b/tests/prctl-seccomp-filter-v.c
index a03f202..69316fb 100644
--- a/tests/prctl-seccomp-filter-v.c
+++ b/tests/prctl-seccomp-filter-v.c
@@ -32,7 +32,7 @@
 #include <unistd.h>
 #include <stdio.h>
 #include <errno.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef HAVE_PRCTL
 # include <sys/prctl.h>
diff --git a/tests/prctl-seccomp-strict.c b/tests/prctl-seccomp-strict.c
index 57387c9..a78f817 100644
--- a/tests/prctl-seccomp-strict.c
+++ b/tests/prctl-seccomp-strict.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #ifdef HAVE_PRCTL
 # include <sys/prctl.h>
 #endif
diff --git a/tests/preadv2-pwritev2.c b/tests/preadv2-pwritev2.c
index 1a607c9..032ac03 100644
--- a/tests/preadv2-pwritev2.c
+++ b/tests/preadv2-pwritev2.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_preadv2 && defined __NR_pwritev2
 
diff --git a/tests/prlimit64.c b/tests/prlimit64.c
index 6721d49..e62ea26 100644
--- a/tests/prlimit64.c
+++ b/tests/prlimit64.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_prlimit64
 
diff --git a/tests/pselect6.c b/tests/pselect6.c
index 49258a9..7dbc06a 100644
--- a/tests/pselect6.c
+++ b/tests/pselect6.c
@@ -35,7 +35,7 @@
 #include <signal.h>
 #include <unistd.h>
 #include <sys/select.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <sys/time.h>
 
 #ifdef __NR_pselect6
diff --git a/tests/ptrace.c b/tests/ptrace.c
index 7971b89..1dcfec3 100644
--- a/tests/ptrace.c
+++ b/tests/ptrace.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rt_sigprocmask
 
@@ -41,35 +41,37 @@
 # include "ptrace.h"
 # include <linux/audit.h>
 
+static const char *errstr;
+
 static long
 do_ptrace(unsigned long request, unsigned long pid,
 	  unsigned long addr, unsigned long data)
 {
-	return syscall(__NR_ptrace, request, pid, addr, data);
+	long rc = syscall(__NR_ptrace, request, pid, addr, data);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 static void
 test_peeksiginfo(unsigned long pid, const unsigned long bad_request)
 {
-	long rc = do_ptrace(PTRACE_PEEKSIGINFO, pid, 0, bad_request);
-	printf("ptrace(PTRACE_PEEKSIGINFO, %u, NULL, %#lx)"
-	       " = %ld %s (%m)\n", (unsigned) pid, bad_request, rc, errno2name());
+	do_ptrace(PTRACE_PEEKSIGINFO, pid, 0, bad_request);
+	printf("ptrace(PTRACE_PEEKSIGINFO, %u, NULL, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 
 	struct {
 		unsigned long long off;
 		unsigned int flags, nr;
 	} *const psi = tail_alloc(sizeof(*psi));
 
-	psi->off = 0xdeadbeeffacefeed;
+	psi->off = 0xdeadbeeffacefeedULL;
 	psi->flags = 1;
 	psi->nr = 42;
 
-	rc = do_ptrace(PTRACE_PEEKSIGINFO,
-		       pid, (unsigned long) psi, bad_request);
+	do_ptrace(PTRACE_PEEKSIGINFO, pid, (unsigned long) psi, bad_request);
 	printf("ptrace(PTRACE_PEEKSIGINFO, %u, {off=%llu"
-	       ", flags=PTRACE_PEEKSIGINFO_SHARED, nr=%u}, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, psi->off, psi->nr, bad_request, rc, errno2name());
+	       ", flags=PTRACE_PEEKSIGINFO_SHARED, nr=%u}, %#lx) = %s\n",
+	       (unsigned) pid, psi->off, psi->nr, bad_request, errstr);
 
 	pid = fork();
 	if ((pid_t) pid < 0)
@@ -132,28 +134,28 @@
 					   status);
 		}
 
-		rc = do_ptrace(PTRACE_PEEKSIGINFO, pid,
-			       (unsigned long) psi, (unsigned long) sigs);
+		long rc = do_ptrace(PTRACE_PEEKSIGINFO, pid,
+				    (unsigned long) psi, (unsigned long) sigs);
 		if (rc < 0) {
-			printf("ptrace(PTRACE_PEEKSIGINFO, %u, {off=%llu"
-			       ", flags=0, nr=%u}, %p) = %ld %s (%m)\n",
+			printf("ptrace(PTRACE_PEEKSIGINFO, %u"
+			       ", {off=%llu, flags=0, nr=%u}, %p) = %s\n",
 			       (unsigned) pid, psi->off, psi->nr, sigs,
-			       rc, errno2name());
+			       errstr);
 		} else {
-			printf("ptrace(PTRACE_PEEKSIGINFO, %u, {off=%llu"
-			       ", flags=0, nr=%u}"
+			printf("ptrace(PTRACE_PEEKSIGINFO, %u"
+			       ", {off=%llu, flags=0, nr=%u}"
 			       ", [{si_signo=SIGUSR1, si_code=SI_TKILL"
 			       ", si_pid=%u, si_uid=%u}"
 			       ", {si_signo=SIGUSR2, si_code=SI_TKILL"
 			       ", si_pid=%u, si_uid=%u}"
 			       ", {si_signo=SIGALRM, si_code=SI_TKILL"
 			       ", si_pid=%u, si_uid=%u}"
-			       "]) = %ld\n",
+			       "]) = %s\n",
 			       (unsigned) pid, psi->off, psi->nr,
 			       (unsigned) pid, (unsigned) uid,
 			       (unsigned) pid, (unsigned) uid,
 			       (unsigned) pid, (unsigned) uid,
-			       rc);
+			       errstr);
 		}
 
 		if (do_ptrace(PTRACE_CONT, pid, 0, 0)) {
@@ -170,11 +172,11 @@
 main(void)
 {
 	const unsigned long bad_request =
-		(unsigned long) 0xdeadbeeffffffeed;
+		(unsigned long) 0xdeadbeeffffffeedULL;
 	const unsigned long bad_data =
-		(unsigned long) 0xdeadcafefffff00d;
+		(unsigned long) 0xdeadcafefffff00dULL;
 	const unsigned long pid =
-		(unsigned long) 0xdefaced00000000 | (unsigned) getpid();
+		(unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
 
 	unsigned int sigset_size;
 
@@ -189,89 +191,73 @@
 	void *const k_set = tail_alloc(sigset_size);
 	siginfo_t *const sip = tail_alloc(sizeof(*sip));
 
-	long rc = do_ptrace(bad_request, pid, 0, 0);
-	printf("ptrace(%#lx /* PTRACE_??? */, %u, NULL, NULL) = %ld %s (%m)\n",
-	       bad_request, (unsigned) pid, rc, errno2name());
+	do_ptrace(bad_request, pid, 0, 0);
+	printf("ptrace(%#lx /* PTRACE_??? */, %u, NULL, NULL) = %s\n",
+	       bad_request, (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_PEEKDATA, pid, bad_request, bad_data);
+	do_ptrace(PTRACE_PEEKDATA, pid, bad_request, bad_data);
 # ifdef IA64
-	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 # else
-	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, bad_data, rc, errno2name());
+	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
-	rc = do_ptrace(PTRACE_PEEKTEXT, pid, bad_request, bad_data);
+	do_ptrace(PTRACE_PEEKTEXT, pid, bad_request, bad_data);
 # ifdef IA64
-	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 # else
-	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, bad_data, rc, errno2name());
+	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
-	rc = do_ptrace(PTRACE_PEEKUSER, pid, bad_request, bad_data);
+	do_ptrace(PTRACE_PEEKUSER, pid, bad_request, bad_data);
 # ifdef IA64
-	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 # else
-	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, bad_data, rc, errno2name());
+	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
-	rc = do_ptrace(PTRACE_POKEUSER, pid, bad_request, bad_data);
-	printf("ptrace(PTRACE_POKEUSER, %u, %#lx, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, bad_data, rc, errno2name());
+	do_ptrace(PTRACE_POKEUSER, pid, bad_request, bad_data);
+	printf("ptrace(PTRACE_POKEUSER, %u, %#lx, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, bad_data, errstr);
 
-	rc = do_ptrace(PTRACE_ATTACH, pid, 0, 0);
-	printf("ptrace(PTRACE_ATTACH, %u) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_ATTACH, pid, 0, 0);
+	printf("ptrace(PTRACE_ATTACH, %u) = %s\n", (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_INTERRUPT, pid, 0, 0);
-	printf("ptrace(PTRACE_INTERRUPT, %u) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_INTERRUPT, pid, 0, 0);
+	printf("ptrace(PTRACE_INTERRUPT, %u) = %s\n", (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_KILL, pid, 0, 0);
-	printf("ptrace(PTRACE_KILL, %u) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_KILL, pid, 0, 0);
+	printf("ptrace(PTRACE_KILL, %u) = %s\n", (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_LISTEN, pid, 0, 0);
-	printf("ptrace(PTRACE_LISTEN, %u) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_LISTEN, pid, 0, 0);
+	printf("ptrace(PTRACE_LISTEN, %u) = %s\n", (unsigned) pid, errstr);
 
 	sigset_t libc_set;
 	sigemptyset(&libc_set);
 	sigaddset(&libc_set, SIGUSR1);
 	memcpy(k_set, &libc_set, sigset_size);
 
-	rc = do_ptrace(PTRACE_SETSIGMASK,
-		       pid, sigset_size, (unsigned long) k_set);
-	printf("ptrace(PTRACE_SETSIGMASK, %u, %u, [USR1])"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, sigset_size, rc, errno2name());
+	do_ptrace(PTRACE_SETSIGMASK, pid, sigset_size, (unsigned long) k_set);
+	printf("ptrace(PTRACE_SETSIGMASK, %u, %u, [USR1]) = %s\n",
+	       (unsigned) pid, sigset_size, errstr);
 
-	rc = do_ptrace(PTRACE_GETSIGMASK,
-		       pid, sigset_size, (unsigned long) k_set);
-	printf("ptrace(PTRACE_GETSIGMASK, %u, %u, %p)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, sigset_size, k_set, rc, errno2name());
+	do_ptrace(PTRACE_GETSIGMASK, pid, sigset_size, (unsigned long) k_set);
+	printf("ptrace(PTRACE_GETSIGMASK, %u, %u, %p) = %s\n",
+	       (unsigned) pid, sigset_size, k_set, errstr);
 
-	rc = do_ptrace(PTRACE_SECCOMP_GET_FILTER, pid, 42, 0);
-	printf("ptrace(PTRACE_SECCOMP_GET_FILTER, %u, 42, NULL)"
-	       " = %ld %s (%m)\n", (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_SECCOMP_GET_FILTER, pid, 42, 0);
+	printf("ptrace(PTRACE_SECCOMP_GET_FILTER, %u, 42, NULL) = %s\n",
+	       (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_GETEVENTMSG, pid, bad_request, bad_data);
-	printf("ptrace(PTRACE_GETEVENTMSG, %u, %#lx, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, bad_data, rc, errno2name());
+	do_ptrace(PTRACE_GETEVENTMSG, pid, bad_request, bad_data);
+	printf("ptrace(PTRACE_GETEVENTMSG, %u, %#lx, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, bad_data, errstr);
 
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGIO;
@@ -279,12 +265,10 @@
 	sip->si_errno = ENOENT;
 	sip->si_band = -2;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGIO"
-	       ", si_code=POLL_IN, si_errno=ENOENT, si_band=-2})"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	       ", si_code=POLL_IN, si_errno=ENOENT, si_band=-2}) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGTRAP;
@@ -294,52 +278,46 @@
 	sip->si_uid = 3;
 	sip->si_ptr = (void *) bad_request;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGTRAP"
 	       ", si_code=TRAP_BRKPT, si_errno=ENOENT, si_pid=2, si_uid=3"
-	       ", si_value={int=%d, ptr=%p}}) = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, sip->si_int, sip->si_ptr, rc, errno2name());
+	       ", si_value={int=%d, ptr=%p}}) = %s\n",
+	       (unsigned) pid, bad_request, sip->si_int, sip->si_ptr,
+	       errstr);
 
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGILL;
 	sip->si_code = 1;
 	sip->si_errno = ENOENT;
-	sip->si_addr = (void *) (unsigned long) 0xfacefeeddeadbeef;
+	sip->si_addr = (void *) (unsigned long) 0xfacefeeddeadbeefULL;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGILL"
-	       ", si_code=ILL_ILLOPC, si_errno=ENOENT, si_addr=%p})"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, sip->si_addr, rc, errno2name());
+	       ", si_code=ILL_ILLOPC, si_errno=ENOENT, si_addr=%p}) = %s\n",
+	       (unsigned) pid, bad_request, sip->si_addr, errstr);
 
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGFPE;
 	sip->si_code = 1;
 	sip->si_errno = ENOENT;
-	sip->si_addr = (void *) (unsigned long) 0xfacefeeddeadbeef;
+	sip->si_addr = (void *) (unsigned long) 0xfacefeeddeadbeefULL;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGFPE"
-	       ", si_code=FPE_INTDIV, si_errno=ENOENT, si_addr=%p})"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, sip->si_addr, rc, errno2name());
+	       ", si_code=FPE_INTDIV, si_errno=ENOENT, si_addr=%p}) = %s\n",
+	       (unsigned) pid, bad_request, sip->si_addr, errstr);
 
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGBUS;
 	sip->si_code = 1;
 	sip->si_errno = -2;
-	sip->si_addr = (void *) (unsigned long) 0xfacefeeddeadbeef;
+	sip->si_addr = (void *) (unsigned long) 0xfacefeeddeadbeefULL;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGBUS"
-	       ", si_code=BUS_ADRALN, si_errno=%d, si_addr=%p})"
-	       " = %ld %s (%m)\n",
+	       ", si_code=BUS_ADRALN, si_errno=%d, si_addr=%p}) = %s\n",
 	       (unsigned) pid, bad_request, sip->si_errno, sip->si_addr,
-	       rc, errno2name());
+	       errstr);
 
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGPROF;
@@ -349,31 +327,28 @@
 	sip->si_uid = 3;
 	sip->si_ptr = 0;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGPROF"
-	       ", si_code=%#x, si_errno=%d, si_pid=0, si_uid=3})"
-	       " = %ld %s (%m)\n",
+	       ", si_code=%#x, si_errno=%d, si_pid=0, si_uid=3}) = %s\n",
 	       (unsigned) pid, bad_request, sip->si_code, sip->si_errno,
-	       rc, errno2name());
+	       errstr);
 
 #ifdef HAVE_SIGINFO_T_SI_SYSCALL
 	memset(sip, -1, sizeof(*sip));
 	sip->si_signo = SIGSYS;
 	sip->si_code = 1;
 	sip->si_errno = ENOENT;
-	sip->si_call_addr = (void *) (unsigned long) 0xfacefeeddeadbeef;
+	sip->si_call_addr = (void *) (unsigned long) 0xfacefeeddeadbeefULL;
 	sip->si_syscall = -1U;
 	sip->si_arch = AUDIT_ARCH_X86_64;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGSYS"
 	       ", si_code=SYS_SECCOMP, si_errno=ENOENT, si_call_addr=%p"
 	       ", si_syscall=__NR_syscall_%u, si_arch=AUDIT_ARCH_X86_64})"
-	       " = %ld %s (%m)\n",
+	       " = %s\n",
 	       (unsigned) pid, bad_request, sip->si_call_addr, sip->si_syscall,
-	       rc, errno2name());
+	       errstr);
 #endif
 
 #if defined HAVE_SIGINFO_T_SI_TIMERID && defined HAVE_SIGINFO_T_SI_OVERRUN
@@ -383,87 +358,77 @@
 	sip->si_errno = ENOENT;
 	sip->si_timerid = 0xdeadbeef;
 	sip->si_overrun = -1;
-	sip->si_ptr = (void *) (unsigned long) 0xfacefeeddeadbeef;
+	sip->si_ptr = (void *) (unsigned long) 0xfacefeeddeadbeefULL;
 
-	rc = do_ptrace(PTRACE_SETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGHUP"
 	       ", si_code=SI_TIMER, si_errno=ENOENT, si_timerid=%#x"
-	       ", si_overrun=%d, si_value={int=%d, ptr=%p}}) = %ld %s (%m)\n",
+	       ", si_overrun=%d, si_value={int=%d, ptr=%p}}) = %s\n",
 	       (unsigned) pid, bad_request, sip->si_timerid, sip->si_overrun,
-	       sip->si_int, sip->si_ptr, rc, errno2name());
+	       sip->si_int, sip->si_ptr, errstr);
 #endif
 
-	rc = do_ptrace(PTRACE_GETSIGINFO,
-		       pid, bad_request, (unsigned long) sip);
+	do_ptrace(PTRACE_GETSIGINFO, pid, bad_request, (unsigned long) sip);
 	printf("ptrace(PTRACE_GETSIGINFO, %u, %#lx, %p)"
-	       " = %ld %s (%m)\n", (unsigned) pid, bad_request, sip, rc, errno2name());
+	       " = %s\n", (unsigned) pid, bad_request, sip, errstr);
 
-	rc = do_ptrace(PTRACE_CONT, pid, 0, SIGUSR1);
-	printf("ptrace(PTRACE_CONT, %u, NULL, SIGUSR1) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_CONT, pid, 0, SIGUSR1);
+	printf("ptrace(PTRACE_CONT, %u, NULL, SIGUSR1) = %s\n",
+	       (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_DETACH, pid, 0, SIGUSR2);
-	printf("ptrace(PTRACE_DETACH, %u, NULL, SIGUSR2) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_DETACH, pid, 0, SIGUSR2);
+	printf("ptrace(PTRACE_DETACH, %u, NULL, SIGUSR2) = %s\n",
+	       (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_SYSCALL, pid, 0, SIGUSR1);
-	printf("ptrace(PTRACE_SYSCALL, %u, NULL, SIGUSR1) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_SYSCALL, pid, 0, SIGUSR1);
+	printf("ptrace(PTRACE_SYSCALL, %u, NULL, SIGUSR1) = %s\n",
+	       (unsigned) pid, errstr);
 
 #ifdef PTRACE_SINGLESTEP
-	rc = do_ptrace(PTRACE_SINGLESTEP, pid, 0, SIGUSR2);
-	printf("ptrace(PTRACE_SINGLESTEP, %u, NULL, SIGUSR2) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_SINGLESTEP, pid, 0, SIGUSR2);
+	printf("ptrace(PTRACE_SINGLESTEP, %u, NULL, SIGUSR2) = %s\n",
+	       (unsigned) pid, errstr);
 #endif
 
 #ifdef PTRACE_SINGLEBLOCK
-	rc = do_ptrace(PTRACE_SINGLEBLOCK, pid, 0, SIGUSR1);
-	printf("ptrace(PTRACE_SINGLEBLOCK, %u, NULL, SIGUSR1) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_SINGLEBLOCK, pid, 0, SIGUSR1);
+	printf("ptrace(PTRACE_SINGLEBLOCK, %u, NULL, SIGUSR1) = %s\n",
+	       (unsigned) pid, errstr);
 #endif
 
 #ifdef PTRACE_SYSEMU
-	rc = do_ptrace(PTRACE_SYSEMU, pid, 0, SIGUSR2);
-	printf("ptrace(PTRACE_SYSEMU, %u, NULL, SIGUSR2) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_SYSEMU, pid, 0, SIGUSR2);
+	printf("ptrace(PTRACE_SYSEMU, %u, NULL, SIGUSR2) = %s\n",
+	       (unsigned) pid, errstr);
 #endif
 #ifdef PTRACE_SYSEMU_SINGLESTEP
-	rc = do_ptrace(PTRACE_SYSEMU_SINGLESTEP, pid, 0, SIGUSR1);
-	printf("ptrace(PTRACE_SYSEMU_SINGLESTEP, %u, NULL, SIGUSR1)"
-	       " = %ld %s (%m)\n", (unsigned) pid, rc, errno2name());
+	do_ptrace(PTRACE_SYSEMU_SINGLESTEP, pid, 0, SIGUSR1);
+	printf("ptrace(PTRACE_SYSEMU_SINGLESTEP, %u, NULL, SIGUSR1) = %s\n",
+	       (unsigned) pid, errstr);
 #endif
 
-	rc = do_ptrace(PTRACE_SETOPTIONS,
-		       pid, 0, PTRACE_O_TRACEFORK|PTRACE_O_TRACECLONE);
+	do_ptrace(PTRACE_SETOPTIONS,
+		  pid, 0, PTRACE_O_TRACEFORK|PTRACE_O_TRACECLONE);
 	printf("ptrace(PTRACE_SETOPTIONS, %u, NULL"
-	       ", PTRACE_O_TRACEFORK|PTRACE_O_TRACECLONE) = %ld %s (%m)\n",
-	       (unsigned) pid, rc, errno2name());
+	       ", PTRACE_O_TRACEFORK|PTRACE_O_TRACECLONE) = %s\n",
+	       (unsigned) pid, errstr);
 
-	rc = do_ptrace(PTRACE_SEIZE,
-		       pid, bad_request, PTRACE_O_TRACESYSGOOD);
-	printf("ptrace(PTRACE_SEIZE, %u, %#lx"
-	       ", PTRACE_O_TRACESYSGOOD) = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	do_ptrace(PTRACE_SEIZE, pid, bad_request, PTRACE_O_TRACESYSGOOD);
+	printf("ptrace(PTRACE_SEIZE, %u, %#lx, PTRACE_O_TRACESYSGOOD) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 
-	rc = do_ptrace(PTRACE_SETREGSET, pid, 1, bad_request);
-	printf("ptrace(PTRACE_SETREGSET, %u, NT_PRSTATUS, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	do_ptrace(PTRACE_SETREGSET, pid, 1, bad_request);
+	printf("ptrace(PTRACE_SETREGSET, %u, NT_PRSTATUS, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 
-	rc = do_ptrace(PTRACE_GETREGSET, pid, 3, bad_request);
-	printf("ptrace(PTRACE_GETREGSET, %u, NT_PRPSINFO, %#lx)"
-	       " = %ld %s (%m)\n",
-	       (unsigned) pid, bad_request, rc, errno2name());
+	do_ptrace(PTRACE_GETREGSET, pid, 3, bad_request);
+	printf("ptrace(PTRACE_GETREGSET, %u, NT_PRPSINFO, %#lx) = %s\n",
+	       (unsigned) pid, bad_request, errstr);
 
 	test_peeksiginfo(pid, bad_request);
 
-	rc = do_ptrace(PTRACE_TRACEME, 0, 0, 0);
-	if (rc)
-		printf("ptrace(PTRACE_TRACEME) = %ld %s (%m)\n",
-		       rc, errno2name());
-	else
-		printf("ptrace(PTRACE_TRACEME) = 0\n");
+	do_ptrace(PTRACE_TRACEME, 0, 0, 0);
+	printf("ptrace(PTRACE_TRACEME) = %s\n", errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/qual_syscall.test b/tests/qual_syscall.test
index 1aff1cc..f7eb06d 100755
--- a/tests/qual_syscall.test
+++ b/tests/qual_syscall.test
@@ -1,25 +1,59 @@
 #!/bin/sh
 
-# Ensure that strace -e trace=set works.
+# Check how strace -e abbrev=set, -e raw=set, -e trace=set,
+# and -e verbose=set work.
 
 . "${srcdir=.}/init.sh"
 
-check_prog ls
-run_strace -e execve ls
+run_prog ./umovestr
+pattern_abbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[/\* [[:digit:]]* vars \*/\]) = 0'
+pattern_nonabbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
+pattern_nonverbose='execve("\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
+pattern_raw='execve(0x[[:xdigit:]]*, 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 
-grep '^execve(' "$LOG" > /dev/null ||
-	dump_log_and_fail_with "$STRACE $args output mismatch"
+check_output_mismatch()
+{
+	local pattern
+	pattern="$1"; shift
+	run_strace "$@" ./umovestr
+	LC_ALL=C grep -x "$pattern" "$LOG" > /dev/null || {
+		printf '%s\n%s\n' \
+			'Failed patterns of expected output:' "$pattern"
+		dump_log_and_fail_with "$STRACE $args output mismatch"
+	}
+}
 
-grep -v '^execve(' "$LOG" |
+check_output_mismatch "$pattern_abbrev_verbose" -e execve
+LC_ALL=C grep -v -x "$pattern_abbrev_verbose" "$LOG" |
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-run_strace -e trace=process ls
-
-grep '^execve(' "$LOG" > /dev/null ||
-	dump_log_and_fail_with "$STRACE $args output mismatch"
-
-grep '^open' "$LOG" > /dev/null &&
+check_output_mismatch "$pattern_abbrev_verbose" -e trace=process
+LC_ALL=C grep '^chdir' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
+run_strace -e 42 ./umovestr
+LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
+	dump_log_and_fail_with "$STRACE $args unexpected output"
+
+for a in execve \!chdir all \!none \
+	 file process \!desc \!ipc \!memory \!network \!signal; do
+	check_output_mismatch \
+		"$pattern_abbrev_verbose" -e abbrev="$a" -e execve
+	check_output_mismatch \
+		"$pattern_raw" -a22 -e raw="$a" -e execve
+	check_output_mismatch \
+		"$pattern_abbrev_verbose" -e verbose="$a" -e execve
+done
+
+for a in \!execve chdir 42 \!all none \
+	 \!file \!process desc ipc memory network signal; do
+	check_output_mismatch \
+		"$pattern_nonabbrev_verbose" -e abbrev="$a" -e execve
+	check_output_mismatch \
+		"$pattern_abbrev_verbose" -e raw="$a" -e execve
+	check_output_mismatch \
+		"$pattern_nonverbose" -a31 -e verbose="$a" -e execve
+done
+
 exit 0
diff --git a/tests/quotactl-v.c b/tests/quotactl-v.c
new file mode 100644
index 0000000..0013964
--- /dev/null
+++ b/tests/quotactl-v.c
@@ -0,0 +1,3 @@
+/* This file is part of quotactl-v strace test. */
+#define VERBOSE 1
+#include "quotactl.c"
diff --git a/tests/quotactl-v.test b/tests/quotactl-v.test
new file mode 100755
index 0000000..6adaf82
--- /dev/null
+++ b/tests/quotactl-v.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check non-abbreviated decoding of quotactl syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs-v.c b/tests/quotactl-xfs-v.c
new file mode 100644
index 0000000..21173d6
--- /dev/null
+++ b/tests/quotactl-xfs-v.c
@@ -0,0 +1,3 @@
+/* This file is part of quotactl-xfs-v strace test. */
+#define VERBOSE 1
+#include "quotactl-xfs.c"
diff --git a/tests/quotactl-xfs-v.test b/tests/quotactl-xfs-v.test
new file mode 100755
index 0000000..d5ffc7d
--- /dev/null
+++ b/tests/quotactl-xfs-v.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check non-abbreviated decoding of quotactl xfs subcommands.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs.c b/tests/quotactl-xfs.c
new file mode 100644
index 0000000..a08ccd2
--- /dev/null
+++ b/tests/quotactl-xfs.c
@@ -0,0 +1,351 @@
+/*
+ * Check decoding of quotactl xfs subcommands.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_quotactl) && \
+	(defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H)) && \
+	defined(HAVE_LINUX_DQBLK_XFS_H)
+
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+# include <linux/dqblk_xfs.h>
+
+# include "quotactl.h"
+
+# ifndef Q_GETNEXTQUOTA
+#  define Q_XGETNEXTQUOTA	XQM_CMD(0x9)
+# endif /* !Q_GETNEXTQUOTA */
+
+# ifndef Q_XGETQSTATV
+
+#  define Q_XGETQSTATV		XQM_CMD(8)
+#  define FS_QSTATV_VERSION1	1
+
+struct fs_qfilestatv {
+	uint64_t	qfs_ino;	/* inode number */
+	uint64_t	qfs_nblks;	/* number of BBs 512-byte-blks */
+	uint32_t	qfs_nextents;	/* number of extents */
+	uint32_t	qfs_pad;	/* pad for 8-byte alignment */
+};
+
+struct fs_quota_statv {
+	int8_t		qs_version;		/* version for future changes */
+	uint8_t		qs_pad1;		/* pad for 16bit alignment */
+	uint16_t	qs_flags;		/* XFS_QUOTA_.* flags */
+	uint32_t	qs_incoredqs;		/* number of dquots incore */
+	struct fs_qfilestatv	qs_uquota;	/* user quota information */
+	struct fs_qfilestatv	qs_gquota;	/* group quota information */
+	struct fs_qfilestatv	qs_pquota;	/* project quota information */
+	int32_t		qs_btimelimit;		/* limit for blks timer */
+	int32_t		qs_itimelimit;		/* limit for inodes timer */
+	int32_t		qs_rtbtimelimit; 	/* limit for rt blks timer */
+	uint16_t	qs_bwarnlimit;		/* limit for num warnings */
+	uint16_t	qs_iwarnlimit;		/* limit for num warnings */
+	uint64_t	qs_pad2[8];		/* for future proofing */
+};
+
+# endif /* !Q_XGETQSTATV */
+
+# include "xlat.h"
+# include "xlat/xfs_dqblk_flags.h"
+# if VERBOSE
+#  include "xlat/xfs_quota_flags.h"
+# endif
+
+
+void
+print_xdisk_quota(int rc, void *ptr, void *arg)
+{
+	struct fs_disk_quota *dq = ptr;
+	long out_arg = (long) arg;
+
+	if (((rc != 0) && out_arg) || (out_arg > 1)) {
+		printf("%p", dq);
+		return;
+	}
+
+	PRINT_FIELD_D("{", dq, d_version);
+	printf(", d_flags=");
+	printflags(xfs_dqblk_flags, (uint8_t) dq->d_flags, "XFS_???_QUOTA");
+
+	PRINT_FIELD_X(", ", dq, d_fieldmask);
+	PRINT_FIELD_U(", ", dq, d_id);
+	PRINT_FIELD_U(", ", dq, d_blk_hardlimit);
+	PRINT_FIELD_U(", ", dq, d_blk_softlimit);
+	PRINT_FIELD_U(", ", dq, d_ino_hardlimit);
+	PRINT_FIELD_U(", ", dq, d_ino_softlimit);
+	PRINT_FIELD_U(", ", dq, d_bcount);
+	PRINT_FIELD_U(", ", dq, d_icount);
+
+# if VERBOSE
+	PRINT_FIELD_D(", ", dq, d_itimer);
+	PRINT_FIELD_D(", ", dq, d_btimer);
+	PRINT_FIELD_U(", ", dq, d_iwarns);
+	PRINT_FIELD_U(", ", dq, d_bwarns);
+	PRINT_FIELD_U(", ", dq, d_rtb_hardlimit);
+	PRINT_FIELD_U(", ", dq, d_rtb_softlimit);
+	PRINT_FIELD_U(", ", dq, d_rtbcount);
+	PRINT_FIELD_D(", ", dq, d_rtbtimer);
+	PRINT_FIELD_U(", ", dq, d_rtbwarns);
+# else
+	printf(", ...");
+# endif /* !VERBOSE */
+	printf("}");
+}
+
+void
+print_xquota_stat(int rc, void *ptr, void *arg)
+{
+	struct fs_quota_stat *qs = ptr;
+	long out_arg = (long) arg;
+
+	if (((rc != 0) && out_arg) || (out_arg > 1)) {
+		printf("%p", qs);
+		return;
+	}
+
+	PRINT_FIELD_D("{", qs, qs_version);
+
+# if VERBOSE
+	printf(", qs_flags=");
+	printflags(xfs_quota_flags, qs->qs_flags, "XFS_QUOTA_???");
+	PRINT_FIELD_U(", qs_uquota={", &qs->qs_uquota, qfs_ino);
+	PRINT_FIELD_U(", ", &qs->qs_uquota, qfs_nblks);
+	PRINT_FIELD_U(", ", &qs->qs_uquota, qfs_nextents);
+	PRINT_FIELD_U("}, qs_gquota={", &qs->qs_gquota, qfs_ino);
+	PRINT_FIELD_U(", ", &qs->qs_gquota, qfs_nblks);
+	PRINT_FIELD_U(", ", &qs->qs_gquota, qfs_nextents);
+	PRINT_FIELD_U("}, ", qs, qs_incoredqs);
+	PRINT_FIELD_D(", ", qs, qs_btimelimit);
+	PRINT_FIELD_D(", ", qs, qs_itimelimit);
+	PRINT_FIELD_D(", ", qs, qs_rtbtimelimit);
+	PRINT_FIELD_U(", ", qs, qs_bwarnlimit);
+	PRINT_FIELD_U(", ", qs, qs_iwarnlimit);
+# else
+	printf(", ...");
+# endif /* !VERBOSE */
+	printf("}");
+}
+
+void
+print_xquota_statv(int rc, void *ptr, void *arg)
+{
+	struct fs_quota_statv *qs = ptr;
+	long out_arg = (long) arg;
+
+	if (((rc != 0) && out_arg) || (out_arg > 1)) {
+		printf("%p", qs);
+		return;
+	}
+
+	PRINT_FIELD_D("{", qs, qs_version);
+
+# if VERBOSE
+	printf(", qs_flags=");
+	printflags(xfs_quota_flags, qs->qs_flags, "XFS_QUOTA_???");
+	PRINT_FIELD_U(", ", qs, qs_incoredqs);
+	PRINT_FIELD_U(", qs_uquota={", &qs->qs_uquota, qfs_ino);
+	PRINT_FIELD_U(", ", &qs->qs_uquota, qfs_nblks);
+	PRINT_FIELD_U(", ", &qs->qs_uquota, qfs_nextents);
+	PRINT_FIELD_U("}, qs_gquota={", &qs->qs_gquota, qfs_ino);
+	PRINT_FIELD_U(", ", &qs->qs_gquota, qfs_nblks);
+	PRINT_FIELD_U(", ", &qs->qs_gquota, qfs_nextents);
+	PRINT_FIELD_U("}, qs_pquota={", &qs->qs_pquota, qfs_ino);
+	PRINT_FIELD_U(", ", &qs->qs_pquota, qfs_nblks);
+	PRINT_FIELD_U(", ", &qs->qs_pquota, qfs_nextents);
+	PRINT_FIELD_D("}, ", qs, qs_btimelimit);
+	PRINT_FIELD_D(", ", qs, qs_itimelimit);
+	PRINT_FIELD_D(", ", qs, qs_rtbtimelimit);
+	PRINT_FIELD_U(", ", qs, qs_bwarnlimit);
+	PRINT_FIELD_U(", ", qs, qs_iwarnlimit);
+# else
+	printf(", ...");
+# endif /* !VERBOSE */
+	printf("}");
+}
+
+int
+main(void)
+{
+	char bogus_special_str[sizeof(void *) * 2 + sizeof("0x")];
+	char bogus_addr_str[sizeof(void *) * 2 + sizeof("0x")];
+	char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
+
+	long rc;
+	struct fs_disk_quota *xdq = tail_alloc(sizeof(*xdq));
+	struct fs_quota_stat *xqstat = tail_alloc(sizeof(*xqstat));
+	struct fs_quota_statv *xqstatv = tail_alloc(sizeof(*xqstatv));
+	uint32_t *flags = tail_alloc(sizeof(*flags));
+	char *unterminated = tail_memdup(unterminated_data,
+		sizeof(unterminated_data));
+
+	snprintf(bogus_special_str, sizeof(bogus_special_str), "%p",
+		 bogus_special);
+	snprintf(bogus_addr_str, sizeof(bogus_addr_str), "%p",
+		 bogus_addr);
+	snprintf(unterminated_str, sizeof(unterminated_str), "%p",
+		 unterminated);
+
+
+	/* Q_XQUOTAON */
+
+	*flags = 0xdeadbeef;
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_XQUOTAON, USRQUOTA)),
+		    ARG_STR("/dev/bogus/"), flags,
+		    "[XFS_QUOTA_UDQ_ACCT|XFS_QUOTA_UDQ_ENFD"
+		    "|XFS_QUOTA_GDQ_ACCT|XFS_QUOTA_GDQ_ENFD"
+		    "|XFS_QUOTA_PDQ_ENFD|0xdeadbec0]");
+
+	rc = syscall(__NR_quotactl, QCMD(Q_XQUOTAON, 0xfacefeed), bogus_dev,
+		     bogus_id, bogus_addr);
+	printf("quotactl(QCMD(Q_XQUOTAON, %#x /* ???QUOTA */)"
+	       ", %s, %p) = %s\n",
+	       QCMD_TYPE(QCMD(Q_XQUOTAON, 0xfacefeed)),
+	       bogus_dev_str, bogus_addr, sprintrc(rc));
+
+
+	/* Q_XQUOTAOFF */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_XQUOTAOFF, USRQUOTA)),
+		    bogus_special, bogus_special_str,
+		    bogus_addr, bogus_addr_str);
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_XQUOTAOFF, GRPQUOTA)),
+		    ARG_STR("/dev/bogus/"),
+		    ARG_STR(NULL));
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    QCMD(Q_XQUOTAOFF, 3),
+		    "QCMD(Q_XQUOTAOFF, 0x3 /* ???QUOTA */)",
+		    ARG_STR("/dev/bogus/"), flags,
+		    "[XFS_QUOTA_UDQ_ACCT|XFS_QUOTA_UDQ_ENFD"
+		    "|XFS_QUOTA_GDQ_ACCT|XFS_QUOTA_GDQ_ENFD"
+		    "|XFS_QUOTA_PDQ_ENFD|0xdeadbec0]");
+
+
+	/* Q_XGETQUOTA */
+
+	/* Trying our best to get successful result */
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETQUOTA, USRQUOTA)),
+		    ARG_STR("/dev/sda1"), getuid(), xdq, print_xdisk_quota,
+		    (intptr_t) 1);
+
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETQUOTA, GRPQUOTA)),
+		    ARG_STR(NULL), -1, xdq, print_xdisk_quota, (intptr_t) 2);
+
+
+	/* Q_XGETNEXTQUOTA */
+
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_XGETNEXTQUOTA, USRQUOTA)),
+		    ARG_STR("/dev/sda1"), 0, xdq, print_xdisk_quota,
+		    (intptr_t) 1);
+
+
+	/* Q_XSETQLIM */
+
+	check_quota(CQF_NONE, ARG_STR(QCMD(Q_XSETQLIM, PRJQUOTA)),
+		    bogus_special, bogus_special_str, 0, bogus_addr);
+
+	fill_memory_ex((char *) xdq, sizeof(*xdq), 0x8e);
+
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_XSETQLIM, PRJQUOTA)),
+		    bogus_dev, bogus_dev_str, 3141592653U,
+		    xdq, print_xdisk_quota, (intptr_t) 0);
+
+
+	/* Q_XGETQSTAT */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_XGETQSTAT, USRQUOTA)),
+		    ARG_STR("/dev/sda1"), xqstat, print_xquota_stat, (intptr_t) 1);
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_XGETQSTATV, PRJQUOTA)),
+		    unterminated, unterminated_str,
+		    xqstat + 1, print_xquota_stat, (intptr_t) 2);
+
+
+	/* Q_XGETQSTATV */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_XGETQSTAT, USRQUOTA)),
+		    ARG_STR("/dev/sda1"), xqstatv, print_xquota_statv, 1);
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_XGETQSTATV, GRPQUOTA)),
+		    ARG_STR(NULL), xqstatv, print_xquota_statv, (intptr_t) 2);
+
+
+	/* Q_XQUOTARM */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_XQUOTARM, PRJQUOTA)),
+		    bogus_special, bogus_special_str, ARG_STR(NULL));
+	check_quota(CQF_ID_SKIP,
+		    ARG_STR(QCMD(Q_XQUOTARM, USRQUOTA)),
+		    unterminated, unterminated_str, flags + 1);
+
+	*flags = 0xdeadbeef;
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_XQUOTARM, GRPQUOTA)),
+		    ARG_STR(NULL), flags,
+		    "[XFS_USER_QUOTA|XFS_PROJ_QUOTA"
+		    "|XFS_GROUP_QUOTA|0xdeadbee8]");
+
+
+	/* Q_XQUOTASYNC */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    ARG_STR(QCMD(Q_XQUOTASYNC, USRQUOTA)),
+		    bogus_special, bogus_special_str);
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    QCMD(Q_XQUOTASYNC, 0xfff),
+		    "QCMD(Q_XQUOTASYNC, 0xff /* ???QUOTA */)",
+		    ARG_STR(NULL));
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_quotactl && "
+	"(HAVE_LINUX_QUOTA_H || HAVE_SYS_QUOTA_H) && "
+	"HAVE_LINUX_DQBLK_XFS_H");
+
+#endif
diff --git a/tests/quotactl-xfs.test b/tests/quotactl-xfs.test
new file mode 100755
index 0000000..404a737
--- /dev/null
+++ b/tests/quotactl-xfs.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of quotactl xfs subcommands.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=quotactl
diff --git a/tests/quotactl.c b/tests/quotactl.c
new file mode 100644
index 0000000..d68c4ec
--- /dev/null
+++ b/tests/quotactl.c
@@ -0,0 +1,317 @@
+/*
+ * Check decoding of quotactl syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_quotactl) && \
+	(defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H))
+
+# include <inttypes.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+# include "quotactl.h"
+
+# ifndef HAVE_LINUX_QUOTA_H
+/* Some dirty hacks in order to make sys/quota.h usable as a backup */
+
+#  define if_dqblk dqblk
+#  define if_nextdqblk nextdqblk
+#  define if_dqinfo dqinfo
+
+# endif /* !HAVE_LINUX_QUOTA_H */
+
+# ifndef Q_GETNEXTQUOTA
+
+#  define Q_GETNEXTQUOTA 0x800009
+
+struct if_nextdqblk {
+	uint64_t dqb_bhardlimit;
+	uint64_t dqb_bsoftlimit;
+	uint64_t dqb_curspace;
+	uint64_t dqb_ihardlimit;
+	uint64_t dqb_isoftlimit;
+	uint64_t dqb_curinodes;
+	uint64_t dqb_btime;
+	uint64_t dqb_itime;
+	uint32_t dqb_valid;
+	uint32_t dqb_id;
+};
+# endif /* !Q_GETNEXTQUOTA */
+
+# include "xlat.h"
+# include "xlat/quota_formats.h"
+# include "xlat/if_dqblk_valid.h"
+# include "xlat/if_dqinfo_flags.h"
+# include "xlat/if_dqinfo_valid.h"
+
+void
+print_dqblk(long rc, void *ptr, void *arg)
+{
+	struct if_dqblk *db = ptr;
+	long out_arg = (long) arg;
+
+	if (((rc != 0) && out_arg) || (out_arg > 1)) {
+		printf("%p", db);
+		return;
+	}
+
+	PRINT_FIELD_U("{", db, dqb_bhardlimit);
+	PRINT_FIELD_U(", ", db, dqb_bsoftlimit);
+	PRINT_FIELD_U(", ", db, dqb_curspace);
+	PRINT_FIELD_U(", ", db, dqb_ihardlimit);
+	PRINT_FIELD_U(", ", db, dqb_isoftlimit);
+	PRINT_FIELD_U(", ", db, dqb_curinodes);
+
+# if VERBOSE
+	PRINT_FIELD_U(", ", db, dqb_btime);
+	PRINT_FIELD_U(", ", db, dqb_itime);
+
+	printf(", dqb_valid=");
+	printflags(if_dqblk_valid, db->dqb_valid, "QIF_???");
+# else
+	printf(", ...");
+# endif /* !VERBOSE */
+	printf("}");
+}
+
+void
+print_nextdqblk(long rc, void *ptr, void *arg)
+{
+	struct if_nextdqblk *db = ptr;
+	long out_arg = (long) arg;
+
+	if (((rc != 0) && out_arg) || (out_arg > 1)) {
+		printf("%p", db);
+		return;
+	}
+
+	PRINT_FIELD_U("{", db, dqb_bhardlimit);
+	PRINT_FIELD_U(", ", db, dqb_bsoftlimit);
+	PRINT_FIELD_U(", ", db, dqb_curspace);
+	PRINT_FIELD_U(", ", db, dqb_ihardlimit);
+	PRINT_FIELD_U(", ", db, dqb_isoftlimit);
+	PRINT_FIELD_U(", ", db, dqb_curinodes);
+
+# if VERBOSE
+	PRINT_FIELD_U(", ", db, dqb_btime);
+	PRINT_FIELD_U(", ", db, dqb_itime);
+
+	printf(", dqb_valid=");
+	printflags(if_dqblk_valid, db->dqb_valid, "QIF_???");
+
+	PRINT_FIELD_U(", ", db, dqb_id);
+# else
+	PRINT_FIELD_U(", ", db, dqb_id);
+	printf(", ...");
+# endif /* !VERBOSE */
+	printf("}");
+}
+
+void
+print_dqinfo(long rc, void *ptr, void *arg)
+{
+	struct if_dqinfo *di = ptr;
+	long out_arg = (long) arg;
+
+	if (((rc != 0) && out_arg) || (out_arg > 1)) {
+		printf("%p", di);
+		return;
+	}
+
+	PRINT_FIELD_U("{", di, dqi_bgrace);
+	PRINT_FIELD_U(", ", di, dqi_igrace);
+
+	printf(", dqi_flags=");
+	printflags(if_dqinfo_flags, di->dqi_flags, "DQF_???");
+	printf(", dqi_valid=");
+	printflags(if_dqinfo_valid, di->dqi_valid, "IIF_???");
+	printf("}");
+}
+
+
+int
+main(void)
+{
+	char bogus_special_str[sizeof(void *) * 2 + sizeof("0x")];
+	char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
+
+	long rc;
+	char *unterminated = tail_memdup(unterminated_data,
+					 sizeof(unterminated_data));
+	struct if_dqblk *dqblk = tail_alloc(sizeof(*dqblk));
+	struct if_dqinfo *dqinfo = tail_alloc(sizeof(*dqinfo));
+	uint32_t *fmt = tail_alloc(sizeof(*fmt));
+	struct if_nextdqblk *nextdqblk = tail_alloc(sizeof(*nextdqblk));
+
+
+	snprintf(bogus_special_str, sizeof(bogus_special_str), "%p",
+		bogus_special);
+	snprintf(unterminated_str, sizeof(unterminated_str), "%p",
+		unterminated);
+
+
+	/* Invalid commands */
+
+	rc = syscall(__NR_quotactl, bogus_cmd, bogus_special, bogus_id,
+		     bogus_addr);
+	printf("quotactl(QCMD(%#x /* Q_??? */, %#x /* ???QUOTA */)"
+	       ", %p, %u, %p) = %s\n",
+	       QCMD_CMD(bogus_cmd), QCMD_TYPE(bogus_cmd),
+	       bogus_special, bogus_id, bogus_addr, sprintrc(rc));
+
+	rc = syscall(__NR_quotactl, 0, NULL, -1, NULL);
+	printf("quotactl(QCMD(0 /* Q_??? */, USRQUOTA), NULL, -1, NULL) = %s\n",
+	       sprintrc(rc));
+
+
+	/* Q_QUOTAON */
+
+	check_quota(CQF_ID_STR | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_QUOTAON, USRQUOTA)),
+		    ARG_STR("/dev/bogus/"), ARG_STR(QFMT_VFS_OLD),
+		    ARG_STR("/tmp/bogus/"));
+
+	rc = syscall(__NR_quotactl, QCMD(Q_QUOTAON, 0xfacefeed), bogus_dev,
+		     bogus_id, bogus_addr);
+	printf("quotactl(QCMD(Q_QUOTAON, %#x /* ???QUOTA */)"
+	       ", %s, %#x /* QFMT_VFS_??? */, %p) = %s\n",
+	       QCMD_TYPE(QCMD(Q_QUOTAON, 0xfacefeed)),
+	       bogus_dev_str, bogus_id, bogus_addr, sprintrc(rc));
+
+
+	/* Q_QUOTAOFF */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    ARG_STR(QCMD(Q_QUOTAOFF, USRQUOTA)),
+		    bogus_special, bogus_special_str);
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    ARG_STR(QCMD(Q_QUOTAOFF, GRPQUOTA)),
+		    ARG_STR("/dev/bogus/"));
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    ARG_STR(QCMD(Q_QUOTAOFF, PRJQUOTA)), ARG_STR(NULL));
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    QCMD(Q_QUOTAOFF, 3), "QCMD(Q_QUOTAOFF, 0x3 /* ???QUOTA */)",
+		    ARG_STR(NULL));
+
+
+	/* Q_GETQUOTA */
+
+	/* Trying our best to get successful result */
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETQUOTA, USRQUOTA)),
+		    ARG_STR("/dev/sda1"), getuid(), dqblk, print_dqblk,
+		    (intptr_t) 1);
+
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETQUOTA, GRPQUOTA)),
+		    ARG_STR(NULL), -1, dqblk, print_dqblk, (intptr_t) 2);
+
+
+	/* Q_GETNEXTQUOTA */
+
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETNEXTQUOTA, USRQUOTA)),
+		    ARG_STR("/dev/sda1"), 0, nextdqblk, print_nextdqblk,
+		    (intptr_t) 1);
+
+
+	/* Q_SETQUOTA */
+
+	fill_memory((char *) dqblk, sizeof(*dqblk));
+
+	check_quota(CQF_NONE, ARG_STR(QCMD(Q_SETQUOTA, PRJQUOTA)),
+		    bogus_special, bogus_special_str, 0, bogus_addr);
+
+	check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_SETQUOTA, PRJQUOTA)),
+		    ARG_STR("/dev/bogus/"), 3141592653U, dqblk, print_dqblk,
+		    (intptr_t) 0);
+
+
+	/* Q_GETINFO */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_GETINFO, GRPQUOTA)),
+		    ARG_STR("/dev/sda1"), dqinfo, print_dqinfo, (intptr_t) 1);
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_GETINFO, GRPQUOTA)),
+		    bogus_special, bogus_special_str, dqinfo,
+		    print_dqinfo, (intptr_t) 2);
+
+	/* Q_SETINFO */
+
+	fill_memory((char *) dqinfo, sizeof(*dqinfo));
+	/* In order to check flag printing correctness */
+	dqinfo->dqi_flags = 0xdeadabcd;
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_SETINFO, PRJQUOTA)),
+		    bogus_special, bogus_special_str, ARG_STR(NULL));
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
+		    ARG_STR(QCMD(Q_SETINFO, USRQUOTA)),
+		    ARG_STR("/dev/bogus/"), dqinfo, print_dqinfo, (intptr_t) 0);
+
+
+	/* Q_GETFMT */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_STR,
+		    ARG_STR(QCMD(Q_GETFMT, PRJQUOTA)),
+		    bogus_special, bogus_special_str, ARG_STR(NULL));
+	check_quota(CQF_ID_SKIP,
+		    ARG_STR(QCMD(Q_GETFMT, USRQUOTA)),
+		    unterminated, unterminated_str, fmt + 1);
+	check_quota(CQF_ID_SKIP,
+		    ARG_STR(QCMD(Q_GETFMT, GRPQUOTA)),
+		    ARG_STR("/dev/sda1"), fmt);
+
+
+	/* Q_SYNC */
+
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    ARG_STR(QCMD(Q_SYNC, USRQUOTA)),
+		    bogus_special, bogus_special_str);
+	check_quota(CQF_ID_SKIP | CQF_ADDR_SKIP,
+		    QCMD(Q_SYNC, 0xfff), "QCMD(Q_SYNC, 0xff /* ???QUOTA */)",
+		    ARG_STR(NULL));
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_quotactl && "
+	"(HAVE_LINUX_QUOTA_H || HAVE_SYS_QUOTA_H)");
+
+#endif
diff --git a/tests/quotactl.h b/tests/quotactl.h
new file mode 100644
index 0000000..49a6f87
--- /dev/null
+++ b/tests/quotactl.h
@@ -0,0 +1,188 @@
+/*
+ * Common definitions for Linux and XFS quota tests.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef STRACE_TESTS_QUOTACTL_H
+#define STRACE_TESTS_QUOTACTL_H
+
+# include <inttypes.h>
+# include <stdarg.h>
+# include <stdio.h>
+
+# ifdef HAVE_LINUX_QUOTA_H
+/* Broken in CentOS 5: has extern spinlock_t dq_data_lock; declaration */
+#  include <linux/quota.h>
+# else
+#  include <linux/types.h>
+/* Broken in some new glibc versions: have Q_GETNEXTQUOTA definition but no
+ * struct nextdqblk defined. Fixed in glibc-2.24-106-g4d72808. */
+#  include <sys/quota.h>
+# endif
+
+# ifndef QCMD_CMD
+#  define QCMD_CMD(_val) ((unsigned) (_val) >> SUBCMDSHIFT)
+# endif /* !QCMD_CMD */
+
+# ifndef QCMD_TYPE
+#  define QCMD_TYPE(_val) ((unsigned) (_val) & SUBCMDMASK)
+# endif /* !QCMD_TYPE */
+
+# ifndef PRJQUOTA
+#  define PRJQUOTA 2
+# endif
+
+# define PRINT_FIELD_D(prefix, where, field)	\
+	printf("%s%s=%lld", (prefix), #field,	\
+	       sign_extend_unsigned_to_ll((where)->field))
+
+# define PRINT_FIELD_U(prefix, where, field)	\
+	printf("%s%s=%llu", (prefix), #field,	\
+	       zero_extend_signed_to_ull((where)->field))
+
+# define PRINT_FIELD_X(prefix, where, field)	\
+	printf("%s%s=%#llx", (prefix), #field,	\
+	       zero_extend_signed_to_ull((where)->field))
+
+# define ARG_STR(_arg) (_arg), #_arg
+
+typedef void (*print_cb)(long rc, void *addr, void *arg);
+
+enum check_quotactl_flag_bits {
+	CQF_ID_SKIP_BIT,
+	CQF_ID_STR_BIT,
+	CQF_ADDR_SKIP_BIT,
+	CQF_ADDR_STR_BIT,
+	CQF_ADDR_CB_BIT,
+};
+
+enum check_quotactl_flags {
+	CQF_NONE,
+	CQF_ID_SKIP   = 1 << CQF_ID_SKIP_BIT,
+	CQF_ID_STR    = 1 << CQF_ID_STR_BIT,
+	CQF_ADDR_SKIP = 1 << CQF_ADDR_SKIP_BIT,
+	CQF_ADDR_STR  = 1 << CQF_ADDR_STR_BIT,
+	CQF_ADDR_CB   = 1 << CQF_ADDR_CB_BIT,
+};
+
+
+static inline void
+fill_memory_ex(char *ptr, size_t size, unsigned char start)
+{
+	size_t i;
+
+	for (i = 0; i < size; i++) {
+		ptr[i] = start + i % 80;
+	}
+}
+
+static inline void
+fill_memory(char *ptr, size_t size)
+{
+	fill_memory_ex(ptr, size, 0x80);
+}
+
+static inline void
+check_quota(uint32_t flags, int cmd, const char *cmd_str,
+	const char *special, const char *special_str, ...)
+{
+	long rc;
+	const char *addr_str = NULL;
+	const char *id_str = NULL;
+	void *addr = NULL;
+	print_cb addr_cb = NULL;
+	void *addr_cb_arg = NULL;
+	uint32_t id = -1;
+
+	va_list ap;
+
+	va_start(ap, special_str);
+
+	if (!(flags & CQF_ID_SKIP)) {
+		id = va_arg(ap, uint32_t);
+
+		if (flags & CQF_ID_STR)
+			id_str = va_arg(ap, const char *);
+	}
+
+	if (!(flags & CQF_ADDR_SKIP)) {
+		addr = va_arg(ap, void *);
+
+		if (flags & CQF_ADDR_CB) {
+			addr_cb = va_arg(ap, print_cb);
+			addr_cb_arg = va_arg(ap, void *);
+		} else if (flags & CQF_ADDR_STR) {
+			addr_str = va_arg(ap, const char *);
+		}
+	}
+
+	va_end(ap);
+
+	rc = syscall(__NR_quotactl, cmd, special, id, addr);
+	printf("quotactl(%s, %s", cmd_str, special_str);
+
+	if (!(flags & CQF_ID_SKIP)) {
+		if (flags & CQF_ID_STR) {
+			printf(", %s", id_str);
+		} else {
+			if (id == (uint32_t)-1)
+				printf(", -1");
+			else
+				printf(", %u", id);
+		}
+	}
+
+	if (!(flags & CQF_ADDR_SKIP)) {
+		if (flags & CQF_ADDR_CB) {
+			printf(", ");
+			addr_cb(rc, addr, addr_cb_arg);
+		} else if (flags & CQF_ADDR_STR) {
+			printf(", %s", addr_str);
+		} else {
+			printf(", %p", addr);
+		}
+	}
+
+	printf(") = %s\n", sprintrc(rc));
+}
+
+
+static const int bogus_cmd = 0xbadc0ded;
+static const char * const bogus_special =
+	(const char *) (unsigned long) 0xfffffca7ffffc0deULL;
+static const int bogus_id = 0xca7faced;
+static void * const bogus_addr =
+	(void *) (unsigned long) 0xffffda7affffdeadULL;
+
+/* It is invalid anyway due to the flash in the end */
+static const char *bogus_dev = "/dev/bogus/";
+static const char *bogus_dev_str = "\"/dev/bogus/\"";
+
+static const char unterminated_data[] = { '\1', '\2', '\3' };
+
+#endif /* !STRACE_TESTS_QUOTACTL_H */
diff --git a/tests/quotactl.test b/tests/quotactl.test
new file mode 100755
index 0000000..d0101f4
--- /dev/null
+++ b/tests/quotactl.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of quotactl syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/readahead.c b/tests/readahead.c
new file mode 100644
index 0000000..5677c1e
--- /dev/null
+++ b/tests/readahead.c
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef HAVE_READAHEAD
+# ifdef __GLIBC__
+/*
+ * Check for glibc readahead off64_t argument passing bug,
+ * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208
+ */
+#  if !(defined __GLIBC_MINOR__ && \
+        (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8)
+#   undef HAVE_READAHEAD
+#  endif
+# endif /* __GLIBC__ */
+#endif /* HAVE_READAHEAD */
+
+#ifdef HAVE_READAHEAD
+
+# include <fcntl.h>
+# include <stdio.h>
+
+static const int fds[] = {
+	-0x80000000,
+	-100,
+	-1,
+	0,
+	1,
+	2,
+	0x7fffffff,
+};
+
+static const off64_t offsets[] = {
+	-0x8000000000000000LL,
+	-0x5060708090a0b0c0LL,
+	-1LL,
+	 0,
+	 1,
+	 0xbadfaced,
+	 0x7fffffffffffffffLL,
+};
+
+static const unsigned long counts[] = {
+	0UL,
+	0xdeadca75,
+	(unsigned long) 0xface1e55beeff00dULL,
+	(unsigned long) 0xffffffffffffffffULL,
+};
+
+int
+main(void)
+{
+	unsigned i;
+	unsigned j;
+	unsigned k;
+	ssize_t rc;
+
+	for (i = 0; i < ARRAY_SIZE(fds); i++)
+		for (j = 0; j < ARRAY_SIZE(offsets); j++)
+			for (k = 0; k < ARRAY_SIZE(counts); k++) {
+				rc = readahead(fds[i], offsets[j], counts[k]);
+
+				printf("readahead(%d, %lld, %lu) = %s\n",
+					fds[i], (long long) offsets[j],
+					counts[k], sprintrc(rc));
+			}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_READAHEAD")
+
+#endif
diff --git a/tests/readahead.test b/tests/readahead.test
new file mode 100755
index 0000000..397c690
--- /dev/null
+++ b/tests/readahead.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check readahead syscall decoding.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1
diff --git a/tests/readdir.c b/tests/readdir.c
index 85170aa..8c48362 100644
--- a/tests/readdir.c
+++ b/tests/readdir.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_readdir
 
diff --git a/tests/readlink.c b/tests/readlink.c
index 85777e4..4ddf5fa 100644
--- a/tests/readlink.c
+++ b/tests/readlink.c
@@ -27,7 +27,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_readlink
 
diff --git a/tests/readlinkat.c b/tests/readlinkat.c
index 5ca9e72..4d3b516 100644
--- a/tests/readlinkat.c
+++ b/tests/readlinkat.c
@@ -27,7 +27,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_readlinkat
 
diff --git a/tests/reboot.c b/tests/reboot.c
index eedc2a6..9b09e64 100644
--- a/tests/reboot.c
+++ b/tests/reboot.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_reboot
 
diff --git a/tests/signalfd.c b/tests/redirect-fds.c
similarity index 65%
copy from tests/signalfd.c
copy to tests/redirect-fds.c
index 7b1d6ce..fc1073a 100644
--- a/tests/signalfd.c
+++ b/tests/redirect-fds.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,29 +26,49 @@
  */
 
 #include "tests.h"
-#include <fcntl.h>
+#include <assert.h>
+#include <unistd.h>
+#include <sys/stat.h>
 
-#if defined HAVE_SYS_SIGNALFD_H && defined HAVE_SIGNALFD && defined O_CLOEXEC
+#define N_FDS 3
 
-# include <signal.h>
-# include <unistd.h>
-# include <sys/signalfd.h>
-
-int
-main(void)
+/*
+ * Do not print any messages, indicate errors with return codes.
+ */
+static int
+check_fd(int fd, const char *fname)
 {
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-	(void) close(0);
-	if (signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK))
-		perror_msg_and_skip("signalfd");
+	const int should_be_closed = (fname[0] == '\0');
+
+	struct stat st_fd, st_fn;
+
+	if (fstat(fd, &st_fd)) {
+		if (!should_be_closed)
+			return 10 + fd;
+	} else {
+		if (should_be_closed)
+			return 20 + fd;
+
+		if (stat(fname, &st_fn))
+			return 30 + fd;
+
+		if (st_fd.st_dev != st_fn.st_dev
+		    || st_fd.st_ino != st_fn.st_ino)
+			return 40 + fd;
+	}
+
 	return 0;
 }
 
-#else
+int
+main(int ac, char **av)
+{
+	assert(ac == 1 + N_FDS);
 
-SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
+	int rc = 0, fd;
+	for (fd = 1; fd < 1 + N_FDS; ++fd)
+		if ((rc = check_fd(fd - 1, av[fd])))
+			break;
 
-#endif
+	return rc;
+}
diff --git a/tests/redirect-fds.test b/tests/redirect-fds.test
new file mode 100755
index 0000000..a451917
--- /dev/null
+++ b/tests/redirect-fds.test
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# Check that strace does not leak placeholder descriptors.
+#
+# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+fd0="$LOG.fd0"
+fd1="$LOG.fd1"
+fd2="$LOG.fd2"
+
+check_prog touch
+
+check_fd()
+{
+	local a1 a2 a3
+	a1="$1"
+	a2="$2"
+	a3="$3"
+
+	touch "$LOG" "$fd0" ||
+		framework_skip_ 'failed to create files'
+
+	set -- "\"./$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
+	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
+			fail_ "$* failed with code $rc"
+
+	set -- "$STRACE" -o"$LOG" -echdir "$@"
+	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
+		dump_log_and_fail_with "$* failed with code $?"
+
+	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
+}
+
+check_fd "$fd0" "$fd1" "$fd2"
+check_fd ''     "$fd1" "$fd2"
+check_fd "$fd0" ''     "$fd2"
+check_fd "$fd0" "$fd1" ''
+check_fd ''     ''     "$fd2"
+check_fd ''     "$fd1" ''
+check_fd "$fd0" ''     ''
+check_fd ''     ''     ''
diff --git a/tests/remap_file_pages.c b/tests/remap_file_pages.c
index 8aa099e..9298f28 100644
--- a/tests/remap_file_pages.c
+++ b/tests/remap_file_pages.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_remap_file_pages
 
diff --git a/tests/rename.c b/tests/rename.c
index a2a9209..2a2a4e0 100644
--- a/tests/rename.c
+++ b/tests/rename.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rename
 
diff --git a/tests/renameat.c b/tests/renameat.c
index da38f23..d201578 100644
--- a/tests/renameat.c
+++ b/tests/renameat.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_renameat
 
diff --git a/tests/renameat2.c b/tests/renameat2.c
index 28a1b5b..ea57185 100644
--- a/tests/renameat2.c
+++ b/tests/renameat2.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_renameat2
 
diff --git a/tests/request_key.c b/tests/request_key.c
new file mode 100644
index 0000000..361bf52
--- /dev/null
+++ b/tests/request_key.c
@@ -0,0 +1,152 @@
+/*
+ * Check decoding of request_key syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_request_key
+
+# include <inttypes.h>
+# include <stdio.h>
+# include <unistd.h>
+
+void
+print_val_str(const void *ptr, const char *str)
+{
+	if (str)
+		printf("%s, ", str);
+	else
+		printf("%p, ", ptr);
+}
+
+void
+do_request_key(const char *type, const char *type_str, const char *desc,
+	const char *desc_str, const char *info, const char *info_str,
+	int32_t keyring, const char *keyring_str)
+{
+	long rc = syscall(__NR_request_key, type, desc, info, keyring);
+	const char *errstr = sprintrc(rc);
+	printf("request_key(");
+	print_val_str(type, type_str);
+	print_val_str(desc, desc_str);
+	print_val_str(info, info_str);
+	if (keyring_str)
+		printf("%s", keyring_str);
+	else
+		printf("%d", keyring);
+	printf(") = %s\n", errstr);
+}
+
+# define _STR(_arg) #_arg
+# define ARG_STR(_arg) (_arg), #_arg
+
+int
+main(void)
+{
+	static const char unterminated1[] = { '\1', '\2', '\3', '\4', '\5' };
+	static const char unterminated2[] = { '\6', '\7', '\10', '\11', '\12' };
+	static const char unterminated3[] =
+		{ '\16', '\17', '\20', '\21', '\22' };
+
+	char *bogus_type = tail_memdup(unterminated1, sizeof(unterminated1));
+	char *bogus_desc = tail_memdup(unterminated2, sizeof(unterminated2));
+	char *bogus_info = tail_memdup(unterminated3, sizeof(unterminated3));
+
+	unsigned i;
+	unsigned j;
+	unsigned k;
+	unsigned l;
+
+	struct {
+		const char *type;
+		const char *str;
+	} types[] = {
+		{ ARG_STR(NULL) },
+		{ (const char *) 0xfffffee1fffffbadULL, NULL },
+		{ bogus_type, NULL },
+		{ ARG_STR("\20\21\22\23\24") },
+		{ ARG_STR("user") },
+	};
+
+	struct {
+		const char *desc;
+		const char *str;
+	} descs[] = {
+		{ ARG_STR(NULL) },
+		{ (const char *) 0xfffff00dfffffca7ULL, NULL },
+		{ bogus_desc, NULL },
+		{ ARG_STR("\25\26\27\30\31") },
+		{ ARG_STR("desc") },
+		{ "overly long description", _STR("overly long ") "..." },
+	};
+
+	struct {
+		const char *info;
+		const char *str;
+	} infos[] = {
+		{ ARG_STR(NULL) },
+		{ (const char *) 0xfffffacefffff157ULL, NULL },
+		{ bogus_info, NULL },
+		{ ARG_STR("\32\33\34\35\36") },
+		{ ARG_STR("info") },
+		{ "overly long info", _STR("overly long ") "..." },
+	};
+
+	struct {
+		uint32_t keyring;
+		const char *str;
+	} keyrings[] = {
+		{ ARG_STR(0) },
+		{ ARG_STR(1234567890) },
+		{ ARG_STR(-1234567890) },
+		{ -1, "KEY_SPEC_THREAD_KEYRING" },
+	};
+
+	for (i = 0; i < ARRAY_SIZE(types); i++)
+		for (j = 0; j < ARRAY_SIZE(descs); j++)
+			for (k = 0; k < ARRAY_SIZE(infos); k++)
+				for (l = 0; l < ARRAY_SIZE(keyrings); l++)
+					do_request_key(
+						types[i].type, types[i].str,
+						descs[j].desc, descs[j].str,
+						infos[k].info, infos[k].str,
+						keyrings[l].keyring,
+						keyrings[l].str);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_request_key");
+
+#endif
diff --git a/tests/request_key.test b/tests/request_key.test
new file mode 100755
index 0000000..9812a18
--- /dev/null
+++ b/tests/request_key.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of request_key syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -s12
diff --git a/tests/rmdir.c b/tests/rmdir.c
index e5a7f1d..20952d8 100644
--- a/tests/rmdir.c
+++ b/tests/rmdir.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rmdir
 
diff --git a/tests/rt_sigpending.c b/tests/rt_sigpending.c
index a6381cd..accf691 100644
--- a/tests/rt_sigpending.c
+++ b/tests/rt_sigpending.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rt_sigpending
 
diff --git a/tests/rt_sigprocmask.c b/tests/rt_sigprocmask.c
index ab92cde..27e357f 100644
--- a/tests/rt_sigprocmask.c
+++ b/tests/rt_sigprocmask.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rt_sigprocmask
 
diff --git a/tests/rt_sigsuspend.c b/tests/rt_sigsuspend.c
index b96a8c9..73e1336 100644
--- a/tests/rt_sigsuspend.c
+++ b/tests/rt_sigsuspend.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rt_sigsuspend
 
diff --git a/tests/rt_sigtimedwait.c b/tests/rt_sigtimedwait.c
index 6136b7c..ee6d3b9 100644
--- a/tests/rt_sigtimedwait.c
+++ b/tests/rt_sigtimedwait.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rt_sigtimedwait
 
diff --git a/tests/rt_tgsigqueueinfo.c b/tests/rt_tgsigqueueinfo.c
index 0926fb1..ebfb719 100644
--- a/tests/rt_tgsigqueueinfo.c
+++ b/tests/rt_tgsigqueueinfo.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_rt_tgsigqueueinfo
 
@@ -67,7 +67,8 @@
 	info->si_value.sival_ptr = (void *) (unsigned long) 0xdeadbeeffacefeed;
 
 	if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info))
-		perror_msg_and_fail("rt_tgsigqueueinfo");
+		(errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)(
+			"rt_tgsigqueueinfo");
 
 	printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s"
 		", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u"
diff --git a/tests/sched_get_priority_mxx.c b/tests/sched_get_priority_mxx.c
index 7145317..fc14b27 100644
--- a/tests/sched_get_priority_mxx.c
+++ b/tests/sched_get_priority_mxx.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined(__NR_sched_get_priority_min) \
  && defined(__NR_sched_get_priority_max)
diff --git a/tests/sched_rr_get_interval.c b/tests/sched_rr_get_interval.c
index dd069e2..99943e7 100644
--- a/tests/sched_rr_get_interval.c
+++ b/tests/sched_rr_get_interval.c
@@ -1,8 +1,9 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_sched_rr_get_interval
 
+# include <stdint.h>
 # include <stdio.h>
 # include <sched.h>
 # include <unistd.h>
@@ -11,9 +12,24 @@
 main(void)
 {
 	struct timespec *const tp = tail_alloc(sizeof(struct timespec));
-	long rc = syscall(__NR_sched_rr_get_interval, -1, tp);
-	printf("sched_rr_get_interval(-1, %p) = %ld %s (%m)\n",
-	       tp, rc, errno2name());
+	long rc;
+
+	rc = syscall(__NR_sched_rr_get_interval, 0, NULL);
+	printf("sched_rr_get_interval(0, NULL) = %s\n", sprintrc(rc));
+
+	rc = syscall(__NR_sched_rr_get_interval, 0, tp + 1);
+	printf("sched_rr_get_interval(0, %p) = %s\n", tp + 1, sprintrc(rc));
+
+	rc = syscall(__NR_sched_rr_get_interval, -1, tp);
+	printf("sched_rr_get_interval(-1, %p) = %s\n", tp, sprintrc(rc));
+
+	rc = syscall(__NR_sched_rr_get_interval, 0, tp);
+	if (rc == 0)
+		printf("sched_rr_get_interval(0, {%jd, %jd}) = 0\n",
+			(intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+	else
+		printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
+			sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/sched_xetaffinity.c b/tests/sched_xetaffinity.c
index 8851a4a..195f3af 100644
--- a/tests/sched_xetaffinity.c
+++ b/tests/sched_xetaffinity.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <sched.h>
 
 #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \
diff --git a/tests/sched_xetattr.c b/tests/sched_xetattr.c
index c06e9b2..1b48491 100644
--- a/tests/sched_xetattr.c
+++ b/tests/sched_xetattr.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_sched_getattr && defined __NR_sched_setattr
 
@@ -37,44 +37,89 @@
 int
 main(void)
 {
-	static union {
-		struct {
-			uint32_t size;
-			uint32_t sched_policy;
-			uint64_t sched_flags;
-			uint32_t sched_nice;
-			uint32_t sched_priority;
-			uint64_t sched_runtime;
-			uint64_t sched_deadline;
-			uint64_t sched_period;
-		} attr;
-		char buf[256];
-	} sched;
+	struct {
+		uint32_t size;
+		uint32_t sched_policy;
+		uint64_t sched_flags;
+		int32_t  sched_nice;
+		uint32_t sched_priority;
+		uint64_t sched_runtime;
+		uint64_t sched_deadline;
+		uint64_t sched_period;
+	} *sched_attr = tail_alloc(sizeof(*sched_attr));
 
-	if (syscall(__NR_sched_getattr, 0, &sched, sizeof(sched), 0))
+	long rc = syscall(__NR_sched_getattr, 0xdeadface, NULL, 0, 0);
+	printf("sched_getattr\\(%d, NULL, 0, 0\\) += %s\n",
+		0xdeadface, sprintrc_grep(rc));
+
+	rc = syscall(__NR_sched_getattr, -1,
+		     sched_attr, 0xbadfaced, 0xc0defeed);
+	printf("sched_getattr\\(-1, %p, %u, %u\\) += %s\n",
+		sched_attr, 0xbadfaced, 0xc0defeed, sprintrc_grep(rc));
+
+	rc = syscall(__NR_sched_getattr, 0,
+		     sched_attr + 1, sizeof(*sched_attr), 0);
+	printf("sched_getattr\\(0, %p, %u, 0\\) += %s\n",
+		sched_attr + 1, (unsigned)sizeof(*sched_attr),
+		sprintrc_grep(rc));
+
+	if (syscall(__NR_sched_getattr, 0, sched_attr, sizeof(*sched_attr), 0))
 		perror_msg_and_skip("sched_getattr");
 
-	printf("sched_getattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+, sched_flags=%s, sched_nice=%u, sched_priority=%u, sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, 256, 0\\) += 0\n",
-		sched.attr.size,
-		sched.attr.sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
-		sched.attr.sched_nice,
-		sched.attr.sched_priority,
-		sched.attr.sched_runtime,
-		sched.attr.sched_deadline,
-		sched.attr.sched_period);
+	printf("sched_getattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
+	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "\\}, %u, 0\\) += 0\n",
+	       sched_attr->size,
+	       sched_attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+	       sched_attr->sched_nice,
+	       sched_attr->sched_priority,
+	       sched_attr->sched_runtime,
+	       sched_attr->sched_deadline,
+	       sched_attr->sched_period,
+	       (unsigned) sizeof(*sched_attr));
 
-	sched.attr.sched_flags |= 1;
-	if (syscall(__NR_sched_setattr, 0, &sched, 0))
+	sched_attr->sched_flags |= 1;
+	if (syscall(__NR_sched_setattr, 0, sched_attr, 0))
 		perror_msg_and_skip("sched_setattr");
 
-	printf("sched_setattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+, sched_flags=%s, sched_nice=%u, sched_priority=%u, sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, 0\\) += 0\n",
-		sched.attr.size,
-		"SCHED_FLAG_RESET_ON_FORK",
-		sched.attr.sched_nice,
-		sched.attr.sched_priority,
-		sched.attr.sched_runtime,
-		sched.attr.sched_deadline,
-		sched.attr.sched_period);
+	printf("sched_setattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
+	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "\\}, 0\\) += 0\n",
+	       sched_attr->size,
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       sched_attr->sched_nice,
+	       sched_attr->sched_priority,
+	       sched_attr->sched_runtime,
+	       sched_attr->sched_deadline,
+	       sched_attr->sched_period);
+
+	sched_attr->size = 0x90807060;
+	sched_attr->sched_policy = 0xca7faced;
+	sched_attr->sched_flags = 0xbadc0ded1057da7aULL;
+	sched_attr->sched_nice = 0xafbfcfdf;
+	sched_attr->sched_priority = 0xb8c8d8e8;
+	sched_attr->sched_runtime = 0xbadcaffedeadf157ULL;
+	sched_attr->sched_deadline = 0xc0de70a57badac75ULL;
+	sched_attr->sched_period = 0xded1ca7edda7aca7ULL;
+
+	rc = syscall(__NR_sched_setattr, 0xfacec0de, sched_attr, 0xbeeff00d);
+
+	printf("sched_setattr\\(%d, \\{size=%u, "
+		"sched_policy=%#x /\\* SCHED_\\?\\?\\? \\*/, "
+		"sched_flags=%#" PRIx64 " /\\* SCHED_FLAG_\\?\\?\\? \\*/, "
+		"sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+		"sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, "
+		"%u\\) += %s\n",
+		0xfacec0de, sched_attr->size,
+		sched_attr->sched_policy,
+		sched_attr->sched_flags,
+		sched_attr->sched_nice,
+		sched_attr->sched_priority,
+		sched_attr->sched_runtime,
+		sched_attr->sched_deadline,
+		sched_attr->sched_period, 0xbeeff00d, sprintrc_grep(rc));
 
 	return 0;
 }
diff --git a/tests/sched_xetparam.c b/tests/sched_xetparam.c
index cb30818..e761a9d 100644
--- a/tests/sched_xetparam.c
+++ b/tests/sched_xetparam.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_sched_getparam && defined __NR_sched_setparam
 
diff --git a/tests/sched_xetscheduler.c b/tests/sched_xetscheduler.c
index f86adfa..7faee8c 100644
--- a/tests/sched_xetscheduler.c
+++ b/tests/sched_xetscheduler.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler
 
@@ -46,10 +46,29 @@
 	printf("sched_getscheduler(0) = %ld (%s)\n",
 	       rc, scheduler);
 
+	rc = syscall(__NR_sched_getscheduler, -1);
+	printf("sched_getscheduler(-1) = %s\n", sprintrc(rc));
+
 	param->sched_priority = -1;
+
+	rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL);
+	printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc));
+
+	rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1);
+	printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param);
+	printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n",
+	       0xfaceda7a, param->sched_priority, sprintrc(rc));
+
+	rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param);
+	printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n",
+	       param->sched_priority, sprintrc(rc));
+
 	rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param);
-	printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %ld %s (%m)\n",
-	       param->sched_priority, rc, errno2name());
+	printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n",
+	       param->sched_priority, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/sched_yield.c b/tests/sched_yield.c
index ed25722..355e7e8 100644
--- a/tests/sched_yield.c
+++ b/tests/sched_yield.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_sched_yield
 
diff --git a/tests/seccomp-filter-v.c b/tests/seccomp-filter-v.c
index ef69c0d..dbf686d 100644
--- a/tests/seccomp-filter-v.c
+++ b/tests/seccomp-filter-v.c
@@ -32,7 +32,7 @@
 #include <errno.h>
 #include <stddef.h>
 #include <stdio.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <unistd.h>
 
 #ifdef HAVE_PRCTL
diff --git a/tests/seccomp-filter.c b/tests/seccomp-filter.c
index 0326f6e..d4d76dd 100644
--- a/tests/seccomp-filter.c
+++ b/tests/seccomp-filter.c
@@ -30,7 +30,7 @@
 #include "tests.h"
 
 #include <stdio.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <unistd.h>
 
 #ifdef HAVE_LINUX_SECCOMP_H
diff --git a/tests/seccomp-strict.c b/tests/seccomp-strict.c
index c145567..47d909d 100644
--- a/tests/seccomp-strict.c
+++ b/tests/seccomp-strict.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_seccomp && defined __NR_exit
 
diff --git a/tests/select.c b/tests/select.c
index fa551a6..b5ff259 100644
--- a/tests/select.c
+++ b/tests/select.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_select && !defined __NR__newselect
 
diff --git a/tests/semop.c b/tests/semop.c
index 214ce32..f9b7444 100644
--- a/tests/semop.c
+++ b/tests/semop.c
@@ -1,11 +1,14 @@
 #include "tests.h"
-#include <sys/types.h>
 #include <sys/ipc.h>
 #include <sys/sem.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 
+#include "xlat.h"
+#include "xlat/semop_flags.h"
+
 union semun
 {
 	int val;
@@ -26,6 +29,15 @@
 int
 main(void)
 {
+	static const int bogus_semid = 0xfdb97531;
+	static void * const bogus_sops = (void *) -1L;
+	static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
+
+	static const struct timespec ts_data = { 1, 123456789 };
+
+	struct timespec *ts = tail_memdup(&ts_data, sizeof(*ts));
+	int rc;
+
 	id = semget(IPC_PRIVATE, 1, 0600);
 	if (id < 0)
 		perror_msg_and_skip("semget");
@@ -36,10 +48,32 @@
 		perror_msg_and_skip("semctl");
 
 	struct sembuf *const sem_b = tail_alloc(sizeof(*sem_b));
+	struct sembuf *const sem_b2 = tail_alloc(sizeof(*sem_b2));
+
+	rc = semop(bogus_semid, NULL, bogus_nsops);
+	printf("semop(%d, NULL, %u) = %s\n",
+		bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+	rc = semop(bogus_semid, bogus_sops, 1);
+	printf("semop(%d, %p, %u) = %s\n",
+		bogus_semid, bogus_sops, 1, sprintrc(rc));
+
 	sem_b->sem_num = 0;
 	sem_b->sem_op = 1;
 	sem_b->sem_flg = SEM_UNDO;
 
+	sem_b2->sem_num = 0xface;
+	sem_b2->sem_op = 0xf00d;
+	sem_b2->sem_flg = 0xbeef;
+
+	rc = semop(bogus_semid, sem_b2, 2);
+	printf("semop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u) = %s\n",
+		bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+		sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+		sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+		sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT),
+		sem_b2 + 1, 2, sprintrc(rc));
+
 	if (semop(id, sem_b, 1))
 		perror_msg_and_skip("semop, 1");
 	printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = 0\n", id);
@@ -49,6 +83,36 @@
 		perror_msg_and_skip("semop, -1");
 	printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = 0\n", id);
 
+	rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+	printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+		bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+	rc = semtimedop(id, sem_b + 1, 1, ts + 1);
+	printf("semtimedop(%d, %p, 1, %p) = %s\n",
+		id, sem_b + 1, ts + 1, sprintrc(rc));
+
+	rc = semtimedop(bogus_semid, sem_b2, 2, ts);
+	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, {%jd, %jd}) = "
+		"%s\n",
+		bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+		sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+		sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+		sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT),
+		sem_b2 + 1, 2,
+		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec,
+		sprintrc(rc));
+
+	sem_b->sem_op = 1;
+	if (semtimedop(id, sem_b, 1, NULL))
+		perror_msg_and_skip("semtimedop, 1");
+	printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+	sem_b->sem_op = -1;
+	if (semtimedop(id, sem_b, 1, ts))
+		perror_msg_and_skip("semtimedop, -1");
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, {%jd, %jd}) = 0\n", id,
+		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec);
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests/semop.test b/tests/semop.test
index 7e8f32c..3e77d2f 100755
--- a/tests/semop.test
+++ b/tests/semop.test
@@ -3,4 +3,4 @@
 # Check semop syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests/sendfile.c b/tests/sendfile.c
index b1c7574..61f9212 100644
--- a/tests/sendfile.c
+++ b/tests/sendfile.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_sendfile
 
diff --git a/tests/sendfile64.c b/tests/sendfile64.c
index 7c4a6f5..f757963 100644
--- a/tests/sendfile64.c
+++ b/tests/sendfile64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_sendfile64
 
diff --git a/tests/set_mempolicy.c b/tests/set_mempolicy.c
index e59e89f..3802eaf 100644
--- a/tests/set_mempolicy.c
+++ b/tests/set_mempolicy.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_set_mempolicy
 
@@ -58,7 +58,7 @@
 	memset(nodemask, 0, size);
 
 	long rc = syscall(__NR_set_mempolicy, 0, nodemask, maxnode);
-	int saved_errno = errno;
+	const char *errstr = sprintrc(rc);
 
 	fputs("set_mempolicy(MPOL_DEFAULT, ", stdout);
 
@@ -88,13 +88,7 @@
 			printf("[]");
 	}
 
-	printf(", %lu) = ", maxnode);
-	if (rc) {
-		errno = saved_errno;
-		printf("%ld %s (%m)\n", rc, errno2name());
-	} else {
-		puts("0");
-	}
+	printf(", %lu) = %s\n", maxnode, errstr);
 }
 
 static void
@@ -135,8 +129,8 @@
 	const unsigned long *nodemask = (void *) 0xfacefeedfffffffe;
 	const unsigned long maxnode = (unsigned long) 0xcafef00dbadc0ded;
 	long rc = syscall(__NR_set_mempolicy, 1, nodemask, maxnode);
-	printf("set_mempolicy(MPOL_PREFERRED, %p, %lu) = %ld %s (%m)\n",
-	       nodemask, maxnode, rc, errno2name());
+	printf("set_mempolicy(MPOL_PREFERRED, %p, %lu) = %s\n",
+	       nodemask, maxnode, sprintrc(rc));
 
 	test_offset(0);
 	test_offset(1);
diff --git a/tests/setdomainname.c b/tests/setdomainname.c
index 1d83ffd..f3e2484 100644
--- a/tests/setdomainname.c
+++ b/tests/setdomainname.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setdomainname
 
diff --git a/tests/setfsgid.c b/tests/setfsgid.c
index 9f3a279..871f4b3 100644
--- a/tests/setfsgid.c
+++ b/tests/setfsgid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setfsgid
 
diff --git a/tests/setfsgid32.c b/tests/setfsgid32.c
index 149b767..6279abd 100644
--- a/tests/setfsgid32.c
+++ b/tests/setfsgid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setfsgid32
 
diff --git a/tests/setfsuid.c b/tests/setfsuid.c
index 7c77f50..d6faf97 100644
--- a/tests/setfsuid.c
+++ b/tests/setfsuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setfsuid
 
diff --git a/tests/setfsuid32.c b/tests/setfsuid32.c
index cb72d7c..b71cf23 100644
--- a/tests/setfsuid32.c
+++ b/tests/setfsuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setfsuid32
 
diff --git a/tests/setgid.c b/tests/setgid.c
index aa3f898..8794a0a 100644
--- a/tests/setgid.c
+++ b/tests/setgid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setgid
 
diff --git a/tests/setgid32.c b/tests/setgid32.c
index c9f1221..17f43c5 100644
--- a/tests/setgid32.c
+++ b/tests/setgid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setgid32
 
diff --git a/tests/setgroups.c b/tests/setgroups.c
index 8355301..5068ff4 100644
--- a/tests/setgroups.c
+++ b/tests/setgroups.c
@@ -36,7 +36,7 @@
 #else
 
 # include "tests.h"
-# include <sys/syscall.h>
+# include <asm/unistd.h>
 
 # ifdef __NR_setgroups
 
@@ -61,103 +61,86 @@
 main(void)
 {
 	/* check how the first argument is decoded */
-	if (syscall(SYSCALL_NR, 0, 0))
-		printf("%s(0, NULL) = -1 %s (%m)\n", SYSCALL_NAME, errno2name());
-	else
-		printf("%s(0, NULL) = 0\n", SYSCALL_NAME);
+	long rc = syscall(SYSCALL_NR, 0, 0);
+	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	if (syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0))
-		printf("%s(0, NULL) = -1 %s (%m)\n",
-		       SYSCALL_NAME, errno2name());
-	else
-		printf("%s(0, NULL) = 0\n", SYSCALL_NAME);
+	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	syscall(SYSCALL_NR, 1, 0);
-	printf("%s(1, NULL) = -1 %s (%m)\n", SYSCALL_NAME, errno2name());
+	rc = syscall(SYSCALL_NR, 1, 0);
+	printf("%s(1, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	syscall(SYSCALL_NR, (long) 0xffffffff00000001ULL, 0);
-	printf("%s(1, NULL) = -1 %s (%m)\n", SYSCALL_NAME, errno2name());
+	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000001ULL, 0);
+	printf("%s(1, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	syscall(SYSCALL_NR, -1U, 0);
-	printf("%s(%u, NULL) = -1 %s (%m)\n", SYSCALL_NAME, -1U, errno2name());
+	rc = syscall(SYSCALL_NR, -1U, 0);
+	printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
 
-	syscall(SYSCALL_NR, -1L, 0);
-	printf("%s(%u, NULL) = -1 %s (%m)\n", SYSCALL_NAME, -1U, errno2name());
+	rc = syscall(SYSCALL_NR, -1L, 0);
+	printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
 
 	/* check how the second argument is decoded */
 	const GID_TYPE *const g1 = tail_alloc(sizeof(*g1));
 	GID_TYPE *const g2 = tail_alloc(sizeof(*g2) * 2);
 	GID_TYPE *const g3 = tail_alloc(sizeof(*g3) * 3);
 
-	if (syscall(SYSCALL_NR, 0, g1 + 1))
-		printf("%s(0, []) = -1 %s (%m)\n",
-		       SYSCALL_NAME, errno2name());
-	else
-		printf("%s(0, []) = 0\n", SYSCALL_NAME);
+	rc = syscall(SYSCALL_NR, 0, g1 + 1);
+	printf("%s(0, []) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	if (syscall(SYSCALL_NR, 1, g1))
-		printf("%s(1, [%u]) = -1 %s (%m)\n",
-		       SYSCALL_NAME, (unsigned) *g1, errno2name());
-	else
-		printf("%s(1, [%u]) = 0\n",
-		       SYSCALL_NAME, (unsigned) *g1);
+	rc = syscall(SYSCALL_NR, 1, g1);
+	printf("%s(1, [%u]) = %s\n",
+	       SYSCALL_NAME, (unsigned) *g1, sprintrc(rc));
 
-	syscall(SYSCALL_NR, 1, g1 + 1);
-	printf("%s(1, %p) = -1 %s (%m)\n",
-	       SYSCALL_NAME, g1 + 1, errno2name());
+	rc = syscall(SYSCALL_NR, 1, g1 + 1);
+	printf("%s(1, %p) = %s\n", SYSCALL_NAME, g1 + 1, sprintrc(rc));
 
-	syscall(SYSCALL_NR, 1, -1L);
-	printf("%s(1, %#lx) = -1 %s (%m)\n", SYSCALL_NAME, -1L, errno2name());
+	rc = syscall(SYSCALL_NR, 1, -1L);
+	printf("%s(1, %#lx) = %s\n", SYSCALL_NAME, -1L, sprintrc(rc));
 
-	syscall(SYSCALL_NR, 2, g1);
-	printf("%s(2, [%u, %p]) = -1 %s (%m)\n",
-	       SYSCALL_NAME, (unsigned) *g1, g1 + 1, errno2name());
+	rc = syscall(SYSCALL_NR, 2, g1);
+	printf("%s(2, [%u, %p]) = %s\n",
+	       SYSCALL_NAME, (unsigned) *g1, g1 + 1, sprintrc(rc));
 
 	g2[0] = -2;
 	g2[1] = -3;
-	if (syscall(SYSCALL_NR, 2, g2))
-		printf("%s(2, [%u, %u]) = -1 %s (%m)\n", SYSCALL_NAME,
-		       (unsigned) g2[0], (unsigned) g2[1], errno2name());
-	else
-		printf("%s(2, [%u, %u]) = 0\n", SYSCALL_NAME,
-		       (unsigned) g2[0], (unsigned) g2[1]);
+	rc = syscall(SYSCALL_NR, 2, g2);
+	printf("%s(2, [%u, %u]) = %s\n", SYSCALL_NAME,
+	       (unsigned) g2[0], (unsigned) g2[1], sprintrc(rc));
 
-	syscall(SYSCALL_NR, 3, g2);
-	printf("%s(3, [%u, %u, %p]) = -1 %s (%m)\n", SYSCALL_NAME,
-	       (unsigned) g2[0], (unsigned) g2[1], g2 + 2, errno2name());
+	rc = syscall(SYSCALL_NR, 3, g2);
+	printf("%s(3, [%u, %u, %p]) = %s\n", SYSCALL_NAME,
+	       (unsigned) g2[0], (unsigned) g2[1], g2 + 2, sprintrc(rc));
 
 	g3[0] = 0;
 	g3[1] = 1;
-	if (syscall(SYSCALL_NR, 3, g3))
-		printf("%s(3, [%u, %u, ...]) = -1 %s (%m)\n", SYSCALL_NAME,
-		       (unsigned) g3[0], (unsigned) g3[1], errno2name());
-	else
-		printf("%s(3, [%u, %u]) = 0\n", SYSCALL_NAME,
-		       (unsigned) g3[0], (unsigned) g3[1]);
+	rc = syscall(SYSCALL_NR, 3, g3);
+	printf("%s(3, [%u, %u%s]) = %s\n", SYSCALL_NAME,
+	       (unsigned) g3[0], (unsigned) g3[1], rc ? ", ..." : "",
+	       sprintrc(rc));
 
-	syscall(SYSCALL_NR, 4, g3);
-	printf("%s(4, [%u, %u, ...]) = -1 %s (%m)\n", SYSCALL_NAME,
-	       (unsigned) g3[0], (unsigned) g3[1], errno2name());
+	rc = syscall(SYSCALL_NR, 4, g3);
+	printf("%s(4, [%u, %u, ...]) = %s\n", SYSCALL_NAME,
+	       (unsigned) g3[0], (unsigned) g3[1], sprintrc(rc));
 
-	long rc = sysconf(_SC_NGROUPS_MAX);
+	rc = sysconf(_SC_NGROUPS_MAX);
 	const unsigned ngroups_max = rc;
 
 	if ((unsigned long) rc == ngroups_max && (int) ngroups_max > 0) {
-		syscall(SYSCALL_NR, ngroups_max, g3);
-		printf("%s(%u, [%u, %u, ...]) = -1 %s (%m)\n", SYSCALL_NAME,
+		rc = syscall(SYSCALL_NR, ngroups_max, g3);
+		printf("%s(%u, [%u, %u, ...]) = %s\n", SYSCALL_NAME,
 		       ngroups_max, (unsigned) g3[0], (unsigned) g3[1],
-		       errno2name());
+		       sprintrc(rc));
 
 		const unsigned long size =
 			(unsigned long) 0xffffffff00000000ULL | ngroups_max;
-		syscall(SYSCALL_NR, size, g3);
-		printf("%s(%u, [%u, %u, ...]) = -1 %s (%m)\n", SYSCALL_NAME,
+		rc = syscall(SYSCALL_NR, size, g3);
+		printf("%s(%u, [%u, %u, ...]) = %s\n", SYSCALL_NAME,
 		       ngroups_max, (unsigned) g3[0], (unsigned) g3[1],
-		       errno2name());
+		       sprintrc(rc));
 
-		syscall(SYSCALL_NR, ngroups_max + 1, g3);
-		printf("%s(%u, %p) = -1 %s (%m)\n", SYSCALL_NAME,
-		       ngroups_max + 1, g3, errno2name());
+		rc = syscall(SYSCALL_NR, ngroups_max + 1, g3);
+		printf("%s(%u, %p) = %s\n", SYSCALL_NAME,
+		       ngroups_max + 1, g3, sprintrc(rc));
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/setgroups32.c b/tests/setgroups32.c
index bd0a1fd..ecf00bb 100644
--- a/tests/setgroups32.c
+++ b/tests/setgroups32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setgroups32
 
diff --git a/tests/sethostname.c b/tests/sethostname.c
index 65d0a78..dfa9d1a 100644
--- a/tests/sethostname.c
+++ b/tests/sethostname.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_sethostname
 
diff --git a/tests/setregid.c b/tests/setregid.c
index 6efa388..e1da786 100644
--- a/tests/setregid.c
+++ b/tests/setregid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setregid
 
diff --git a/tests/setregid32.c b/tests/setregid32.c
index 0d0ebed..3cf0daf 100644
--- a/tests/setregid32.c
+++ b/tests/setregid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setregid32
 
diff --git a/tests/setresgid.c b/tests/setresgid.c
index 6754c2f..8701df8 100644
--- a/tests/setresgid.c
+++ b/tests/setresgid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setresgid
 
diff --git a/tests/setresgid32.c b/tests/setresgid32.c
index 29a8042..dfce457 100644
--- a/tests/setresgid32.c
+++ b/tests/setresgid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setresgid32
 
diff --git a/tests/setresuid.c b/tests/setresuid.c
index b924f91..3a9dbd1 100644
--- a/tests/setresuid.c
+++ b/tests/setresuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setresuid
 
diff --git a/tests/setresuid32.c b/tests/setresuid32.c
index d4187dd..387268a 100644
--- a/tests/setresuid32.c
+++ b/tests/setresuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setresuid32
 
diff --git a/tests/setreuid.c b/tests/setreuid.c
index dc13038..68e7519 100644
--- a/tests/setreuid.c
+++ b/tests/setreuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setreuid
 
diff --git a/tests/setreuid32.c b/tests/setreuid32.c
index 43b7b91..ba01762 100644
--- a/tests/setreuid32.c
+++ b/tests/setreuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setreuid32
 
diff --git a/tests/setrlimit.c b/tests/setrlimit.c
index b5a14c6..95dd898 100644
--- a/tests/setrlimit.c
+++ b/tests/setrlimit.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setrlimit
 
@@ -43,8 +43,7 @@
 	for (xlat = resources; xlat->str; ++xlat) {
 		unsigned long res = 0xfacefeed00000000 | xlat->val;
 		long rc = syscall(__NR_setrlimit, res, 0);
-		printf("setrlimit(%s, NULL) = %ld %s (%m)\n",
-		       xlat->str, rc, errno2name());
+		printf("setrlimit(%s, NULL) = %s\n", xlat->str, sprintrc(rc));
 
 		struct rlimit libc_rlim = {};
 		if (getrlimit((int) res, &libc_rlim))
@@ -53,16 +52,11 @@
 		rlimit[1] = libc_rlim.rlim_max;
 
 		rc = syscall(__NR_setrlimit, res, rlimit);
-		int saved_errno = errno;
-		printf("setrlimit(%s, {rlim_cur=%s, rlim_max=%s})",
+		const char *errstr = sprintrc(rc);
+		printf("setrlimit(%s, {rlim_cur=%s, rlim_max=%s}) = %s\n",
 		       xlat->str,
-		       sprint_rlim(rlimit[0]), sprint_rlim(rlimit[1]));
-		if (rc) {
-			errno = saved_errno;
-			printf(" = %ld %s (%m)\n", rc, errno2name());
-		} else {
-			printf(" = 0\n");
-		}
+		       sprint_rlim(rlimit[0]), sprint_rlim(rlimit[1]),
+		       errstr);
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/setuid.c b/tests/setuid.c
index c9e97e0..df2e46b 100644
--- a/tests/setuid.c
+++ b/tests/setuid.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setuid
 
diff --git a/tests/setuid32.c b/tests/setuid32.c
index 9247cb2..c837d54 100644
--- a/tests/setuid32.c
+++ b/tests/setuid32.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_setuid32
 
diff --git a/tests/shmxt.c b/tests/shmxt.c
index 8e087f3..23cc7cc 100644
--- a/tests/shmxt.c
+++ b/tests/shmxt.c
@@ -21,11 +21,23 @@
 int
 main(void)
 {
+	static const int bogus_shmid = 0xfdb97531;
+	static const void * const bogus_shmaddr =
+		(void *) (unsigned long) 0xdec0ded1dec0ded2ULL;
+	static const int bogus_shmflg = 0xffffface;
+
+	long rc;
+
 	id = shmget(IPC_PRIVATE, 1, 0600);
 	if (id < 0)
 		perror_msg_and_skip("shmget");
 	atexit(cleanup);
 
+	rc = (long) shmat(bogus_shmid, bogus_shmaddr, bogus_shmflg);
+	printf("%s(%d, %p, SHM_REMAP|SHM_RDONLY|SHM_RND|%#x) = %s\n",
+	       SHMAT, bogus_shmid, bogus_shmaddr, bogus_shmflg & ~0x7000,
+	       sprintrc(rc));
+
 	shmat(id, NULL, SHM_REMAP);
 	printf("%s(%d, NULL, SHM_REMAP) = -1 %s (%m)\n",
 	       SHMAT, id, errno2name());
@@ -35,6 +47,9 @@
 		perror_msg_and_skip("shmat SHM_RDONLY");
 	printf("%s(%d, NULL, SHM_RDONLY) = %p\n", SHMAT, id, shmaddr);
 
+	rc = shmdt(NULL);
+	printf("shmdt(NULL) = %s\n", sprintrc(rc));
+
 	if (shmdt(shmaddr))
 		perror_msg_and_skip("shmdt");
 	printf("shmdt(%p) = 0\n", shmaddr);
diff --git a/tests/siginfo.c b/tests/siginfo.c
index 48cfaf3..2ecb13f 100644
--- a/tests/siginfo.c
+++ b/tests/siginfo.c
@@ -86,7 +86,8 @@
 		", si_pid=%d, si_uid=%u, si_status=%d"
 		", si_utime=%llu, si_stime=%llu} ---\n",
 		sinfo.si_pid, sinfo.si_uid, sinfo.si_status,
-		widen_to_ull(sinfo.si_utime), widen_to_ull(sinfo.si_stime));
+		zero_extend_signed_to_ull(sinfo.si_utime),
+		zero_extend_signed_to_ull(sinfo.si_stime));
 
 	int s;
 	assert(wait(&s) == pid);
@@ -116,7 +117,8 @@
 		", si_pid=%d, si_uid=%u, si_status=SIGUSR1"
 		", si_utime=%llu, si_stime=%llu} ---\n",
 		sinfo.si_pid, sinfo.si_uid,
-		widen_to_ull(sinfo.si_utime), widen_to_ull(sinfo.si_stime));
+		zero_extend_signed_to_ull(sinfo.si_utime),
+		zero_extend_signed_to_ull(sinfo.si_stime));
 
 	assert(wait(&s) == pid);
 	assert(WIFSIGNALED(s) && WTERMSIG(s) == SIGUSR1);
@@ -142,7 +144,8 @@
 		", si_pid=%d, si_uid=%u, si_status=SIGSTOP"
 		", si_utime=%llu, si_stime=%llu} ---\n",
 		sinfo.si_pid, sinfo.si_uid,
-		widen_to_ull(sinfo.si_utime), widen_to_ull(sinfo.si_stime));
+		zero_extend_signed_to_ull(sinfo.si_utime),
+		zero_extend_signed_to_ull(sinfo.si_stime));
 
 	assert(kill(pid, SIGCONT) == 0);
 
@@ -151,7 +154,8 @@
 		", si_pid=%d, si_uid=%u, si_status=SIGCONT"
 		", si_utime=%llu, si_stime=%llu} ---\n",
 		sinfo.si_pid, sinfo.si_uid,
-		widen_to_ull(sinfo.si_utime), widen_to_ull(sinfo.si_stime));
+		zero_extend_signed_to_ull(sinfo.si_utime),
+		zero_extend_signed_to_ull(sinfo.si_stime));
 
 	assert(write(1, "", 1) == 1);
 	(void) close(1);
@@ -161,7 +165,8 @@
 		", si_pid=%d, si_uid=%u, si_status=0"
 		", si_utime=%llu, si_stime=%llu} ---\n",
 		sinfo.si_pid, sinfo.si_uid,
-		widen_to_ull(sinfo.si_utime), widen_to_ull(sinfo.si_stime));
+		zero_extend_signed_to_ull(sinfo.si_utime),
+		zero_extend_signed_to_ull(sinfo.si_stime));
 
 	assert(wait(&s) == pid && s == 0);
 
diff --git a/tests/signalfd.expected b/tests/signalfd.expected
deleted file mode 100644
index 21937bc..0000000
--- a/tests/signalfd.expected
+++ /dev/null
@@ -1 +0,0 @@
-signalfd4\(-1, \[(USR2 CHLD|CHLD USR2)\], (4|8|16), SFD_CLOEXEC\|SFD_NONBLOCK\) += 0
diff --git a/tests/signalfd.test b/tests/signalfd.test
deleted file mode 100755
index dcbfe68..0000000
--- a/tests/signalfd.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check signalfd4 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -e signalfd4 $args
-match_grep
-
-exit 0
diff --git a/tests/signalfd.c b/tests/signalfd4.c
similarity index 64%
copy from tests/signalfd.c
copy to tests/signalfd4.c
index 7b1d6ce..47e49b5 100644
--- a/tests/signalfd.c
+++ b/tests/signalfd4.c
@@ -1,4 +1,6 @@
 /*
+ * Check decoding of signalfd4 syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
@@ -27,28 +29,58 @@
 
 #include "tests.h"
 #include <fcntl.h>
+#include <asm/unistd.h>
 
-#if defined HAVE_SYS_SIGNALFD_H && defined HAVE_SIGNALFD && defined O_CLOEXEC
+#if defined __NR_rt_sigprocmask \
+ && defined HAVE_SYS_SIGNALFD_H \
+ && defined HAVE_SIGNALFD \
+ && defined O_CLOEXEC
 
 # include <signal.h>
+# include <stdio.h>
 # include <unistd.h>
 # include <sys/signalfd.h>
 
+static unsigned int
+get_sigset_size(void)
+{
+	const unsigned int big_size = 1024 / 8;
+	unsigned int set_size;
+
+	for (set_size = big_size; set_size; set_size >>= 1) {
+		if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
+			     NULL, NULL, set_size))
+			break;
+	}
+
+	if (!set_size)
+		perror_msg_and_fail("rt_sigprocmask");
+
+	return set_size;
+}
+
 int
 main(void)
 {
+	const char *const sigs = SIGUSR2 < SIGCHLD ? "USR2 CHLD" : "CHLD USR2";
+	const unsigned int size = get_sigset_size();
+
 	sigset_t mask;
 	sigemptyset(&mask);
 	sigaddset(&mask, SIGUSR2);
 	sigaddset(&mask, SIGCHLD);
-	(void) close(0);
-	if (signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK))
-		perror_msg_and_skip("signalfd");
+
+	int fd = signalfd(-1, &mask, O_CLOEXEC | O_NONBLOCK);
+	printf("signalfd4(-1, [%s], %u, SFD_CLOEXEC|SFD_NONBLOCK) = %s\n",
+	       sigs, size, sprintrc(fd));
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask && HAVE_SYS_SIGNALFD_H"
+		    " && HAVE_SIGNALFD && O_CLOEXEC")
 
 #endif
diff --git a/tests/signalfd4.test b/tests/signalfd4.test
new file mode 100755
index 0000000..a615a5b
--- /dev/null
+++ b/tests/signalfd4.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of signalfd4 syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/socketcall.c b/tests/socketcall.c
index 5ccddc4..d2ec959 100644
--- a/tests/socketcall.c
+++ b/tests/socketcall.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_socketcall
 
diff --git a/tests/sockname.c b/tests/sockname.c
index 56a8a36..c5072ca 100644
--- a/tests/sockname.c
+++ b/tests/sockname.c
@@ -101,26 +101,22 @@
 
 	PREPARE_TEST_SYSCALL_INVOCATION;
 	rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr, 0 SUFFIX_ARGS);
-	printf("%s(%d%s, %p, NULL%s) = %d %s (%m)\n",
-	       TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr, SUFFIX_STR, rc,
-	       errno2name());
+	printf("%s(%d%s, %p, NULL%s) = %s\n",
+	       TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr, SUFFIX_STR,
+	       sprintrc(rc));
 
 	PREPARE_TEST_SYSCALL_INVOCATION;
 	rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, 0, 0 SUFFIX_ARGS);
-	if (rc < 0)
-		printf("%s(%d%s, NULL, NULL%s) = %d %s (%m)\n",
-		       TEST_SYSCALL_STR, fd, PREFIX_F_STR, SUFFIX_STR, rc,
-		       errno2name());
-	else
-		printf("%s(%d%s, NULL, NULL%s) = %d\n",
-		       TEST_SYSCALL_STR, fd, PREFIX_S_STR, SUFFIX_STR, rc);
+	printf("%s(%d%s, NULL, NULL%s) = %s\n",
+	       TEST_SYSCALL_STR, fd, rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
+	       SUFFIX_STR, sprintrc(rc));
 
 	PREPARE_TEST_SYSCALL_INVOCATION;
 	rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
 			       plen + 1 SUFFIX_ARGS);
-	printf("%s(%d%s, %p, %p%s) = %d %s (%m)\n",
+	printf("%s(%d%s, %p, %p%s) = %s\n",
 	       TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
-	       plen + 1, SUFFIX_STR, rc, errno2name());
+	       plen + 1, SUFFIX_STR, sprintrc(rc));
 
 	const size_t offsetof_sun_path = offsetof(struct sockaddr_un, sun_path);
 	*plen = offsetof_sun_path;
@@ -154,7 +150,7 @@
 	PREPARE_TEST_SYSCALL_INVOCATION;
 	rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
 			       plen SUFFIX_ARGS);
-	printf("%s(%d%s, %p, [%d]%s) = %d %s (%m)\n",
+	printf("%s(%d%s, %p, [%d]%s) = %s\n",
 	       TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
-	       *plen, SUFFIX_STR, rc, errno2name());
+	       *plen, SUFFIX_STR, sprintrc(rc));
 }
diff --git a/tests/splice.c b/tests/splice.c
index 433cf7f..5a89910 100644
--- a/tests/splice.c
+++ b/tests/splice.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_splice
 
diff --git a/tests/sprintrc.c b/tests/sprintrc.c
new file mode 100644
index 0000000..a573a27
--- /dev/null
+++ b/tests/sprintrc.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2016 Eugene Syromiatnikov <evgsyr@gmail.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+enum sprintrc_fmt {
+	SPRINTRC_FMT_RAW,
+	SPRINTRC_FMT_GREP,
+};
+
+/**
+ * Provides pointer to static string buffer with printed return code in format
+ * used by strace - with errno and error message.
+ *
+ * @param rc  Return code.
+ * @param fmt Output format. Currently, raw (used for diff matching) and grep
+ *            (for extended POSIX regex-based pattern matching) formats are
+ *            supported.
+ * @return    Pointer to (statically allocated) buffer containing decimal
+ *            representation of return code and errno/error message in case @rc
+ *            is equal to -1.
+ */
+static inline const char *
+sprintrc_ex(long rc, enum sprintrc_fmt fmt)
+{
+	static const char *formats[] = {
+		[SPRINTRC_FMT_RAW] = "-1 %s (%m)",
+		[SPRINTRC_FMT_GREP] = "-1 %s \\(%m\\)",
+	};
+	static char buf[4096];
+
+	if (fmt >= ARRAY_SIZE(formats))
+		perror_msg_and_fail("sprintrc_ex: incorrect format provided");
+
+	if (rc == 0)
+		return "0";
+
+	int ret = (rc == -1)
+		? snprintf(buf, sizeof(buf), formats[fmt], errno2name())
+		: snprintf(buf, sizeof(buf), "%ld", rc);
+
+	if (ret < 0)
+		perror_msg_and_fail("snprintf");
+	if ((size_t) ret >= sizeof(buf))
+		error_msg_and_fail("snprintf overflow: got %d, expected"
+				   " no more than %zu", ret, sizeof(buf));
+
+	return buf;
+}
+
+const char *
+sprintrc(long rc)
+{
+	return sprintrc_ex(rc, SPRINTRC_FMT_RAW);
+}
+
+const char *
+sprintrc_grep(long rc)
+{
+	return sprintrc_ex(rc, SPRINTRC_FMT_GREP);
+}
diff --git a/tests/stat.c b/tests/stat.c
index f64ff30..df6cab1 100644
--- a/tests/stat.c
+++ b/tests/stat.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_stat
 
diff --git a/tests/stat64.c b/tests/stat64.c
index c164189..4c2101b 100644
--- a/tests/stat64.c
+++ b/tests/stat64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_stat64
 
@@ -34,6 +34,7 @@
 # define TEST_SYSCALL_STR "stat64"
 # define STRUCT_STAT struct stat64
 # define STRUCT_STAT_STR "struct stat64"
+# define STRUCT_STAT_IS_STAT64 1
 # define SAMPLE_SIZE ((libc_off_t) 43147718418)
 # include "lstatx.c"
 
diff --git a/tests/statfs.c b/tests/statfs.c
index 5a87afc..6032a66 100644
--- a/tests/statfs.c
+++ b/tests/statfs.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_statfs
 
diff --git a/tests/statfs64.c b/tests/statfs64.c
index b85dce2..f46e767 100644
--- a/tests/statfs64.c
+++ b/tests/statfs64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_statfs64
 
diff --git a/tests/strace-S.test b/tests/strace-S.test
index 44c15cc..3ea315c 100755
--- a/tests/strace-S.test
+++ b/tests/strace-S.test
@@ -14,7 +14,7 @@
 	sedexpr="$1"; shift
 
 	run_strace -c -w -S "$sortby" ./readv > /dev/null
-	sed -ne "$sedexpr" < "$LOG" > "$OUT"
+	sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
 	[ -s "$OUT" ] ||
 		fail_ "$STRACE $args output mismatch"
@@ -25,8 +25,8 @@
 	}
 }
 
-c='[[:space:]]\+\([^[:space:]]\+\)'
-test_c calls '-n -r' '/^[[:space:]]\+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
-test_c name '' '/^[[:space:]]\+[0-9]/ s/^'"$c$c$c$c"'\([[:space:]]\+[0-9]\+\)\?'"$c"'$/\6/p'
+c='[[:space:]]+([^[:space:]]+)'
+test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
+test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
 
 rm -f "$OUT"
diff --git a/tests/strace-V.test b/tests/strace-V.test
index 91093ac..d441371 100755
--- a/tests/strace-V.test
+++ b/tests/strace-V.test
@@ -8,7 +8,7 @@
 
 getval()
 {
-	sed -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"\([^"]*\)".*/\1/p' ../config.h
+	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' ../config.h
 }
 
 printf "%s -- version %s\n" "$(getval PACKAGE_NAME)" "$(getval VERSION)" > "$EXP"
diff --git a/tests/strace-k.test b/tests/strace-k.test
index 5919bac..d5e8ed2 100755
--- a/tests/strace-k.test
+++ b/tests/strace-k.test
@@ -41,7 +41,7 @@
 run_strace -e getpid -k $args
 
 expected='getpid f3 f2 f1 f0 main '
-result=$(sed -n '1,/(main+0x[a-f0-9]\+) .*/ s/^.*(\([^+]\+\)+0x[a-f0-9]\+) .*/\1/p' "$LOG" |
+result=$(sed -r -n '1,/\(main\+0x[a-f0-9]+\) .*/ s/^.*\(([^+]+)\+0x[a-f0-9]+\) .*/\1/p' "$LOG" |
 	tr '\n' ' ')
 
 test "$result" = "$expected" || {
diff --git a/tests/swap.c b/tests/swap.c
index 065af4d..ed8cec8 100644
--- a/tests/swap.c
+++ b/tests/swap.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_swapon && defined __NR_swapoff
 
diff --git a/tests/symlink.c b/tests/symlink.c
index 44c5655..72cb490 100644
--- a/tests/symlink.c
+++ b/tests/symlink.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_symlink
 
diff --git a/tests/symlinkat.c b/tests/symlinkat.c
index 3dfdd80..d0116d0 100644
--- a/tests/symlinkat.c
+++ b/tests/symlinkat.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_symlinkat
 
diff --git a/tests/sync.c b/tests/sync.c
index 132a6f2..e6e7ce3 100644
--- a/tests/sync.c
+++ b/tests/sync.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_sync
 
diff --git a/tests/sync_file_range.c b/tests/sync_file_range.c
index 9426e3c..aadef68 100644
--- a/tests/sync_file_range.c
+++ b/tests/sync_file_range.c
@@ -29,7 +29,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined HAVE_SYNC_FILE_RANGE && defined __NR_sync_file_range
 
diff --git a/tests/sync_file_range2.c b/tests/sync_file_range2.c
index d19cf25..6ce7db2 100644
--- a/tests/sync_file_range2.c
+++ b/tests/sync_file_range2.c
@@ -29,7 +29,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined HAVE_SYNC_FILE_RANGE && defined  __NR_sync_file_range2
 
diff --git a/tests/syslog.c b/tests/syslog.c
index 8c68298..d4d4a7b 100644
--- a/tests/syslog.c
+++ b/tests/syslog.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_syslog
 
diff --git a/tests/tee.c b/tests/tee.c
index f36f92a..eb562c7 100644
--- a/tests/tee.c
+++ b/tests/tee.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_tee
 
diff --git a/tests/tests.h b/tests/tests.h
index e0bf228..f3ddc85 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -25,8 +25,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef TESTS_H_
-# define TESTS_H_
+#ifndef STRACE_TESTS_H
+#define STRACE_TESTS_H
 
 # ifdef HAVE_CONFIG_H
 #  include "config.h"
@@ -35,6 +35,11 @@
 # include <sys/types.h>
 # include "gcc_compat.h"
 
+/* Tests of "strace -v" are expected to define VERBOSE to 1. */
+#ifndef VERBOSE
+# define VERBOSE 0
+#endif
+
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
@@ -99,6 +104,11 @@
 /* Translate signal number to its name. */
 const char *signal2name(int);
 
+/* Print return code and, in case return code is -1, errno information. */
+const char *sprintrc(long rc);
+/* sprintrc variant suitable for usage as part of grep pattern. */
+const char *sprintrc_grep(long rc);
+
 struct xlat;
 
 /* Print flags in symbolic form according to xlat table. */
@@ -120,14 +130,22 @@
 # define ARRAY_SIZE(arg) ((unsigned int) (sizeof(arg) / sizeof((arg)[0])))
 # define LENGTH_OF(arg) ((unsigned int) sizeof(arg) - 1)
 
-/*
- * Widen without sign-extension a signed integer type to unsigned long long.
- */
-#define widen_to_ull(v) \
-	(sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
+/* Zero-extend a signed integer type to unsigned long long. */
+#define zero_extend_signed_to_ull(v) \
+	(sizeof(v) == sizeof(char) ? (unsigned long long) (unsigned char) (v) : \
+	 sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
+	 sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
 	 sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
 	 (unsigned long long) (v))
 
+/* Sign-extend an unsigned integer type to long long. */
+#define sign_extend_unsigned_to_ll(v) \
+	(sizeof(v) == sizeof(char) ? (long long) (char) (v) : \
+	 sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
+	 sizeof(v) == sizeof(int) ? (long long) (int) (v) : \
+	 sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
+	 (long long) (v))
+
 # define SKIP_MAIN_UNDEFINED(arg) \
 	int main(void) { error_msg_and_skip("undefined: %s", arg); }
 
@@ -151,4 +169,4 @@
 # define PRI__u64 PRI__64"u"
 # define PRI__x64 PRI__64"x"
 
-#endif
+#endif /* !STRACE_TESTS_H */
diff --git a/tests/time.c b/tests/time.c
index 041b011..4a5cde9 100644
--- a/tests/time.c
+++ b/tests/time.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_time
 
diff --git a/tests/timer_create.c b/tests/timer_create.c
index ff924d3..6f98f36 100644
--- a/tests/timer_create.c
+++ b/tests/timer_create.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_timer_create
 
diff --git a/tests/timer_xettime.c b/tests/timer_xettime.c
index 7c691c6..877f717 100644
--- a/tests/timer_xettime.c
+++ b/tests/timer_xettime.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_timer_create \
  && defined __NR_timer_gettime \
@@ -59,6 +59,10 @@
 		struct itimerspec its;
 		uint32_t pad[4];
 	} old = {
+		.its = {
+			.it_interval = { 0xdeface5, 0xdeface6 },
+			.it_value = { 0xdeface7, 0xdeface8 }
+		},
 		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
 	}, new = {
 		.its = {
diff --git a/tests/timerfd_xettime.c b/tests/timerfd_xettime.c
index f97c1db..2742ec2 100644
--- a/tests/timerfd_xettime.c
+++ b/tests/timerfd_xettime.c
@@ -27,7 +27,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_timerfd_create \
  && defined __NR_timerfd_gettime \
@@ -51,6 +51,10 @@
 		struct itimerspec its;
 		uint32_t pad[4];
 	} old = {
+		.its = {
+			.it_interval = { 0xdeface5, 0xdeface6 },
+			.it_value = { 0xdeface7, 0xdeface8 }
+		},
 		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
 	}, new = {
 		.its = {
diff --git a/tests/times-fail.c b/tests/times-fail.c
index 5f5277c..cb69bd4 100644
--- a/tests/times-fail.c
+++ b/tests/times-fail.c
@@ -2,7 +2,7 @@
 #include <assert.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 int
 main (void)
diff --git a/tests/times.c b/tests/times.c
index 6c76dbc..18b209b 100644
--- a/tests/times.c
+++ b/tests/times.c
@@ -38,7 +38,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <sys/times.h>
 #include <sys/wait.h>
 
diff --git a/tests/truncate.c b/tests/truncate.c
index c3ad2ba..3f16aef 100644
--- a/tests/truncate.c
+++ b/tests/truncate.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_truncate
 
diff --git a/tests/truncate64.c b/tests/truncate64.c
index c973c45..c4a524d 100644
--- a/tests/truncate64.c
+++ b/tests/truncate64.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_truncate64
 
diff --git a/tests/ugetrlimit.c b/tests/ugetrlimit.c
index dc24bb8..a99e496 100644
--- a/tests/ugetrlimit.c
+++ b/tests/ugetrlimit.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_ugetrlimit
 
diff --git a/tests/umask.c b/tests/umask.c
index 2dcea28..86903a9 100644
--- a/tests/umask.c
+++ b/tests/umask.c
@@ -1,11 +1,23 @@
 #include <stdio.h>
 #include <sys/stat.h>
 
+void
+test_umask(const mode_t mode)
+{
+	mode_t rc = umask(0xffff0000 | mode);
+	printf("umask(%#03ho) = %#03o\n", (unsigned short) mode, rc);
+}
+
 int
 main(void)
 {
-	mode_t rc = umask(044);
-	printf("umask(%#o) = %#o\n", 044, rc);
+	test_umask(0);
+	test_umask(06);
+	test_umask(026);
+	test_umask(0126);
+	test_umask(07777);
+	test_umask(0107777);
+	test_umask(-1);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/umode_t.c b/tests/umode_t.c
new file mode 100644
index 0000000..7ab27dc
--- /dev/null
+++ b/tests/umode_t.c
@@ -0,0 +1,78 @@
+/*
+ * Check decoding of umode_t type syscall arguments.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+#ifndef TEST_SYSCALL_PREFIX_ARGS
+# define TEST_SYSCALL_PREFIX_ARGS
+#endif
+#ifndef TEST_SYSCALL_PREFIX_STR
+# define TEST_SYSCALL_PREFIX_STR ""
+#endif
+
+static const char sample[] = TEST_SYSCALL_STR;
+
+static void
+test_syscall(unsigned short mode)
+{
+	unsigned long lmode = (unsigned long) 0xffffffffffff0000 | mode;
+	long rc = syscall(TEST_SYSCALL_NR, TEST_SYSCALL_PREFIX_ARGS
+			  sample, lmode);
+
+	if (mode <= 07)
+		printf("%s(%s\"%s\", 00%d) = %ld %s (%m)\n",
+		       sample, TEST_SYSCALL_PREFIX_STR,
+		       sample, (int) mode, rc, errno2name());
+	else
+		printf("%s(%s\"%s\", %#03ho) = %ld %s (%m)\n",
+		       sample, TEST_SYSCALL_PREFIX_STR,
+		       sample, mode, rc, errno2name());
+}
+
+int
+main(void)
+{
+	test_syscall(0);
+	test_syscall(0xffff);
+	test_syscall(06);
+	test_syscall(060);
+	test_syscall(0600);
+	test_syscall(024);
+	test_syscall(S_IFREG);
+	test_syscall(S_IFDIR | 06);
+	test_syscall(S_IFLNK | 060);
+	test_syscall(S_IFIFO | 0600);
+	test_syscall(S_IFCHR | 024);
+	test_syscall((0xffff & ~S_IFMT) | S_IFBLK);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/umount.c b/tests/umount.c
index cc382fe..eda7ae5 100644
--- a/tests/umount.c
+++ b/tests/umount.c
@@ -29,7 +29,7 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 #include <unistd.h>
 
 #ifdef __NR_oldumount
diff --git a/tests/umount2.c b/tests/umount2.c
index 45ed1a4..1a6d845 100644
--- a/tests/umount2.c
+++ b/tests/umount2.c
@@ -30,7 +30,7 @@
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_umount2
 # define TEST_SYSCALL_STR "umount2"
diff --git a/tests/uname.c b/tests/uname.c
index 571cf9b..cd6f51c 100644
--- a/tests/uname.c
+++ b/tests/uname.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_uname
 
diff --git a/tests/unix-pair-send-recv.c b/tests/unix-pair-send-recv.c
index 9540239..d4ac0d2 100644
--- a/tests/unix-pair-send-recv.c
+++ b/tests/unix-pair-send-recv.c
@@ -32,7 +32,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifndef __NR_send
 # define __NR_send -1
diff --git a/tests/unlink.c b/tests/unlink.c
index f5a1a1a..bbb1de1 100644
--- a/tests/unlink.c
+++ b/tests/unlink.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_unlink
 
diff --git a/tests/unlinkat.c b/tests/unlinkat.c
index 29eeb19..0b69b03 100644
--- a/tests/unlinkat.c
+++ b/tests/unlinkat.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_unlinkat
 
diff --git a/tests/userfaultfd.c b/tests/userfaultfd.c
index 5747a2a..254b84e 100644
--- a/tests/userfaultfd.c
+++ b/tests/userfaultfd.c
@@ -27,7 +27,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_userfaultfd && defined O_CLOEXEC
 
diff --git a/tests/utime.c b/tests/utime.c
index 2286217..ef40d1b 100644
--- a/tests/utime.c
+++ b/tests/utime.c
@@ -28,7 +28,6 @@
  */
 
 #include "tests.h"
-#include <assert.h>
 #include <time.h>
 #include <utime.h>
 #include <errno.h>
@@ -45,23 +44,22 @@
 int
 main(void)
 {
-	utime("", NULL);
-	printf("utime(\"\", NULL) = -1 ENOENT (%m)\n");
+	int rc = utime("", NULL);
+	printf("utime(\"\", NULL) = %s\n", sprintrc(rc));
 
 	const time_t t = time(NULL);
 	const struct tm * const p = localtime(&t);
 	const struct utimbuf u = { .actime = t, .modtime = t };
 	const struct utimbuf const *tail_u = tail_memdup(&u, sizeof(u));
 
+	rc = utime("utime\nfilename", tail_u);
+	const char *errstr = sprintrc(rc);
 	printf("utime(\"utime\\nfilename\", [");
 	print_tm(p);
 	printf(", ");
 	print_tm(p);
-	printf("]) = -1 ENOENT ");
-	assert(utime("utime\nfilename", tail_u) == -1);
-	if (ENOENT != errno)
-		perror_msg_and_skip("utime");
-	printf("(%m)\n");
+	printf("]) = %s\n", errstr);
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests/utimes.c b/tests/utimes.c
index e9fe931..401d18a 100644
--- a/tests/utimes.c
+++ b/tests/utimes.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_utimes
 
diff --git a/tests/vhangup.c b/tests/vhangup.c
index 468f334..e7ddabb 100644
--- a/tests/vhangup.c
+++ b/tests/vhangup.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_vhangup
 
@@ -21,10 +21,7 @@
 	 * The system call, however, returns 0 iff the calling process
 	 * has CAP_SYS_TTY_CONFIG capability.
 	 */
-	if (rc)
-		printf("vhangup() = %ld %s (%m)\n", rc, errno2name());
-	else
-		puts("vhangup() = 0");
+	printf("vhangup() = %s\n", sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/vmsplice.c b/tests/vmsplice.c
index 06c0694..f29962e 100644
--- a/tests/vmsplice.c
+++ b/tests/vmsplice.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_vmsplice
 
diff --git a/tests/wait4-v.c b/tests/wait4-v.c
index 95a3c8b..8c0c9f5 100644
--- a/tests/wait4-v.c
+++ b/tests/wait4-v.c
@@ -1,3 +1,3 @@
 /* This file is part of wait4-v strace test. */
-#define VERBOSE_RUSAGE
+#define VERBOSE 1
 #include "wait4.c"
diff --git a/tests/wait4.c b/tests/wait4.c
index 981818c..2d316aa 100644
--- a/tests/wait4.c
+++ b/tests/wait4.c
@@ -42,7 +42,7 @@
 	snprintf(buf, sizeof(buf),
 		 "{ru_utime={%lu, %lu}"
 		 ", ru_stime={%lu, %lu}"
-#ifdef VERBOSE_RUSAGE
+#if VERBOSE
 		 ", ru_maxrss=%lu"
 		 ", ru_ixrss=%lu"
 		 ", ru_idrss=%lu"
@@ -64,7 +64,7 @@
 		 , (long) ru->ru_utime.tv_usec
 		 , (long) ru->ru_stime.tv_sec
 		 , (long) ru->ru_stime.tv_usec
-#ifdef VERBOSE_RUSAGE
+#if VERBOSE
 		 , (long) ru->ru_maxrss
 		 , (long) ru->ru_ixrss
 		 , (long) ru->ru_idrss
diff --git a/tests/waitid-v.c b/tests/waitid-v.c
index 06171ae..15a8010 100644
--- a/tests/waitid-v.c
+++ b/tests/waitid-v.c
@@ -1,3 +1,3 @@
 /* This file is part of waitid-v strace test. */
-#define VERBOSE_RUSAGE
+#define VERBOSE 1
 #include "waitid.c"
diff --git a/tests/waitid.c b/tests/waitid.c
index bd7e8ef..b379f1a 100644
--- a/tests/waitid.c
+++ b/tests/waitid.c
@@ -35,7 +35,7 @@
 #include <unistd.h>
 #include <sys/wait.h>
 #include <sys/resource.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 static const char *
 sprint_rusage(const struct rusage *const ru)
@@ -44,7 +44,7 @@
 	snprintf(buf, sizeof(buf),
 		 "{ru_utime={%llu, %llu}"
 		 ", ru_stime={%llu, %llu}"
-#ifdef VERBOSE_RUSAGE
+#if VERBOSE
 		 ", ru_maxrss=%llu"
 		 ", ru_ixrss=%llu"
 		 ", ru_idrss=%llu"
@@ -62,25 +62,25 @@
 #else
 		 ", ...}"
 #endif
-		 , widen_to_ull(ru->ru_utime.tv_sec)
-		 , widen_to_ull(ru->ru_utime.tv_usec)
-		 , widen_to_ull(ru->ru_stime.tv_sec)
-		 , widen_to_ull(ru->ru_stime.tv_usec)
-#ifdef VERBOSE_RUSAGE
-		 , widen_to_ull(ru->ru_maxrss)
-		 , widen_to_ull(ru->ru_ixrss)
-		 , widen_to_ull(ru->ru_idrss)
-		 , widen_to_ull(ru->ru_isrss)
-		 , widen_to_ull(ru->ru_minflt)
-		 , widen_to_ull(ru->ru_majflt)
-		 , widen_to_ull(ru->ru_nswap)
-		 , widen_to_ull(ru->ru_inblock)
-		 , widen_to_ull(ru->ru_oublock)
-		 , widen_to_ull(ru->ru_msgsnd)
-		 , widen_to_ull(ru->ru_msgrcv)
-		 , widen_to_ull(ru->ru_nsignals)
-		 , widen_to_ull(ru->ru_nvcsw)
-		 , widen_to_ull(ru->ru_nivcsw)
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_sec)
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_sec)
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
+#if VERBOSE
+		 , zero_extend_signed_to_ull(ru->ru_maxrss)
+		 , zero_extend_signed_to_ull(ru->ru_ixrss)
+		 , zero_extend_signed_to_ull(ru->ru_idrss)
+		 , zero_extend_signed_to_ull(ru->ru_isrss)
+		 , zero_extend_signed_to_ull(ru->ru_minflt)
+		 , zero_extend_signed_to_ull(ru->ru_majflt)
+		 , zero_extend_signed_to_ull(ru->ru_nswap)
+		 , zero_extend_signed_to_ull(ru->ru_inblock)
+		 , zero_extend_signed_to_ull(ru->ru_oublock)
+		 , zero_extend_signed_to_ull(ru->ru_msgsnd)
+		 , zero_extend_signed_to_ull(ru->ru_msgrcv)
+		 , zero_extend_signed_to_ull(ru->ru_nsignals)
+		 , zero_extend_signed_to_ull(ru->ru_nvcsw)
+		 , zero_extend_signed_to_ull(ru->ru_nivcsw)
 #endif
 		 );
 	return buf;
@@ -130,8 +130,8 @@
 		 si->si_pid,
 		 si->si_uid,
 		 status_text,
-		 widen_to_ull(si->si_utime),
-		 widen_to_ull(si->si_stime));
+		 zero_extend_signed_to_ull(si->si_utime),
+		 zero_extend_signed_to_ull(si->si_stime));
 	return buf;
 }
 
diff --git a/tests/waitpid.c b/tests/waitpid.c
index c6f0ad4..dbcdf87 100644
--- a/tests/waitpid.c
+++ b/tests/waitpid.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #ifdef __NR_waitpid
 
diff --git a/tests/xattr.c b/tests/xattr.c
index e72436c..877552f 100644
--- a/tests/xattr.c
+++ b/tests/xattr.c
@@ -29,7 +29,6 @@
 
 #ifdef HAVE_SYS_XATTR_H
 
-# include <assert.h>
 # include <stdio.h>
 # include <sys/xattr.h>
 
@@ -48,94 +47,83 @@
 	char *const efault = tail_alloc(1) + 1;
 	const char *const value = tail_memdup(c_value, sizeof(c_value) - 1);
 	char *const big = tail_alloc(XATTR_SIZE_MAX + 1);
+	long rc;
+	const char *errstr;
 
-	assert(fsetxattr(-1, 0, 0, 0, XATTR_CREATE) == -1);
-	printf("fsetxattr(-1, NULL, NULL, 0, XATTR_CREATE) = -1 %s (%m)\n",
-	       errno2name());
+	rc = fsetxattr(-1, 0, 0, 0, XATTR_CREATE);
+	printf("fsetxattr(-1, NULL, NULL, 0, XATTR_CREATE) = %s\n",
+	       sprintrc(rc));
 
-	assert(fsetxattr(-1, 0, z_value, 0, XATTR_CREATE) == -1);
-	printf("fsetxattr(-1, NULL, \"\", 0, XATTR_CREATE) = -1 %s (%m)\n",
-	       errno2name());
+	rc = fsetxattr(-1, 0, z_value, 0, XATTR_CREATE);
+	printf("fsetxattr(-1, NULL, \"\", 0, XATTR_CREATE) = %s\n",
+	       sprintrc(rc));
 
-	assert(fsetxattr(-1, name, big, XATTR_SIZE_MAX + 1, XATTR_CREATE) == -1);
-	printf("fsetxattr(-1, \"%s\", %p, %u, XATTR_CREATE)"
-	       " = -1 %s (%m)\n",
-	       name, big, XATTR_SIZE_MAX + 1, errno2name());
+	rc = fsetxattr(-1, name, big, XATTR_SIZE_MAX + 1, XATTR_CREATE);
+	printf("fsetxattr(-1, \"%s\", %p, %u, XATTR_CREATE) = %s\n",
+	       name, big, XATTR_SIZE_MAX + 1, sprintrc(rc));
 
-	assert(fsetxattr(-1, name, value, sizeof(c_value), XATTR_CREATE) == -1);
-	printf("fsetxattr(-1, \"%s\", %p, %u, XATTR_CREATE)"
-	       " = -1 %s (%m)\n",
-	       name, value, (unsigned) sizeof(c_value), errno2name());
+	rc = fsetxattr(-1, name, value, sizeof(c_value), XATTR_CREATE);
+	printf("fsetxattr(-1, \"%s\", %p, %u, XATTR_CREATE) = %s\n",
+	       name, value, (unsigned) sizeof(c_value), sprintrc(rc));
 
-	assert(fsetxattr(-1, name, z_value, sizeof(c_value), XATTR_REPLACE) == -1);
-	printf("fsetxattr(-1, \"%s\", \"%s\", %u, XATTR_REPLACE)"
-	       " = -1 %s (%m)\n",
-	       name, q_value, (unsigned) sizeof(c_value), errno2name());
+	rc = fsetxattr(-1, name, z_value, sizeof(c_value), XATTR_REPLACE);
+	printf("fsetxattr(-1, \"%s\", \"%s\", %u, XATTR_REPLACE) = %s\n",
+	       name, q_value, (unsigned) sizeof(c_value), sprintrc(rc));
 
-	assert(fsetxattr(-1, name, value, sizeof(c_value) - 1, XATTR_CREATE|XATTR_REPLACE) == -1);
+	rc = fsetxattr(-1, name, value, sizeof(c_value) - 1, XATTR_CREATE|XATTR_REPLACE);
 	printf("fsetxattr(-1, \"%s\", \"%s\", %u, XATTR_CREATE|XATTR_REPLACE)"
-	       " = -1 %s (%m)\n",
-	       name, q_value, (unsigned) sizeof(c_value) - 1, errno2name());
+	       " = %s\n",
+	       name, q_value, (unsigned) sizeof(c_value) - 1, sprintrc(rc));
 
-	assert(setxattr(".", name, z_value, sizeof(c_value), XATTR_CREATE) == -1);
-	printf("setxattr(\".\", \"%s\", \"%s\", %u, XATTR_CREATE)"
-	       " = -1 %s (%m)\n",
-	       name, q_value, (unsigned) sizeof(c_value), errno2name());
+	rc = setxattr(".", name, z_value, sizeof(c_value), XATTR_CREATE);
+	printf("setxattr(\".\", \"%s\", \"%s\", %u, XATTR_CREATE) = %s\n",
+	       name, q_value, (unsigned) sizeof(c_value), sprintrc(rc));
 
-	assert(lsetxattr(".", name, value, sizeof(c_value) - 1, XATTR_CREATE) == -1);
-	printf("lsetxattr(\".\", \"%s\", \"%s\", %u, XATTR_CREATE)"
-	       " = -1 %s (%m)\n",
-	       name, q_value, (unsigned) sizeof(c_value) - 1, errno2name());
+	rc = lsetxattr(".", name, value, sizeof(c_value) - 1, XATTR_CREATE);
+	printf("lsetxattr(\".\", \"%s\", \"%s\", %u, XATTR_CREATE) = %s\n",
+	       name, q_value, (unsigned) sizeof(c_value) - 1, sprintrc(rc));
 
-	assert(fgetxattr(-1, name, efault, 4) == -1);
-	printf("fgetxattr(-1, \"%s\", %p, 4) = -1 %s (%m)\n",
-	       name, efault, errno2name());
+	rc = fgetxattr(-1, name, efault, 4);
+	printf("fgetxattr(-1, \"%s\", %p, 4) = %s\n",
+	       name, efault, sprintrc(rc));
 
-	assert(getxattr(".", name, big, XATTR_SIZE_MAX + 1) == -1);
-	printf("getxattr(\".\", \"%s\", %p, %u) = -1 %s (%m)\n",
-	       name, big, XATTR_SIZE_MAX + 1, errno2name());
+	rc = getxattr(".", name, big, XATTR_SIZE_MAX + 1);
+	printf("getxattr(\".\", \"%s\", %p, %u) = %s\n",
+	       name, big, XATTR_SIZE_MAX + 1, sprintrc(rc));
 
-	assert(lgetxattr(".", name, big + 1, XATTR_SIZE_MAX) == -1);
-	printf("lgetxattr(\".\", \"%s\", %p, %u) = -1 %s (%m)\n",
-	       name, big + 1, XATTR_SIZE_MAX, errno2name());
+	rc = lgetxattr(".", name, big + 1, XATTR_SIZE_MAX);
+	printf("lgetxattr(\".\", \"%s\", %p, %u) = %s\n",
+	       name, big + 1, XATTR_SIZE_MAX, sprintrc(rc));
 
-	assert(flistxattr(-1, efault, 4) == -1);
-	printf("flistxattr(-1, %p, 4) = -1 %s (%m)\n",
-	       efault, errno2name());
+	rc = flistxattr(-1, efault, 4);
+	printf("flistxattr(-1, %p, 4) = %s\n", efault, sprintrc(rc));
 
-	assert(llistxattr("", efault + 1, 4) == -1);
-	printf("llistxattr(\"\", %p, 4) = -1 %s (%m)\n",
-	       efault + 1, errno2name());
+	rc = llistxattr("", efault + 1, 4);
+	printf("llistxattr(\"\", %p, 4) = %s\n", efault + 1, sprintrc(rc));
 
-	ssize_t rc = listxattr(".", big, 0);
-	if (rc < 0)
-		printf("listxattr(\".\", %p, 0) = -1 %s (%m)\n",
-		       big, errno2name());
-	else
-		printf("listxattr(\".\", %p, 0) = %ld\n",
-		       big, (long) rc);
+	rc = listxattr(".", big, 0);
+	printf("listxattr(\".\", %p, 0) = %s\n", big, sprintrc(rc));
 
 	rc = listxattr(".", big, XATTR_SIZE_MAX + 1);
+	errstr = sprintrc(rc);
+	printf("listxattr(\".\", ");
 	if (rc < 0)
-		printf("listxattr(\".\", %p, %u) = -1 %s (%m)\n",
-		       big, XATTR_SIZE_MAX + 1, errno2name());
+		printf("%p", big);
 	else {
-		printf("listxattr(\".\", \"");
+		putchar('"');
 		print_quoted_memory(big, rc);
-		printf("\", %u) = %ld\n", XATTR_SIZE_MAX + 1, (long) rc);
+		putchar('"');
 	}
+	printf(", %u) = %s\n", XATTR_SIZE_MAX + 1, errstr);
 
-	assert(fremovexattr(-1, name) == -1);
-	printf("fremovexattr(-1, \"%s\") = -1 %s (%m)\n",
-	       name, errno2name());
+	rc = fremovexattr(-1, name);
+	printf("fremovexattr(-1, \"%s\") = %s\n", name, sprintrc(rc));
 
-	assert(removexattr(".", name) == -1);
-	printf("removexattr(\".\", \"%s\") = -1 %s (%m)\n",
-	       name, errno2name());
+	rc = removexattr(".", name);
+	printf("removexattr(\".\", \"%s\") = %s\n", name, sprintrc(rc));
 
-	assert(lremovexattr(".", name) == -1);
-	printf("lremovexattr(\".\", \"%s\") = -1 %s (%m)\n",
-	       name, errno2name());
+	rc = lremovexattr(".", name);
+	printf("lremovexattr(\".\", \"%s\") = %s\n", name, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/xchownx.c b/tests/xchownx.c
index b065675..fe58283 100644
--- a/tests/xchownx.c
+++ b/tests/xchownx.c
@@ -27,7 +27,6 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -141,29 +140,11 @@
 
 		const long rc = syscall(SYSCALL_NR, SYSCALL_ARG1,
 					tests[i].uid, tests[i].gid);
-		int saved_errno = errno;
-		if (rc != expected) {
-			if (!i && ENOSYS == errno) {
-				printf("%s(" FMT_ARG1 ", %u, %u)"
-				       " = -1 ENOSYS (%m)\n",
-				       SYSCALL_NAME, SYSCALL_ARG1, uid, gid);
-				break;
-			}
-			perror_msg_and_fail("%s(" FMT_ARG1
-					    ", %#lx, %#lx) != %ld",
-					    SYSCALL_NAME, SYSCALL_ARG1,
-					    tests[i].uid, tests[i].gid,
-					    expected);
-		}
-
+		const char *errstr = sprintrc(rc);
 		printf("%s(" FMT_ARG1, SYSCALL_NAME, SYSCALL_ARG1);
 		print_int(unum);
 		print_int(gnum);
-		errno = saved_errno;
-		if (expected)
-			printf(") = %ld %s (%m)\n", expected, errno2name());
-		else
-			printf(") = 0\n");
+		printf(") = %s\n", errstr);
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/xet_robust_list.c b/tests/xet_robust_list.c
index eef31dc..f834930 100644
--- a/tests/xet_robust_list.c
+++ b/tests/xet_robust_list.c
@@ -26,7 +26,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_get_robust_list && defined __NR_set_robust_list
 
diff --git a/tests/xetpgid.c b/tests/xetpgid.c
index 6ce79c1..d4d5545 100644
--- a/tests/xetpgid.c
+++ b/tests/xetpgid.c
@@ -28,7 +28,7 @@
  */
 
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_getpgid && defined __NR_setpgid
 
diff --git a/tests/xetpriority.c b/tests/xetpriority.c
index a32b031..dfd3264 100644
--- a/tests/xetpriority.c
+++ b/tests/xetpriority.c
@@ -1,5 +1,5 @@
 #include "tests.h"
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 #if defined __NR_getpriority && defined __NR_setpriority
 
@@ -18,11 +18,7 @@
 	rc = syscall(__NR_setpriority, PRIO_PROCESS,
 		     (unsigned long) 0xffffffff00000000 | pid,
 		     (unsigned long) 0xffffffff00000000);
-	if (rc)
-		printf("setpriority(PRIO_PROCESS, %d, 0) = %ld %s (%m)\n",
-		       pid, rc, errno2name());
-	else
-		printf("setpriority(PRIO_PROCESS, %d, 0) = 0\n", pid);
+	printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/xettimeofday.c b/tests/xettimeofday.c
index ae28e02..dd05091 100644
--- a/tests/xettimeofday.c
+++ b/tests/xettimeofday.c
@@ -31,7 +31,7 @@
 #include <stdint.h>
 #include <unistd.h>
 #include <sys/time.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 int
 main(void)
diff --git a/tests/xstatfsx.c b/tests/xstatfsx.c
index 3561866..c5c04be 100644
--- a/tests/xstatfsx.c
+++ b/tests/xstatfsx.c
@@ -105,14 +105,16 @@
 	print_statfs(".", NULL);
 
 	long rc = SYSCALL_INVOKE("", -1, 0, sizeof(STRUCT_STATFS));
+	const char *errstr = sprintrc(rc);
 	PRINT_SYSCALL_HEADER("", -1, sizeof(STRUCT_STATFS));
-	printf("NULL) = %ld %s (%m)\n", rc, errno2name());
+	printf("NULL) = %s\n", errstr);
 
 #ifdef CHECK_ODD_SIZE
 	const unsigned long addr = (unsigned long) 0xfacefeeddeadbeef;
 	rc = SYSCALL_INVOKE("", -1, addr, sizeof(STRUCT_STATFS) + 1);
+	errstr = sprintrc(rc);
 	PRINT_SYSCALL_HEADER("", -1, sizeof(STRUCT_STATFS) + 1);
-	printf("%#lx) = %ld %s (%m)\n", addr, rc, errno2name());
+	printf("%#lx) = %s\n", addr, errstr);
 #endif
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/xstatx.c b/tests/xstatx.c
index 2883f16..2d0dac3 100644
--- a/tests/xstatx.c
+++ b/tests/xstatx.c
@@ -44,14 +44,7 @@
 # include <stddef.h>
 # include <time.h>
 # include <unistd.h>
-
-# if defined MAJOR_IN_SYSMACROS
-#  include <sys/sysmacros.h>
-# elif defined MAJOR_IN_MKDEV
-#  include <sys/mkdev.h>
-# else
-#  include <sys/types.h>
-# endif
+# include <sys/sysmacros.h>
 
 static void
 print_time(const time_t t)
@@ -68,9 +61,18 @@
 		       p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
 		       p->tm_hour, p->tm_min, p->tm_sec);
 	else
-		printf("%llu", (unsigned long long) t);
+		printf("%llu", zero_extend_signed_to_ull(t));
 }
 
+# ifndef STRUCT_STAT
+#  define STRUCT_STAT struct stat
+#  define STRUCT_STAT_STR "struct stat"
+#  define STRUCT_STAT_IS_STAT64 0
+# endif
+# ifndef SAMPLE_SIZE
+#  define SAMPLE_SIZE 43147718418
+# endif
+
 typedef off_t libc_off_t;
 
 # ifdef USE_ASM_STAT
@@ -88,54 +90,46 @@
 #  undef st_atime
 #  undef st_mtime
 #  undef st_ctime
-#  undef dev_t
-#  undef gid_t
-#  undef ino_t
-#  undef loff_t
-#  undef mode_t
-#  undef nlink_t
-#  undef off64_t
-#  undef off_t
-#  undef time_t
-#  undef uid_t
-#  define dev_t __kernel_dev_t
-#  define gid_t __kernel_gid_t
-#  define ino_t __kernel_ino_t
-#  define loff_t __kernel_loff_t
-#  define mode_t __kernel_mode_t
-#  define nlink_t __kernel_nlink_t
-#  define off64_t __kernel_off64_t
-#  define off_t __kernel_off_t
-#  define time_t __kernel_time_t
-#  define uid_t __kernel_uid_t
 #  include "asm_stat.h"
-# else
-#  undef HAVE_STRUCT_STAT_ST_ATIME_NSEC
-#  ifdef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
-#   define HAVE_STRUCT_STAT_ST_ATIME_NSEC 1
-#   undef st_atime_nsec
-#   define st_atime_nsec st_atim.tv_nsec
-#  endif
+
+#  if STRUCT_STAT_IS_STAT64
+#   undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+#   if defined MPERS_IS_m32
+#    ifdef HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC
+#     define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#    endif
+#   elif defined MPERS_IS_mx32
+#    ifdef HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC
+#     define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#    endif
+#   elif defined HAVE_STRUCT_STAT64_ST_MTIME_NSEC
+#    define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#   endif /* MPERS_IS_m32 || MPERS_IS_mx32 || HAVE_STRUCT_STAT64_ST_MTIME_NSEC */
+#  else /* !STRUCT_STAT_IS_STAT64 */
+#   if defined MPERS_IS_m32
+#    undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+#    ifdef HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC
+#     define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#    endif
+#   elif defined MPERS_IS_mx32
+#    undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+#    ifdef HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC
+#     define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#    endif
+#   endif /*  MPERS_IS_m32 || MPERS_IS_mx32 */
+#  endif /* STRUCT_STAT_IS_STAT64 */
+
+# else /* !USE_ASM_STAT */
 #  undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
 #  ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
 #   define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-#   undef st_mtime_nsec
-#   define st_mtime_nsec st_mtim.tv_nsec
-#  endif
-#  undef HAVE_STRUCT_STAT_ST_CTIME_NSEC
-#  ifdef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC
-#   define HAVE_STRUCT_STAT_ST_CTIME_NSEC 1
+#   undef st_atime_nsec
+#   define st_atime_nsec st_atim.tv_nsec
 #   undef st_ctime_nsec
 #   define st_ctime_nsec st_ctim.tv_nsec
-#  endif
-# endif
-
-# ifndef STRUCT_STAT
-#  define STRUCT_STAT struct stat
-#  define STRUCT_STAT_STR "struct stat"
-# endif
-# ifndef SAMPLE_SIZE
-#  define SAMPLE_SIZE 43147718418
+#   undef st_mtime_nsec
+#   define st_mtime_nsec st_mtim.tv_nsec
+#  endif /* HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC */
 # endif
 
 static void
@@ -163,46 +157,46 @@
 print_stat(const STRUCT_STAT *st)
 {
 	printf("{st_dev=makedev(%u, %u)",
-	       (unsigned int) major(st->st_dev),
-	       (unsigned int) minor(st->st_dev));
-	printf(", st_ino=%llu", (unsigned long long) st->st_ino);
+	       (unsigned int) major(zero_extend_signed_to_ull(st->st_dev)),
+	       (unsigned int) minor(zero_extend_signed_to_ull(st->st_dev)));
+	printf(", st_ino=%llu", zero_extend_signed_to_ull(st->st_ino));
 	printf(", st_mode=");
 	print_ftype(st->st_mode);
 	printf("|");
 	print_perms(st->st_mode);
-	printf(", st_nlink=%u", (unsigned int) st->st_nlink);
-	printf(", st_uid=%u", (unsigned int) st->st_uid);
-	printf(", st_gid=%u", (unsigned int) st->st_gid);
-	printf(", st_blksize=%u", (unsigned int) st->st_blksize);
-	printf(", st_blocks=%u", (unsigned int) st->st_blocks);
+	printf(", st_nlink=%llu", zero_extend_signed_to_ull(st->st_nlink));
+	printf(", st_uid=%llu", zero_extend_signed_to_ull(st->st_uid));
+	printf(", st_gid=%llu", zero_extend_signed_to_ull(st->st_gid));
+	printf(", st_blksize=%llu", zero_extend_signed_to_ull(st->st_blksize));
+	printf(", st_blocks=%llu", zero_extend_signed_to_ull(st->st_blocks));
 
 	switch (st->st_mode & S_IFMT) {
 	case S_IFCHR: case S_IFBLK:
 		printf(", st_rdev=makedev(%u, %u)",
-		       (unsigned int) major(st->st_rdev),
-		       (unsigned int) minor(st->st_rdev));
+		       (unsigned int) major(zero_extend_signed_to_ull(st->st_rdev)),
+		       (unsigned int) minor(zero_extend_signed_to_ull(st->st_rdev)));
 		break;
 	default:
-		printf(", st_size=%llu", (unsigned long long) st->st_size);
+		printf(", st_size=%llu", zero_extend_signed_to_ull(st->st_size));
 	}
 
 	printf(", st_atime=");
-	print_time(st->st_atime);
-# ifdef HAVE_STRUCT_STAT_ST_ATIME_NSEC
+	print_time(sign_extend_unsigned_to_ll(st->st_atime));
+# ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
 	if (st->st_atime_nsec)
-		printf(".%09lu", (unsigned long) st->st_atime_nsec);
+		printf(".%09llu", zero_extend_signed_to_ull(st->st_atime_nsec));
 # endif
 	printf(", st_mtime=");
-	print_time(st->st_mtime);
+	print_time(sign_extend_unsigned_to_ll(st->st_mtime));
 # ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
 	if (st->st_mtime_nsec)
-		printf(".%09lu", (unsigned long) st->st_mtime_nsec);
+		printf(".%09llu", zero_extend_signed_to_ull(st->st_mtime_nsec));
 # endif
 	printf(", st_ctime=");
-	print_time(st->st_ctime);
-# ifdef HAVE_STRUCT_STAT_ST_CTIME_NSEC
+	print_time(sign_extend_unsigned_to_ll(st->st_ctime));
+# ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
 	if (st->st_ctime_nsec)
-		printf(".%09lu", (unsigned long) st->st_ctime_nsec);
+		printf(".%09llu", zero_extend_signed_to_ull(st->st_ctime_nsec));
 # endif
 	printf("}");
 }
@@ -248,12 +242,12 @@
 		return 77;
 	}
 	(void) unlink(sample);
-	if ((unsigned long long) SAMPLE_SIZE !=
-	    (unsigned long long) st[0].st_size) {
+	if (zero_extend_signed_to_ull(SAMPLE_SIZE) !=
+	    zero_extend_signed_to_ull(st[0].st_size)) {
 		fprintf(stderr, "Size mismatch: "
 				"requested size(%llu) != st_size(%llu)\n",
-			(unsigned long long) SAMPLE_SIZE,
-			(unsigned long long) st[0].st_size);
+			zero_extend_signed_to_ull(SAMPLE_SIZE),
+			zero_extend_signed_to_ull(st[0].st_size));
 		fprintf(stderr, "The most likely reason for this is incorrect"
 				" definition of %s.\n"
 				"Here is some diagnostics that might help:\n",
diff --git a/time.c b/time.c
index 963d0ea..b32eddf 100644
--- a/time.c
+++ b/time.c
@@ -314,15 +314,17 @@
 
 SYS_FUNC(timerfd_settime)
 {
-	printfd(tcp, tcp->u_arg[0]);
-	tprints(", ");
-	printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
-	tprints(", ");
-	print_itimerspec(tcp, tcp->u_arg[2]);
-	tprints(", ");
-	print_itimerspec(tcp, tcp->u_arg[3]);
-
-	return RVAL_DECODED;
+	if (entering(tcp)) {
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
+		printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
+		tprints(", ");
+		print_itimerspec(tcp, tcp->u_arg[2]);
+		tprints(", ");
+	} else {
+		print_itimerspec(tcp, tcp->u_arg[3]);
+	}
+	return 0;
 }
 
 SYS_FUNC(timerfd_gettime)
diff --git a/times.c b/times.c
index 04df462..6af4f95 100644
--- a/times.c
+++ b/times.c
@@ -46,11 +46,11 @@
 
 	if (!umove_or_printaddr(tcp, tcp->u_arg[0], &tbuf)) {
 		tprintf("{tms_utime=%llu, tms_stime=%llu, ",
-			widen_to_ull(tbuf.tms_utime),
-			widen_to_ull(tbuf.tms_stime));
+			zero_extend_signed_to_ull(tbuf.tms_utime),
+			zero_extend_signed_to_ull(tbuf.tms_stime));
 		tprintf("tms_cutime=%llu, tms_cstime=%llu}",
-			widen_to_ull(tbuf.tms_cutime),
-			widen_to_ull(tbuf.tms_cstime));
+			zero_extend_signed_to_ull(tbuf.tms_cutime),
+			zero_extend_signed_to_ull(tbuf.tms_cstime));
 	}
 
 	return syserror(tcp) ? RVAL_DECIMAL :
diff --git a/travis-build.sh b/travis-build.sh
index e6da4bb..32ccd50 100755
--- a/travis-build.sh
+++ b/travis-build.sh
@@ -17,7 +17,7 @@
 		;;
 	x86)
 		CC="$CC -m32"
-		export DISTCHECK_CONFIGURE_FLAGS='--build=i686-pc-linux-gnu'
+		export DISTCHECK_CONFIGURE_FLAGS='--build=i686-pc-linux-gnu --target=i686-pc-linux-gnu'
 		;;
 esac
 
diff --git a/travis-install.sh b/travis-install.sh
index 567a49b..ba5ff2d 100755
--- a/travis-install.sh
+++ b/travis-install.sh
@@ -19,8 +19,31 @@
 		apt_get_install gcc-multilib "$CC"
 		;;
 	musl-gcc)
-		sudo add-apt-repository ppa:bortis/musl -y
-		apt_get_install gcc-multilib musl-tools linux-musl-dev
+		apt_get_install gcc-multilib
+		git clone --depth=1 https://github.com/strace/musl
+		cd musl
+			CC=gcc
+			build=
+			case "${TARGET-}" in
+				x32)
+					CC="$CC -mx32"
+					;;
+				x86)
+					CC="$CC -m32"
+					build='--build=i686-pc-linux-gnu --target=i686-pc-linux-gnu'
+					;;
+			esac
+			./configure --prefix=/opt/musl --exec-prefix=/usr ${build}
+			make
+			sudo make install
+		cd -
+		rm -rf musl
+		sudo ln -s \
+			/usr/include/linux \
+			/usr/include/asm \
+			/usr/include/asm-generic \
+			/usr/include/mtd \
+			/opt/musl/include/
 		;;
 esac
 
diff --git a/umask.c b/umask.c
index dda40d4..d42258a 100644
--- a/umask.c
+++ b/umask.c
@@ -2,7 +2,7 @@
 
 SYS_FUNC(umask)
 {
-	tprintf("%#lo", tcp->u_arg[0]);
+	print_numeric_umode_t(tcp->u_arg[0]);
 
 	return RVAL_DECODED | RVAL_OCTAL;
 }
diff --git a/userfaultfd.c b/userfaultfd.c
index 2721105..07094a1 100644
--- a/userfaultfd.c
+++ b/userfaultfd.c
@@ -77,7 +77,7 @@
 				printflags64(uffd_api_flags, ua.ioctls,
 					     "_UFFDIO_???");
 			}
-			tprintf("}");
+			tprints("}");
 		}
 		return 1;
 	}
@@ -107,14 +107,14 @@
 			tprints(", ");
 			if (umove_or_printaddr(tcp, arg, &ur))
 				return RVAL_DECODED | 1;
-			tprintf("{range=");
+			tprints("{range=");
 			tprintf_uffdio_range(&ur.range);
-			tprintf(", mode=");
+			tprints(", mode=");
 			printflags64(uffd_register_mode_flags, ur.mode,
 				     "UFFDIO_REGISTER_MODE_???");
 		} else {
 			if (!syserror(tcp) && !umove(tcp, arg, &ur)) {
-				tprintf(", ioctls=");
+				tprints(", ioctls=");
 				printflags64(uffd_register_ioctl_flags,
 					     ur.ioctls, "UFFDIO_???");
 			}
@@ -138,9 +138,9 @@
 			tprints(", ");
 			if (umove_or_printaddr(tcp, arg, &uz))
 				return RVAL_DECODED | 1;
-			tprintf("{range=");
+			tprints("{range=");
 			tprintf_uffdio_range(&uz.range);
-			tprintf(", mode=");
+			tprints(", mode=");
 			printflags64(uffd_zeropage_flags, uz.mode,
 				     "UFFDIO_ZEROPAGE_???");
 		} else {
diff --git a/util.c b/util.c
index afa3290..23a5fdb 100644
--- a/util.c
+++ b/util.c
@@ -275,7 +275,17 @@
      defined XTENSA
 	/* Align arg_no to the next even number. */
 	arg_no = (arg_no + 1) & 0xe;
-# endif
+# elif defined SH
+	/*
+	 * The SH4 ABI does allow long longs in odd-numbered registers, but
+	 * does not allow them to be split between registers and memory - and
+	 * there are only four argument registers for normal functions.  As a
+	 * result, pread, for example, takes an extra padding argument before
+	 * the offset.  This was changed late in the 2.4 series (around 2.4.20).
+	 */
+	if (arg_no == 3)
+		arg_no++;
+# endif /* __ARM_EABI__ || LINUX_MIPSO32 || POWERPC || XTENSA || SH */
 	*val = LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1]);
 	arg_no += 2;
 #endif
@@ -609,6 +619,9 @@
 			/* Check for NUL-terminated string. */
 			if (c == eol)
 				goto asciz_ended;
+			if ((i == (size - 1)) &&
+			    (style & QUOTE_OMIT_TRAILING_0) && (c == '\0'))
+				goto asciz_ended;
 			switch (c) {
 				case '\"': case '\\':
 					*s++ = '\\';
@@ -785,7 +798,7 @@
  * If string length exceeds `max_strlen', append `...' to the output.
  */
 void
-printstr(struct tcb *tcp, long addr, long len)
+printstr_ex(struct tcb *tcp, long addr, long len, unsigned int user_style)
 {
 	static char *str = NULL;
 	static char *outstr;
@@ -829,6 +842,8 @@
 		style = 0;
 	}
 
+	style |= user_style;
+
 	/* If string_quote didn't see NUL and (it was supposed to be ASCIZ str
 	 * or we were requested to print more than -s NUM chars)...
 	 */
@@ -1403,24 +1418,44 @@
 	return cur >= end_addr;
 }
 
+long long
+getarg_ll(struct tcb *tcp, int argn)
+{
+#if HAVE_STRUCT_TCB_EXT_ARG
+# if SUPPORTED_PERSONALITIES > 1
+	if (current_personality == 1)
+		return (long) tcp->u_arg[argn];
+	else
+# endif
+	return (long long) tcp->ext_arg[argn];
+#else
+	return (long) tcp->u_arg[argn];
+#endif
+}
+
+unsigned long long
+getarg_ull(struct tcb *tcp, int argn)
+{
+#if HAVE_STRUCT_TCB_EXT_ARG
+# if SUPPORTED_PERSONALITIES > 1
+	if (current_personality == 1)
+		return (unsigned long) tcp->u_arg[argn];
+	else
+# endif
+	return (unsigned long long) tcp->ext_arg[argn];
+#else
+	return (unsigned long) tcp->u_arg[argn];
+#endif
+}
+
 int
 printargs(struct tcb *tcp)
 {
 	if (entering(tcp)) {
 		int i;
 		int n = tcp->s_ent->nargs;
-		for (i = 0; i < n; i++) {
-#if HAVE_STRUCT_TCB_EXT_ARG
-# if SUPPORTED_PERSONALITIES > 1
-			if (current_personality == 1)
-				tprintf("%s%#lx", i ? ", " : "", tcp->u_arg[i]);
-			else
-# endif
-			tprintf("%s%#llx", i ? ", " : "", tcp->ext_arg[i]);
-#else
-			tprintf("%s%#lx", i ? ", " : "", tcp->u_arg[i]);
-#endif
-		}
+		for (i = 0; i < n; i++)
+			tprintf("%s%#llx", i ? ", " : "", getarg_ull(tcp, i));
 	}
 	return 0;
 }
diff --git a/xlat.h b/xlat.h
index 2f7643c..aaa7aab 100644
--- a/xlat.h
+++ b/xlat.h
@@ -1,4 +1,5 @@
 #ifndef STRACE_XLAT_H
+#define STRACE_XLAT_H
 
 # include <stdint.h>
 
@@ -13,4 +14,4 @@
 # define XLAT_TYPE_PAIR(type, val, str)	{     (type)(val), str  }
 # define XLAT_END			{		0, 0    }
 
-#endif
+#endif /* !STRACE_XLAT_H */
diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am
index 06db6bd..2e7abca 100644
--- a/xlat/Makemodule.am
+++ b/xlat/Makemodule.am
@@ -1,5 +1,5 @@
-XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclipc.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/f_owner_types.in xlat/f_seals.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsockipoptions.in xlat/getsockipv6options.in xlat/hci_channels.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/iffflags.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ipccalls.in xlat/ipc_msg_flags.in xlat/ip_cmsg_types.in xlat/itimer_which.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/keyctl_commands.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/lockfcmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlockall_flags.in xlat/mlock_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mremap_flags.in xlat/msgctl_flags.in xlat/msg_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/netlink_flags.in xlat/netlink_protocols.in xlat/netlink_types.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/openmodessol.in xlat/packet_mreq_type.in xlat/perf_event_open_flags.in xlat/personality_flags.in xlat/personality_types.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/prctl_options.in xlat/priorities.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quotacmds.in xlat/quota_formats.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/rwf_flags.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/shmctl_flags.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/sock_type_flags.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net_core.in xlat/sysctl_net.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_streaming_capabilities.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in 
-XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclipc.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/f_owner_types.h xlat/f_seals.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsockipoptions.h xlat/getsockipv6options.h xlat/hci_channels.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/iffflags.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ipccalls.h xlat/ipc_msg_flags.h xlat/ip_cmsg_types.h xlat/itimer_which.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/keyctl_commands.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/lockfcmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlockall_flags.h xlat/mlock_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mremap_flags.h xlat/msgctl_flags.h xlat/msg_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/netlink_flags.h xlat/netlink_protocols.h xlat/netlink_types.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/openmodessol.h xlat/packet_mreq_type.h xlat/perf_event_open_flags.h xlat/personality_flags.h xlat/personality_types.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/prctl_options.h xlat/priorities.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quotacmds.h xlat/quota_formats.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/rwf_flags.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/shmctl_flags.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/sock_type_flags.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net_core.h xlat/sysctl_net.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_streaming_capabilities.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h 
+XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclipc.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/f_owner_types.in xlat/f_seals.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsockipoptions.in xlat/getsockipv6options.in xlat/hci_channels.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/iffflags.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ipccalls.in xlat/ipc_msg_flags.in xlat/ip_cmsg_types.in xlat/itimer_which.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/keyctl_commands.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/lockfcmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlockall_flags.in xlat/mlock_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mremap_flags.in xlat/msgctl_flags.in xlat/msg_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/netlink_flags.in xlat/netlink_protocols.in xlat/netlink_types.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/openmodessol.in xlat/packet_mreq_type.in xlat/perf_event_open_flags.in xlat/personality_flags.in xlat/personality_types.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/prctl_options.in xlat/priorities.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quotacmds.in xlat/quota_formats.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/rwf_flags.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/shmctl_flags.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/sock_type_flags.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net_core.in xlat/sysctl_net.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_streaming_capabilities.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in 
+XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclipc.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/f_owner_types.h xlat/f_seals.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsockipoptions.h xlat/getsockipv6options.h xlat/hci_channels.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/iffflags.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ipccalls.h xlat/ipc_msg_flags.h xlat/ip_cmsg_types.h xlat/itimer_which.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/keyctl_commands.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/lockfcmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlockall_flags.h xlat/mlock_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mremap_flags.h xlat/msgctl_flags.h xlat/msg_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/netlink_flags.h xlat/netlink_protocols.h xlat/netlink_types.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/openmodessol.h xlat/packet_mreq_type.h xlat/perf_event_open_flags.h xlat/personality_flags.h xlat/personality_types.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/prctl_options.h xlat/priorities.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quotacmds.h xlat/quota_formats.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/shmctl_flags.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/sock_type_flags.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net_core.h xlat/sysctl_net.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_streaming_capabilities.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h 
 $(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/aclipc.h: $(top_srcdir)/xlat/aclipc.in $(top_srcdir)/xlat/gen.sh
@@ -384,6 +384,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rwf_flags.h: $(top_srcdir)/xlat/rwf_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sa_handler_values.h: $(top_srcdir)/xlat/sa_handler_values.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sched_flags.h: $(top_srcdir)/xlat/sched_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/schedulers.h: $(top_srcdir)/xlat/schedulers.in $(top_srcdir)/xlat/gen.sh
diff --git a/xlat/bpf_map_types.h b/xlat/bpf_map_types.h
index 2ce223a..c77f47b 100644
--- a/xlat/bpf_map_types.h
+++ b/xlat/bpf_map_types.h
@@ -23,6 +23,9 @@
 #if !(defined(BPF_MAP_TYPE_STACK_TRACE) || (defined(HAVE_DECL_BPF_MAP_TYPE_STACK_TRACE) && HAVE_DECL_BPF_MAP_TYPE_STACK_TRACE))
 # define BPF_MAP_TYPE_STACK_TRACE 7
 #endif
+#if !(defined(BPF_MAP_TYPE_CGROUP_ARRAY) || (defined(HAVE_DECL_BPF_MAP_TYPE_CGROUP_ARRAY) && HAVE_DECL_BPF_MAP_TYPE_CGROUP_ARRAY))
+# define BPF_MAP_TYPE_CGROUP_ARRAY 8
+#endif
 
 #ifdef IN_MPERS
 
@@ -40,6 +43,7 @@
  XLAT(BPF_MAP_TYPE_PERCPU_HASH),
  XLAT(BPF_MAP_TYPE_PERCPU_ARRAY),
  XLAT(BPF_MAP_TYPE_STACK_TRACE),
+ XLAT(BPF_MAP_TYPE_CGROUP_ARRAY),
  XLAT_END
 };
 
diff --git a/xlat/bpf_map_types.in b/xlat/bpf_map_types.in
index b048af1..ccb24f3 100644
--- a/xlat/bpf_map_types.in
+++ b/xlat/bpf_map_types.in
@@ -6,3 +6,4 @@
 BPF_MAP_TYPE_PERCPU_HASH 5
 BPF_MAP_TYPE_PERCPU_ARRAY 6
 BPF_MAP_TYPE_STACK_TRACE 7
+BPF_MAP_TYPE_CGROUP_ARRAY 8
diff --git a/xlat/bpf_prog_types.h b/xlat/bpf_prog_types.h
index 43f3e8e..4f3b445 100644
--- a/xlat/bpf_prog_types.h
+++ b/xlat/bpf_prog_types.h
@@ -17,6 +17,9 @@
 #if !(defined(BPF_PROG_TYPE_TRACEPOINT) || (defined(HAVE_DECL_BPF_PROG_TYPE_TRACEPOINT) && HAVE_DECL_BPF_PROG_TYPE_TRACEPOINT))
 # define BPF_PROG_TYPE_TRACEPOINT 5
 #endif
+#if !(defined(BPF_PROG_TYPE_XDP) || (defined(HAVE_DECL_BPF_PROG_TYPE_XDP) && HAVE_DECL_BPF_PROG_TYPE_XDP))
+# define BPF_PROG_TYPE_XDP 6
+#endif
 
 #ifdef IN_MPERS
 
@@ -32,6 +35,7 @@
  XLAT(BPF_PROG_TYPE_SCHED_CLS),
  XLAT(BPF_PROG_TYPE_SCHED_ACT),
  XLAT(BPF_PROG_TYPE_TRACEPOINT),
+ XLAT(BPF_PROG_TYPE_XDP),
  XLAT_END
 };
 
diff --git a/xlat/bpf_prog_types.in b/xlat/bpf_prog_types.in
index e6e8446..16f51d6 100644
--- a/xlat/bpf_prog_types.in
+++ b/xlat/bpf_prog_types.in
@@ -4,3 +4,4 @@
 BPF_PROG_TYPE_SCHED_CLS 3
 BPF_PROG_TYPE_SCHED_ACT 4
 BPF_PROG_TYPE_TRACEPOINT 5
+BPF_PROG_TYPE_XDP 6
diff --git a/xlat/ethernet_protocols.h b/xlat/ethernet_protocols.h
index 142fee9..035ca8c 100644
--- a/xlat/ethernet_protocols.h
+++ b/xlat/ethernet_protocols.h
@@ -143,6 +143,9 @@
 #if defined(ETH_P_1588) || (defined(HAVE_DECL_ETH_P_1588) && HAVE_DECL_ETH_P_1588)
   XLAT(ETH_P_1588),
 #endif
+#if defined(ETH_P_NCSI) || (defined(HAVE_DECL_ETH_P_NCSI) && HAVE_DECL_ETH_P_NCSI)
+  XLAT(ETH_P_NCSI),
+#endif
 #if defined(ETH_P_PRP) || (defined(HAVE_DECL_ETH_P_PRP) && HAVE_DECL_ETH_P_PRP)
   XLAT(ETH_P_PRP),
 #endif
diff --git a/xlat/ethernet_protocols.in b/xlat/ethernet_protocols.in
index df078ba..522d1be 100644
--- a/xlat/ethernet_protocols.in
+++ b/xlat/ethernet_protocols.in
@@ -43,6 +43,7 @@
 ETH_P_8021AH
 ETH_P_MVRP
 ETH_P_1588
+ETH_P_NCSI
 ETH_P_PRP
 ETH_P_FCOE
 ETH_P_TDLS
diff --git a/xlat/falloc_flags.h b/xlat/falloc_flags.h
index 0e34b47..12d1069 100644
--- a/xlat/falloc_flags.h
+++ b/xlat/falloc_flags.h
@@ -1,4 +1,22 @@
 /* Generated by ./xlat/gen.sh from ./xlat/falloc_flags.in; do not edit. */
+#if !(defined(FALLOC_FL_KEEP_SIZE) || (defined(HAVE_DECL_FALLOC_FL_KEEP_SIZE) && HAVE_DECL_FALLOC_FL_KEEP_SIZE))
+# define FALLOC_FL_KEEP_SIZE 0x01
+#endif
+#if !(defined(FALLOC_FL_PUNCH_HOLE) || (defined(HAVE_DECL_FALLOC_FL_PUNCH_HOLE) && HAVE_DECL_FALLOC_FL_PUNCH_HOLE))
+# define FALLOC_FL_PUNCH_HOLE 0x02
+#endif
+#if !(defined(FALLOC_FL_NO_HIDE_STALE) || (defined(HAVE_DECL_FALLOC_FL_NO_HIDE_STALE) && HAVE_DECL_FALLOC_FL_NO_HIDE_STALE))
+# define FALLOC_FL_NO_HIDE_STALE 0x04
+#endif
+#if !(defined(FALLOC_FL_COLLAPSE_RANGE) || (defined(HAVE_DECL_FALLOC_FL_COLLAPSE_RANGE) && HAVE_DECL_FALLOC_FL_COLLAPSE_RANGE))
+# define FALLOC_FL_COLLAPSE_RANGE 0x08
+#endif
+#if !(defined(FALLOC_FL_ZERO_RANGE) || (defined(HAVE_DECL_FALLOC_FL_ZERO_RANGE) && HAVE_DECL_FALLOC_FL_ZERO_RANGE))
+# define FALLOC_FL_ZERO_RANGE 0x10
+#endif
+#if !(defined(FALLOC_FL_INSERT_RANGE) || (defined(HAVE_DECL_FALLOC_FL_INSERT_RANGE) && HAVE_DECL_FALLOC_FL_INSERT_RANGE))
+# define FALLOC_FL_INSERT_RANGE 0x20
+#endif
 
 #ifdef IN_MPERS
 
@@ -8,24 +26,12 @@
 
 static
 const struct xlat falloc_flags[] = {
-#if defined(FALLOC_FL_KEEP_SIZE) || (defined(HAVE_DECL_FALLOC_FL_KEEP_SIZE) && HAVE_DECL_FALLOC_FL_KEEP_SIZE)
-  XLAT(FALLOC_FL_KEEP_SIZE),
-#endif
-#if defined(FALLOC_FL_PUNCH_HOLE) || (defined(HAVE_DECL_FALLOC_FL_PUNCH_HOLE) && HAVE_DECL_FALLOC_FL_PUNCH_HOLE)
-  XLAT(FALLOC_FL_PUNCH_HOLE),
-#endif
-#if defined(FALLOC_FL_NO_HIDE_STALE) || (defined(HAVE_DECL_FALLOC_FL_NO_HIDE_STALE) && HAVE_DECL_FALLOC_FL_NO_HIDE_STALE)
-  XLAT(FALLOC_FL_NO_HIDE_STALE),
-#endif
-#if defined(FALLOC_FL_COLLAPSE_RANGE) || (defined(HAVE_DECL_FALLOC_FL_COLLAPSE_RANGE) && HAVE_DECL_FALLOC_FL_COLLAPSE_RANGE)
-  XLAT(FALLOC_FL_COLLAPSE_RANGE),
-#endif
-#if defined(FALLOC_FL_ZERO_RANGE) || (defined(HAVE_DECL_FALLOC_FL_ZERO_RANGE) && HAVE_DECL_FALLOC_FL_ZERO_RANGE)
-  XLAT(FALLOC_FL_ZERO_RANGE),
-#endif
-#if defined(FALLOC_FL_INSERT_RANGE) || (defined(HAVE_DECL_FALLOC_FL_INSERT_RANGE) && HAVE_DECL_FALLOC_FL_INSERT_RANGE)
-  XLAT(FALLOC_FL_INSERT_RANGE),
-#endif
+ XLAT(FALLOC_FL_KEEP_SIZE),
+ XLAT(FALLOC_FL_PUNCH_HOLE),
+ XLAT(FALLOC_FL_NO_HIDE_STALE),
+ XLAT(FALLOC_FL_COLLAPSE_RANGE),
+ XLAT(FALLOC_FL_ZERO_RANGE),
+ XLAT(FALLOC_FL_INSERT_RANGE),
  XLAT_END
 };
 
diff --git a/xlat/falloc_flags.in b/xlat/falloc_flags.in
index 936e960..9d8ecf2 100644
--- a/xlat/falloc_flags.in
+++ b/xlat/falloc_flags.in
@@ -1,6 +1,6 @@
-FALLOC_FL_KEEP_SIZE
-FALLOC_FL_PUNCH_HOLE
-FALLOC_FL_NO_HIDE_STALE
-FALLOC_FL_COLLAPSE_RANGE
-FALLOC_FL_ZERO_RANGE
-FALLOC_FL_INSERT_RANGE
+FALLOC_FL_KEEP_SIZE      0x01
+FALLOC_FL_PUNCH_HOLE     0x02
+FALLOC_FL_NO_HIDE_STALE  0x04
+FALLOC_FL_COLLAPSE_RANGE 0x08
+FALLOC_FL_ZERO_RANGE     0x10
+FALLOC_FL_INSERT_RANGE   0x20
diff --git a/xlat/fsmagic.h b/xlat/fsmagic.h
index ec1777c..49d4595 100644
--- a/xlat/fsmagic.h
+++ b/xlat/fsmagic.h
@@ -19,11 +19,15 @@
 { 0x00002468,	"MINIX2_SUPER_MAGIC"	},
 { 0x00002478,	"MINIX2_SUPER_MAGIC2"	},
 { 0x00003434,	"NILFS_SUPER_MAGIC"	},
+{ 0x00004244,	"HFS_SUPER_MAGIC"	},
+{ 0x0000482b,	"HFSPLUS_SUPER_MAGIC"	},
 { 0x00004d44,	"MSDOS_SUPER_MAGIC"	},
 { 0x00004d5a,	"MINIX3_SUPER_MAGIC"	},
 { 0x0000517b,	"SMB_SUPER_MAGIC"	},
 { 0x0000564c,	"NCP_SUPER_MAGIC"	},
+{ 0x00005df5,	"EXOFS_SUPER_MAGIC"	},
 { 0x00006969,	"NFS_SUPER_MAGIC"	},
+{ 0x00007275,	"ROMFS_MAGIC"		},
 { 0x000072b6,	"JFFS2_SUPER_MAGIC"	},
 { 0x00009660,	"ISOFS_SUPER_MAGIC"	},
 { 0x00009fa0,	"PROC_SUPER_MAGIC"	},
@@ -38,8 +42,10 @@
 { 0x0027e0eb,	"CGROUP_SUPER_MAGIC"	},
 { 0x00414a53,	"EFS_SUPER_MAGIC"	},
 { 0x00c0ffee,	"HOSTFS_SUPER_MAGIC"	},
+{ 0x00c36400,	"CEPH_SUPER_MAGIC"	},
 { 0x01021994,	"TMPFS_MAGIC"		},
 { 0x01021997,	"V9FS_MAGIC"		},
+{ 0x01161970,	"GFS2_MAGIC"		},
 { 0x012fd16d,	"XIAFS_SUPER_MAGIC"	},
 { 0x012ff7b4,	"XENIX_SUPER_MAGIC"	},
 { 0x012ff7b5,	"SYSV4_SUPER_MAGIC"	},
@@ -49,39 +55,60 @@
 { 0x09041934,	"ANON_INODE_FS_MAGIC"	},
 { 0x0bad1dea,	"FUTEXFS_SUPER_MAGIC"	},
 { 0x11307854,	"MTD_INODE_FS_MAGIC"	},
+{ 0x13661366,	"BALLOON_KVM_MAGIC"	},
 { 0x15013346,	"UDF_SUPER_MAGIC"	},
+{ 0x1badface,	"BFS_MAGIC"		},
+{ 0x24051905,	"UBIFS_SUPER_MAGIC"	},
 { 0x28cd3d45,	"CRAMFS_MAGIC"		},
+{ 0x2fc12fc1,	"ZFS_SUPER_MAGIC"	},
+{ 0x3153464a,	"JFS_SUPER_MAGIC"	},
+{ 0x42465331,	"BEFS_SUPER_MAGIC"	},
 { 0x42494e4d,	"BINFMTFS_MAGIC"	},
 { 0x43415d53,	"SMACK_MAGIC"		},
 { 0x453dcd28,	"CRAMFS_MAGIC_WEND"	},
+{ 0x47504653,	"GPFS_SUPER_MAGIC"	},
 { 0x50495045,	"PIPEFS_MAGIC"		},
 { 0x52654973,	"REISERFS_SUPER_MAGIC"	},
 { 0x5346414f,	"AFS_SUPER_MAGIC"	},
+{ 0x5346544e,	"NTFS_SB_MAGIC"		},
 { 0x534f434b,	"SOCKFS_MAGIC"		},
 { 0x54190100,	"UFS_CIGAM"		},
+{ 0x565a4653,	"VZFS_SUPER_MAGIC"	},
 { 0x57ac6e9d,	"STACK_END_MAGIC"	},
+{ 0x58295829,	"ZSMALLOC_MAGIC"	},
+{ 0x58465342,	"XFS_SB_MAGIC"		},
 { 0x6165676c,	"PSTOREFS_MAGIC"	},
+{ 0x61756673,	"AUFS_SUPER_MAGIC"	},
 { 0x62646576,	"BDEVFS_MAGIC"		},
+{ 0x62656570,	"CONFIGFS_MAGIC"	},
 { 0x62656572,	"SYSFS_MAGIC"		},
 { 0x63677270,	"CGROUP2_SUPER_MAGIC"	},
 { 0x64626720,	"DEBUGFS_MAGIC"		},
+{ 0x65735543,	"FUSE_CTL_SUPER_MAGIC"	},
+{ 0x65735546,	"FUSE_SUPER_MAGIC"	},
 { 0x68191122,	"QNX6_SUPER_MAGIC"	},
+{ 0x6b414653,	"AFS_FS_MAGIC"		},
 { 0x6e736673,	"NSFS_MAGIC"		},
 { 0x73636673,	"SECURITYFS_MAGIC"	},
 { 0x73717368,	"SQUASHFS_MAGIC"	},
 { 0x73727279,	"BTRFS_TEST_MAGIC"	},
 { 0x73757245,	"CODA_SUPER_MAGIC"	},
+{ 0x7461636f,	"OCFS2_SUPER_MAGIC"	},
 { 0x74726163,	"TRACEFS_MAGIC"		},
 { 0x794c7630,	"OVERLAYFS_SUPER_MAGIC"	},
 { 0x858458f6,	"RAMFS_MAGIC"		},
 { 0x9123683e,	"BTRFS_SUPER_MAGIC"	},
 { 0x958458f6,	"HUGETLBFS_MAGIC"	},
+{ 0xa501fcf5,	"VXFS_SUPER_MAGIC"	},
 { 0xabba1974,	"XENFS_SUPER_MAGIC"	},
+{ 0xc97e8168,	"LOGFS_MAGIC"		},
 { 0xcafe4a11,	"BPF_FS_MAGIC"		},
 { 0xde5e81e4,	"EFIVARFS_MAGIC"	},
 { 0xf2f52010,	"F2FS_SUPER_MAGIC"	},
 { 0xf97cff8c,	"SELINUX_MAGIC"		},
 { 0xf995e849,	"HPFS_SUPER_MAGIC"	},
+{ 0xfe534d42,	"SMB2_MAGIC_NUMBER"	},
+{ 0xff534d42,	"CIFS_MAGIC_NUMBER"	},
  /* this array should remain not NULL-terminated */
 };
 
diff --git a/xlat/fsmagic.in b/xlat/fsmagic.in
index f9005b6..538c175 100644
--- a/xlat/fsmagic.in
+++ b/xlat/fsmagic.in
@@ -9,11 +9,15 @@
 { 0x00002468,	"MINIX2_SUPER_MAGIC"	},
 { 0x00002478,	"MINIX2_SUPER_MAGIC2"	},
 { 0x00003434,	"NILFS_SUPER_MAGIC"	},
+{ 0x00004244,	"HFS_SUPER_MAGIC"	},
+{ 0x0000482b,	"HFSPLUS_SUPER_MAGIC"	},
 { 0x00004d44,	"MSDOS_SUPER_MAGIC"	},
 { 0x00004d5a,	"MINIX3_SUPER_MAGIC"	},
 { 0x0000517b,	"SMB_SUPER_MAGIC"	},
 { 0x0000564c,	"NCP_SUPER_MAGIC"	},
+{ 0x00005df5,	"EXOFS_SUPER_MAGIC"	},
 { 0x00006969,	"NFS_SUPER_MAGIC"	},
+{ 0x00007275,	"ROMFS_MAGIC"		},
 { 0x000072b6,	"JFFS2_SUPER_MAGIC"	},
 { 0x00009660,	"ISOFS_SUPER_MAGIC"	},
 { 0x00009fa0,	"PROC_SUPER_MAGIC"	},
@@ -28,8 +32,10 @@
 { 0x0027e0eb,	"CGROUP_SUPER_MAGIC"	},
 { 0x00414a53,	"EFS_SUPER_MAGIC"	},
 { 0x00c0ffee,	"HOSTFS_SUPER_MAGIC"	},
+{ 0x00c36400,	"CEPH_SUPER_MAGIC"	},
 { 0x01021994,	"TMPFS_MAGIC"		},
 { 0x01021997,	"V9FS_MAGIC"		},
+{ 0x01161970,	"GFS2_MAGIC"		},
 { 0x012fd16d,	"XIAFS_SUPER_MAGIC"	},
 { 0x012ff7b4,	"XENIX_SUPER_MAGIC"	},
 { 0x012ff7b5,	"SYSV4_SUPER_MAGIC"	},
@@ -39,37 +45,58 @@
 { 0x09041934,	"ANON_INODE_FS_MAGIC"	},
 { 0x0bad1dea,	"FUTEXFS_SUPER_MAGIC"	},
 { 0x11307854,	"MTD_INODE_FS_MAGIC"	},
+{ 0x13661366,	"BALLOON_KVM_MAGIC"	},
 { 0x15013346,	"UDF_SUPER_MAGIC"	},
+{ 0x1badface,	"BFS_MAGIC"		},
+{ 0x24051905,	"UBIFS_SUPER_MAGIC"	},
 { 0x28cd3d45,	"CRAMFS_MAGIC"		},
+{ 0x2fc12fc1,	"ZFS_SUPER_MAGIC"	},
+{ 0x3153464a,	"JFS_SUPER_MAGIC"	},
+{ 0x42465331,	"BEFS_SUPER_MAGIC"	},
 { 0x42494e4d,	"BINFMTFS_MAGIC"	},
 { 0x43415d53,	"SMACK_MAGIC"		},
 { 0x453dcd28,	"CRAMFS_MAGIC_WEND"	},
+{ 0x47504653,	"GPFS_SUPER_MAGIC"	},
 { 0x50495045,	"PIPEFS_MAGIC"		},
 { 0x52654973,	"REISERFS_SUPER_MAGIC"	},
 { 0x5346414f,	"AFS_SUPER_MAGIC"	},
+{ 0x5346544e,	"NTFS_SB_MAGIC"		},
 { 0x534f434b,	"SOCKFS_MAGIC"		},
 { 0x54190100,	"UFS_CIGAM"		},
+{ 0x565a4653,	"VZFS_SUPER_MAGIC"	},
 { 0x57ac6e9d,	"STACK_END_MAGIC"	},
+{ 0x58295829,	"ZSMALLOC_MAGIC"	},
+{ 0x58465342,	"XFS_SB_MAGIC"		},
 { 0x6165676c,	"PSTOREFS_MAGIC"	},
+{ 0x61756673,	"AUFS_SUPER_MAGIC"	},
 { 0x62646576,	"BDEVFS_MAGIC"		},
+{ 0x62656570,	"CONFIGFS_MAGIC"	},
 { 0x62656572,	"SYSFS_MAGIC"		},
 { 0x63677270,	"CGROUP2_SUPER_MAGIC"	},
 { 0x64626720,	"DEBUGFS_MAGIC"		},
+{ 0x65735543,	"FUSE_CTL_SUPER_MAGIC"	},
+{ 0x65735546,	"FUSE_SUPER_MAGIC"	},
 { 0x68191122,	"QNX6_SUPER_MAGIC"	},
+{ 0x6b414653,	"AFS_FS_MAGIC"		},
 { 0x6e736673,	"NSFS_MAGIC"		},
 { 0x73636673,	"SECURITYFS_MAGIC"	},
 { 0x73717368,	"SQUASHFS_MAGIC"	},
 { 0x73727279,	"BTRFS_TEST_MAGIC"	},
 { 0x73757245,	"CODA_SUPER_MAGIC"	},
+{ 0x7461636f,	"OCFS2_SUPER_MAGIC"	},
 { 0x74726163,	"TRACEFS_MAGIC"		},
 { 0x794c7630,	"OVERLAYFS_SUPER_MAGIC"	},
 { 0x858458f6,	"RAMFS_MAGIC"		},
 { 0x9123683e,	"BTRFS_SUPER_MAGIC"	},
 { 0x958458f6,	"HUGETLBFS_MAGIC"	},
+{ 0xa501fcf5,	"VXFS_SUPER_MAGIC"	},
 { 0xabba1974,	"XENFS_SUPER_MAGIC"	},
+{ 0xc97e8168,	"LOGFS_MAGIC"		},
 { 0xcafe4a11,	"BPF_FS_MAGIC"		},
 { 0xde5e81e4,	"EFIVARFS_MAGIC"	},
 { 0xf2f52010,	"F2FS_SUPER_MAGIC"	},
 { 0xf97cff8c,	"SELINUX_MAGIC"		},
 { 0xf995e849,	"HPFS_SUPER_MAGIC"	},
+{ 0xfe534d42,	"SMB2_MAGIC_NUMBER"	},
+{ 0xff534d42,	"CIFS_MAGIC_NUMBER"	},
 #unterminated
diff --git a/xlat/futexops.h b/xlat/futexops.h
index 536b162..4efc761 100644
--- a/xlat/futexops.h
+++ b/xlat/futexops.h
@@ -111,6 +111,12 @@
  XLAT(FUTEX_WAKE_BITSET_PRIVATE),
  XLAT(FUTEX_WAIT_REQUEUE_PI_PRIVATE),
  XLAT(FUTEX_CMP_REQUEUE_PI_PRIVATE),
+#if defined(FUTEX_WAIT) || (defined(HAVE_DECL_FUTEX_WAIT) && HAVE_DECL_FUTEX_WAIT)
+  XLAT(FUTEX_WAIT|FUTEX_CLOCK_REALTIME),
+#endif
+#if defined(FUTEX_WAIT_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAIT_PRIVATE) && HAVE_DECL_FUTEX_WAIT_PRIVATE)
+  XLAT(FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME),
+#endif
 #if defined(FUTEX_WAIT_BITSET) || (defined(HAVE_DECL_FUTEX_WAIT_BITSET) && HAVE_DECL_FUTEX_WAIT_BITSET)
   XLAT(FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME),
 #endif
diff --git a/xlat/futexops.in b/xlat/futexops.in
index 3372673..3e589ab 100644
--- a/xlat/futexops.in
+++ b/xlat/futexops.in
@@ -24,6 +24,8 @@
 FUTEX_WAKE_BITSET_PRIVATE	(FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG)
 FUTEX_WAIT_REQUEUE_PI_PRIVATE	(FUTEX_WAIT_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
 FUTEX_CMP_REQUEUE_PI_PRIVATE	(FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
+FUTEX_WAIT|FUTEX_CLOCK_REALTIME
+FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME
 FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
 FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME
 FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME
diff --git a/xlat/gen.sh b/xlat/gen.sh
index cf78c47..ec63280 100755
--- a/xlat/gen.sh
+++ b/xlat/gen.sh
@@ -44,11 +44,11 @@
 
 	local val
 	val="$(printf %s "$line" |
-		sed -n 's/^\([^[:space:]]\+\).*$/\1/p')"
+		sed -r -n 's/^([^[:space:]]+).*$/\1/p')"
 
 	local def
 	def="$(printf %s "${line}" |
-		sed -n 's/^[^[:space:]]\+[[:space:]]\+\([^[:space:]].*\)$/\1/p')"
+		sed -r -n 's/^[^[:space:]]+[[:space:]]+([^[:space:]].*)$/\1/p')"
 
 	if [ -n "$def" ]; then
 		cat <<-EOF
@@ -89,10 +89,10 @@
 	local line val m def xlat
 	line="$1"; shift
 
-	val="$(printf %s "${line}" | sed -n 's/^\([^[:space:]]\+\).*$/\1/p')"
+	val="$(printf %s "${line}" | sed -r -n 's/^([^[:space:]]+).*$/\1/p')"
 	m="${val%%|*}"
 	def="$(printf %s "${line}" |
-	       sed -n 's/^[^[:space:]]\+[[:space:]]\+\([^[:space:]].*\)$/\1/p')"
+	       sed -r -n 's/^[^[:space:]]+[[:space:]]+([^[:space:]].*)$/\1/p')"
 
 	if [ "${m}" = "${m#1<<}" ]; then
 		xlat="$(print_xlat "${val}")"
diff --git a/xlat/kexec_arch_values.h b/xlat/kexec_arch_values.h
index 1850d94..537ba4b 100644
--- a/xlat/kexec_arch_values.h
+++ b/xlat/kexec_arch_values.h
@@ -35,6 +35,9 @@
 #if !(defined(KEXEC_ARCH_MIPS) || (defined(HAVE_DECL_KEXEC_ARCH_MIPS) && HAVE_DECL_KEXEC_ARCH_MIPS))
 # define KEXEC_ARCH_MIPS ( 8 << 16)
 #endif
+#if !(defined(KEXEC_ARCH_AARCH64) || (defined(HAVE_DECL_KEXEC_ARCH_AARCH64) && HAVE_DECL_KEXEC_ARCH_AARCH64))
+# define KEXEC_ARCH_AARCH64 (183 << 16)
+#endif
 
 #ifdef IN_MPERS
 
@@ -56,6 +59,7 @@
  XLAT(KEXEC_ARCH_SH),
  XLAT(KEXEC_ARCH_MIPS_LE),
  XLAT(KEXEC_ARCH_MIPS),
+ XLAT(KEXEC_ARCH_AARCH64),
  XLAT_END
 };
 
diff --git a/xlat/kexec_arch_values.in b/xlat/kexec_arch_values.in
index 66d25bf..c56e8eb 100644
--- a/xlat/kexec_arch_values.in
+++ b/xlat/kexec_arch_values.in
@@ -10,3 +10,4 @@
 KEXEC_ARCH_SH      (42 << 16)
 KEXEC_ARCH_MIPS_LE (10 << 16)
 KEXEC_ARCH_MIPS    ( 8 << 16)
+KEXEC_ARCH_AARCH64 (183 << 16)
diff --git a/xlat/ptrace_cmds.h b/xlat/ptrace_cmds.h
index 0a8e0f0..ee9ebe2 100644
--- a/xlat/ptrace_cmds.h
+++ b/xlat/ptrace_cmds.h
@@ -277,6 +277,18 @@
 #if defined(PTRACE_SETFPAREGS) || (defined(HAVE_DECL_PTRACE_SETFPAREGS) && HAVE_DECL_PTRACE_SETFPAREGS)
   XLAT(PTRACE_SETFPAREGS),
 #endif
+#if defined(PTRACE_GETREGS64) || (defined(HAVE_DECL_PTRACE_GETREGS64) && HAVE_DECL_PTRACE_GETREGS64)
+  XLAT(PTRACE_GETREGS64),
+#endif
+#if defined(PTRACE_SETREGS64) || (defined(HAVE_DECL_PTRACE_SETREGS64) && HAVE_DECL_PTRACE_SETREGS64)
+  XLAT(PTRACE_SETREGS64),
+#endif
+#if defined(PTRACE_GETFPREGS64) || (defined(HAVE_DECL_PTRACE_GETFPREGS64) && HAVE_DECL_PTRACE_GETFPREGS64)
+  XLAT(PTRACE_GETFPREGS64),
+#endif
+#if defined(PTRACE_SETFPREGS64) || (defined(HAVE_DECL_PTRACE_SETFPREGS64) && HAVE_DECL_PTRACE_SETFPREGS64)
+  XLAT(PTRACE_SETFPREGS64),
+#endif
 /* x86 */
 #if defined(PTRACE_ARCH_PRCTL) || (defined(HAVE_DECL_PTRACE_ARCH_PRCTL) && HAVE_DECL_PTRACE_ARCH_PRCTL)
   XLAT(PTRACE_ARCH_PRCTL),
diff --git a/xlat/ptrace_cmds.in b/xlat/ptrace_cmds.in
index 5e4da83..525494d 100644
--- a/xlat/ptrace_cmds.in
+++ b/xlat/ptrace_cmds.in
@@ -93,6 +93,10 @@
 PTRACE_WRITETEXT
 PTRACE_GETFPAREGS
 PTRACE_SETFPAREGS
+PTRACE_GETREGS64
+PTRACE_SETREGS64
+PTRACE_GETFPREGS64
+PTRACE_SETFPREGS64
 /* x86 */
 PTRACE_ARCH_PRCTL
 PTRACE_SYSEMU
diff --git a/xlat/sa_handler_values.h b/xlat/sa_handler_values.h
new file mode 100644
index 0000000..3d7da04
--- /dev/null
+++ b/xlat/sa_handler_values.h
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sa_handler_values.in; do not edit. */
+
+#ifdef IN_MPERS
+
+# error static const struct xlat sa_handler_values in mpers mode
+
+#else
+
+static
+const struct xlat sa_handler_values[] = {
+#if defined(SIG_ERR) || (defined(HAVE_DECL_SIG_ERR) && HAVE_DECL_SIG_ERR)
+  XLAT_TYPE(unsigned long, SIG_ERR),
+#endif
+#if defined(SIG_DFL) || (defined(HAVE_DECL_SIG_DFL) && HAVE_DECL_SIG_DFL)
+  XLAT_TYPE(unsigned long, SIG_DFL),
+#endif
+#if defined(SIG_IGN) || (defined(HAVE_DECL_SIG_IGN) && HAVE_DECL_SIG_IGN)
+  XLAT_TYPE(unsigned long, SIG_IGN),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/sa_handler_values.in b/xlat/sa_handler_values.in
new file mode 100644
index 0000000..e907611
--- /dev/null
+++ b/xlat/sa_handler_values.in
@@ -0,0 +1,4 @@
+#val_type unsigned long
+SIG_ERR
+SIG_DFL
+SIG_IGN
diff --git a/xlat/socksctpoptions.h b/xlat/socksctpoptions.h
index 7aa20db..cb34b9b 100644
--- a/xlat/socksctpoptions.h
+++ b/xlat/socksctpoptions.h
@@ -153,6 +153,15 @@
 #if defined(SCTP_GET_ASSOC_STATS) || (defined(HAVE_DECL_SCTP_GET_ASSOC_STATS) && HAVE_DECL_SCTP_GET_ASSOC_STATS)
   XLAT(SCTP_GET_ASSOC_STATS),
 #endif
+#if defined(SCTP_PR_SUPPORTED) || (defined(HAVE_DECL_SCTP_PR_SUPPORTED) && HAVE_DECL_SCTP_PR_SUPPORTED)
+  XLAT(SCTP_PR_SUPPORTED),
+#endif
+#if defined(SCTP_DEFAULT_PRINFO) || (defined(HAVE_DECL_SCTP_DEFAULT_PRINFO) && HAVE_DECL_SCTP_DEFAULT_PRINFO)
+  XLAT(SCTP_DEFAULT_PRINFO),
+#endif
+#if defined(SCTP_PR_ASSOC_STATUS) || (defined(HAVE_DECL_SCTP_PR_ASSOC_STATUS) && HAVE_DECL_SCTP_PR_ASSOC_STATUS)
+  XLAT(SCTP_PR_ASSOC_STATUS),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/socksctpoptions.in b/xlat/socksctpoptions.in
index 8af43b7..fa967a2 100644
--- a/xlat/socksctpoptions.in
+++ b/xlat/socksctpoptions.in
@@ -47,3 +47,6 @@
 SCTP_SOCKOPT_CONNECTX
 SCTP_SOCKOPT_CONNECTX3
 SCTP_GET_ASSOC_STATS
+SCTP_PR_SUPPORTED
+SCTP_DEFAULT_PRINFO
+SCTP_PR_ASSOC_STATUS
diff --git a/xlat/socktcpoptions.h b/xlat/socktcpoptions.h
index 23f0770..7dd5923 100644
--- a/xlat/socktcpoptions.h
+++ b/xlat/socktcpoptions.h
@@ -92,6 +92,9 @@
 #if defined(TCP_SAVED_SYN) || (defined(HAVE_DECL_TCP_SAVED_SYN) && HAVE_DECL_TCP_SAVED_SYN)
   XLAT(TCP_SAVED_SYN),
 #endif
+#if defined(TCP_REPAIR_WINDOW) || (defined(HAVE_DECL_TCP_REPAIR_WINDOW) && HAVE_DECL_TCP_REPAIR_WINDOW)
+  XLAT(TCP_REPAIR_WINDOW),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/socktcpoptions.in b/xlat/socktcpoptions.in
index b454e10..89bbd7e 100644
--- a/xlat/socktcpoptions.in
+++ b/xlat/socktcpoptions.in
@@ -26,3 +26,4 @@
 TCP_CC_INFO
 TCP_SAVE_SYN
 TCP_SAVED_SYN
+TCP_REPAIR_WINDOW
