diff --git a/.strace.1.in.date b/.strace.1.in.date
new file mode 100644
index 0000000..d749583
--- /dev/null
+++ b/.strace.1.in.date
@@ -0,0 +1 @@
+2018-02-11
diff --git a/.tarball-version b/.tarball-version
new file mode 100644
index 0000000..1fda809
--- /dev/null
+++ b/.tarball-version
@@ -0,0 +1 @@
+4.21
diff --git a/.version b/.version
new file mode 100644
index 0000000..1fda809
--- /dev/null
+++ b/.version
@@ -0,0 +1 @@
+4.21
diff --git a/.year b/.year
new file mode 100644
index 0000000..b39a36a
--- /dev/null
+++ b/.year
@@ -0,0 +1 @@
+2018
diff --git a/Android.bp b/Android.bp
index 9474ba8..9cd55f5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -52,6 +52,7 @@
         "fchownat.c",
         "fcntl.c",
         "fetch_bpf_fprog.c",
+        "fetch_indirect_syscall_args.c",
         "fetch_struct_flock.c",
         "fetch_struct_keyctl_kdf_params.c",
         "fetch_struct_mmsghdr.c",
@@ -69,6 +70,7 @@
         "futex.c",
         "getcpu.c",
         "getcwd.c",
+        "getpagesize.c",
         "getrandom.c",
         "get_robust_list.c",
         "hdio.c",
@@ -88,6 +90,7 @@
         "kcmp.c",
         "kexec.c",
         "keyctl.c",
+        "kvm.c",
         "ldt.c",
         "link.c",
         "listen.c",
diff --git a/CREDITS b/CREDITS
index f2e099a..7f77138 100644
--- a/CREDITS
+++ b/CREDITS
@@ -40,6 +40,7 @@
 	Cai Fei <caifei@cn.fujitsu.com>
 	Carlos O'Donell <carlos@systemhalted.org>
 	Carmelo Amoroso <carmelo.amoroso@st.com>
+	Chen Jingpiao <chenjingpiao@gmail.com>
 	Cheolung Lee <chpie@grayhash.com>
 	Chris Dearman <chris.dearman@imgtec.com>
 	Chris Metcalf <cmetcalf@tilera.com>
@@ -48,6 +49,7 @@
 	Christian Svensson <blue@cmd.nu>
 	Christopher Covington <cov@codeaurora.org>
 	D.J. Barrow <djbarrow@de.ibm.com>
+	DJ Delorie <dj@redhat.com>
 	Damien Profeta <damien.profeta@amadeus.com>
 	Damir Shayhutdinov <damir@altlinux.org>
 	Daniel P. Berrange <berrange@redhat.com>
@@ -66,7 +68,7 @@
 	Edgar E. Iglesias <edgar.iglesias@gmail.com>
 	Edgar Kaziakhmedov <edgar.kaziakhmedov@virtuozzo.com>
 	Elliott Hughes <enh@google.com>
-	Elvira Khabirova <lineprinter0@gmail.com>
+	Elvira Khabirova <lineprinter@altlinux.org>
 	Erik Johansson <erik@ejohansson.se>
 	Etienne Gemsa <etienne.gemsa@lse.epita.fr>
 	Eugene Syromyatnikov <evgsyr@gmail.com>
@@ -89,6 +91,7 @@
 	Greg Banks <gbanks@pocketpenguins.com>
 	H.J. Lu <hongjiu.lu@intel.com>
 	Harald van Dijk <truedfx@gentoo.org>
+	Harsha Sharma <harshasharmaiitr@gmail.com>
 	Heiko Carstens <heiko.carstens@de.ibm.com>
 	Helge Deller <deller@gmx.de>
 	Henrik Storner <storner@osiris.ping.dk>
@@ -104,7 +107,6 @@
 	JayRJoshi <jay.r.joshi100@gmail.com>
 	Jeff Mahoney <jeffm@suse.com>
 	Jian Zhen <zhenjl@gmail.com>
-	JingPiao Chen <chenjingpiao@gmail.com>
 	Jiri Slaby <jirislaby@gmail.com>
 	Joakim Bech <joakim.bech@linaro.org>
 	Joe Ilacqua <spike@world.std.com>
@@ -184,6 +186,7 @@
 	Robin Hack <hack.robin@gmail.com>
 	Roland Borde <bo@uebemc.siemens.de>
 	Roland McGrath <roland@redhat.com>
+	Rolf Eike Beer <eb@emlix.com>
 	Romain Naour <romain.naour@smile.fr>
 	Sami Farin <safari@u.safari.iki.fi>
 	Sandhya Bankar <bankarsandhya512@gmail.com>
@@ -215,6 +218,7 @@
 	Vicente Olivert Riera <vincent@gentoo.org>
 	Victor Krapivensky <krapivenskiy.va@phystech.edu>
 	Vineet Gupta <Vineet.Gupta1@synopsys.com>
+	Vitaly Chaykovsky <mgspeker@gmail.com>
 	Wang Chao <wang.chao@cn.fujitsu.com>
 	Weichuan Yan <wchyan@marvell.com>
 	Wichert Akkerman <wichert@deephackmode.org>
diff --git a/ChangeLog b/ChangeLog
index 988b70b..ca54bd7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,3258 @@
+2018-02-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Prepare for 4.21 release.
+	* NEWS: Update for 4.21 release.
+
+	Update copyright headers.
+	Headers updated automatically using maint/update_copyright_years.sh
+	script.
+
+2018-02-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Remove old and unused maintenance scripts.
+	Firewell, last witnesses of bygone era.
+
+	* linux/sparc/gen.pl: Remove.
+	* linux/x86_64/gentab.pl: Likewise.
+	* xlate.el: Likewise.
+	* Makefile.am (EXTRA_DIST): Remove them.
+
+	Suggested-by: Elvira Khabirova <lineprinter@altlinux.org>
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-02-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Consistently use MAX_ERRNO_VALUE.
+	* filter_qualify.c (parse_inject_token): Replace 4095
+	with MAX_ERRNO_VALUE.
+	* negated_errno.h (is_negated_errno): Likewise.  Remove redundant
+	comment.
+
+	Export SIZEOF_LONG and SIZEOF_KERNEL_LONG_T to tests.
+	* configure.ac (AC_SUBST): Add SIZEOF_LONG and SIZEOF_KERNEL_LONG_T.
+	* tests/Makefile.am (SIZEOF_LONG, SIZEOF_KERNEL_LONG_T): New variables.
+	(AM_TEST_LOG_FLAGS): Pass them.
+	* bootstrap: Substitute them.
+
+2018-02-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: avoid ioctl_kvm_run test failure when built with gcc -O0.
+	When built with -O0, gcc (rightfully) generates function prologue, which
+	results in writing %rbp to the stack, causing premature KVM_EXIT_MMIO.
+	It could be possible to avoid such problems by "naked" attribute but,
+	unfortunately, the latter is not available on x86 with older GCC.
+	A trick suggested in [1] is used instead: assembly is moved
+	to the global scope.
+
+	[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50242#c3
+
+	* tests/ioctl_kvm_run.c (code): Remove function.
+	Add globally scoped __asm__ with the function code and its size.
+	(code, code_size): New extern symbols declarations.
+	(run_kvm): Remove code_size definition and initialization.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-02-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/ioctl_kvm_run.c: add KVM_EXIT_MMIO diagnostics.
+	As it has proven itself useful.
+
+	* tests/ioctl_kvm_run.c (run_kvm) <case KVM_EXIT_MMIO:>: Fail
+	on unexpected KVM_EXIT_MMIO, providing relevant diagnostics.
+
+2018-02-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add compatibility layer for accept call.
+	Recent glibc (since version 2.26) uses accept4 syscall for implementing
+	accept call on sparc.  Unfortunately, it's impossible to simply fall
+	back on raw syscall as it had not been wired up until linux commit
+	v4.4-rc8~4^2~1.
+
+	* tests/accept_compat.h: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/net-y-unix.c: Include accept_compat.h, use do_accept()
+	instead of accept() calls.
+	* tests/net-yy-inet.c: Likewise.
+	* tests/net-yy-unix.c: Likewise.
+	* tests/net.expected: Allow accept4.
+
+2018-02-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+	debian: build strace-udeb separately.
+	* debian/rules (extra_build_targets): Add build-udeb-stamp.
+	(build-udeb/Makefile): New rule.
+	(clean): Remove build-udeb.
+	* debian/strace-udeb.install: Update.
+
+	Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=826223
+
+2018-02-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Enable symbol demangling in deb- and rpm-driven builds.
+	* debian/control (Build-Depends) [amd64]: Add libiberty-dev.
+	* strace.spec.in (buildrequires_libunwind_devel): Add binutils-devel.
+
+2018-02-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+	debian: re-enable -k option on x86_64.
+	This partially reverts commit v4.13~177.
+
+	* debian/control (Build-Depends) [amd64]: Add libunwind-dev.
+
+2018-02-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Add "strace -V" output to build log.
+	* strace.spec.in (%check): Print "strace -V" output before
+	running the test suite.
+	* debian/rules (%-stamp): Likewise.
+
+2018-02-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update NT_* constants.
+	* xlat/nt_descriptor_types.in (NT_PPC_PKEY): New constant introduced
+	by linux kernel commit v4.16-rc1~93^2~72.
+
+	Update the list of PKEY_* constants.
+	* xlat/pkey_access.in (PKEY_DISABLE_EXECUTE): New constant introduced
+	by linux kernel commit v4.16-rc1~93^2~85.
+	* tests/pkey_alloc.c: Update expected output.
+	* NEWS: Mention it.
+
+	powerpc, powerpc64: wire up pkey_* syscalls.
+	* linux/powerpc/syscallent.h [384..386]: Add pkey_alloc,
+	pkey_free, and pkey_mprotect syscalls introduced by linux kernel
+	commits v4.16-rc1~93^2~70 and v4.16-rc1~93^2~69, respectively.
+	* linux/powerpc64/syscallent.h: Likewise.
+	* NEWS: Mention it.
+
+	Update NEWS.
+
+2018-02-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/ia64: remove IA-32 mode support.
+	There is no compat support in strace and there are no systems
+	within reach that would allow to test it.
+
+	* linux/ia64/arch_regs.c (IA64_PSR_IS, ia64_ia32mode): Remove.
+	* linux/ia64/get_error.c (get_error): Remove ia64_ia32mode branch.
+	* linux/ia64/get_scno.c (arch_get_scno): Likewise.
+	* linux/ia64/get_syscall_args.c (get_syscall_args): Likewise.
+	* linux/ia64/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/ia64/set_scno.c (arch_set_scno): Likewise.
+
+2018-02-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: parse return code second time after injecting.
+	In order to have the same view as tracee has, with regards to
+	"never fail" syscalls.
+
+	* syscall.c (tamper_with_syscall_exiting): Call get_error after the
+	return value tampering to re-initialise u_rval and u_error fields
+	of struct tcb.
+
+2018-02-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sparc: mark as an architecture that has a dedicated error register.
+	* linux/sparc/arch_defs_.h (HAVE_ARCH_DEDICATED_ERR_REG): New macro,
+	define to 1.
+
+	strace.1.in: ffix.
+
+2018-02-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Include <sys/ptrace.h> early.
+	Include "ptrace.h" before any header that can include <signal.h>
+	because on some architectures the latter may include <asm/sigcontext.h>
+	which in turn may include <asm/ptrace.h> with potentially devastating
+	effect on <sys/ptrace.h>.
+
+	* process.c: Include "ptrace.h" before "regs.h".
+	* rt_sigframe.c: Likewise.
+	* sigreturn.c: Include "ptrace.h" before "nsig.h".
+	* syscall.c: Likewise.
+	* wait.c: Include "ptrace.h" before <sys/wait.h>.
+	* strace.c: Include "ptrace.h" before <signal.h>.
+	* tests/ptrace.c: Likewise.
+	* tests/test_ucopy.c: Include <sys/ptrace.h> before <signal.h>.
+
+2018-02-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Include <limits.h> instead of <sys/param.h>
+	Do not include <sys/param.h> unnecessarily as it includes <signal.h>.
+
+	* pathtrace.c: Include <limits.h> instead of <sys/param.h>.
+	* strace.c: Likewise.
+	* syscall.c: Likewise.
+	* util.c: Likewise.
+	* tests/getcwd.c: Likewise.
+	* tests/group_req.c: Likewise.
+	* tests/inode_of_sockfd.c: Likewise.
+	* tests/ip_mreq.c: Likewise.
+	* tests/printpath-umovestr.c: Likewise.
+	* tests/qual_fault.c: Likewise.
+	* tests/test_printpath.c: Likewise.
+	* tests/umovestr3.c: Likewise.
+	* tests/net-y-unix.c: Do not include <sys/param.h>.
+	* tests/net-yy-unix.c: Likewise.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	basic_filters.c: introduce scno_by_name.
+	As it will be used elsewhere.
+
+	* basic_filters.c (scno_by_name): New function.
+	(qualify_syscall_name): Use it.
+	* defs.h (scno_by_name): New declaration.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xstring.h: rephrase xappendstr description a bit.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat.c: return NULL in sprintflags if there are no flags.
+	Otherwise the auxstr is rather ugly at times.
+
+	* xlat.c (sprintflags): Return NULL if no flags were printed.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Change type of injected rval to kernel_long_t.
+	* defs.h (struct inject_data): Change type of rval field to
+	kernel_ulong_t.
+	* filter_qualify.c (parse_inject_token): Use string_to_kulong instead of
+	string_to_uint for rval parsing.  Warn if retval is clipped in compat
+	personality.
+
+	Mark architectures that indicate syscall error in a dedicated register.
+	* linux/alpha/arch_defs_.h (HAVE_ARCH_DEDICATED_ERR_REG): New macro,
+	define to 1.
+	* linux/ia64/arch_defs_.h: Likewise.
+	* linux/mips/arch_defs_.h: Likewise.
+	* linux/powerpc/arch_defs_.h: Likewise.
+	* linux/powerpc64/arch_defs_.h: Likewise.
+	* linux/sparc64/arch_defs_.h: Likewise.
+	* linux/arch_defs_.h [!HAVE_ARCH_DEDICATED_ERR_REG]
+	(HAVE_ARCH_DEDICATED_ERR_REG): New macro, define to 0.
+	* linux/nios2/arch_defs_.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Make string_to_uint_ex more universal.
+	And add support for reading of various types.
+
+	* string_to_uint.c (string_to_uint_ex): Change to work with long long.
+	(string_to_uint): Move it...
+	* string_to_uint.h (string_to_uint): ...here.
+	(string_to_uint_upto): Accept long long as max_val, return long long.
+	(string_to_ulong, string_to_kulong, string_to_ulonglong): New functions,
+	for completeness.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add pure syscall flag.
+	* basic_filters.c (lookup_class) <syscall_class>: Add "%pure" for
+	TRACE_PURE.
+	* sysent.h (TRACE_PURE): New syscall flag.
+	* sysent_shorthand_defs.h (PU): New shorthand macro.
+	* linux/32/syscallent.h ([172], [173], [174], [175], [176], [177],
+	[178]): Add PU flag to getpid, getppid, getuid, geteuid, getgid,
+	getegid, gettid syscalls.
+	* linux/64/syscallent.h ([172], [173], [174], [175], [176], [177],
+	[178]): Add PU flag to getpid, getppid, getuid, geteuid, getgid,
+	getegid, gettid syscalls.
+	* linux/aarch64/syscallent.h ([1060]): Add PU flag to getpgrp syscalls.
+	* linux/alpha/syscallent.h ([20], [24], [47], [63], [64], [89],
+	[378]): Add PU flag to getxpid, getxuid, getxgid, getpgrp, getpagesize,
+	getdtablesize, gettid syscalls.
+	* linux/arc/syscallent.h ([246]): Add PU flag to arc_gettls syscalls.
+	* linux/arm/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[199], [200], [201], [202], [224], [ARM_FIRST_SHUFFLED_SYSCALL+1+6]):
+	Add PU flag to getpid, getuid, getgid, geteuid, getegid, getppid,
+	getpgrp, getuid32, getgid32, geteuid32, getegid32, gettid, get_tls
+	syscalls.
+	* linux/avr32/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[176]): Add PU flag to getpid, getuid, getgid, geteuid, getegid,
+	getppid, getpgrp, gettid syscalls.
+	* linux/bfin/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[199], [200], [201], [202], [224]): Add PU flag to getpid, getuid,
+	getgid, geteuid, getegid, getppid, getpgrp, getuid32, getgid32,
+	geteuid32, getegid32, gettid syscalls.
+	* linux/hppa/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[206]): Add PU flag to getpid, getuid, getgid, geteuid, getegid,
+	getppid, getpgrp, gettid syscalls.
+	* linux/i386/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[199], [200], [201], [202], [224]): Add PU flag to getpid, getuid,
+	getgid, geteuid, getegid, getppid, getpgrp, getuid32, getgid32,
+	geteuid32, getegid32, gettid syscalls.
+	* linux/ia64/syscallent.h ([1041], [1042], [1046], [1047], [1062],
+	[1063], [1105], [1171]): Add PU flag to getpid, getppid, getuid,
+	geteuid, getgid, getegid, gettid, getpagesize syscalls.
+	* linux/m68k/syscallent.h ([20], [24], [47], [49], [50], [64],
+	[65], [166], [199], [200], [201], [202], [221], [333]): Add PU flag
+	to getpid, getuid, getgid, geteuid, getegid, getppid, getpgrp,
+	getpagesize, getuid32, getgid32, geteuid32, getegid32, gettid,
+	get_thread_area syscalls.
+	* linux/metag/syscallent.h ([248]): Add PU flag to metag_get_tls
+	syscalls.
+	* linux/microblaze/syscallent.h ([20], [24], [47], [49], [50], [64],
+	[65], [199], [200], [201], [202], [224]): Add PU flag to getpid,
+	getuid, getgid, geteuid, getegid, getppid, getpgrp, getuid32, getgid32,
+	geteuid32, getegid32, gettid syscalls.
+	* linux/powerpc64/syscallent.h ([20], [24], [47], [49], [50], [64],
+	[65], [207]): Add PU flag to getpid, getuid, getgid, geteuid, getegid,
+	getppid, getpgrp, gettid syscalls.
+	* linux/powerpc/syscallent.h ([20], [24], [47], [49], [50], [64],
+	[65], [207]): Add PU flag to getpid, getuid, getgid, geteuid, getegid,
+	getppid, getpgrp, gettid syscalls.
+	* linux/s390/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[199], [200], [201], [202], [236]): Add PU flag to getpid, getuid,
+	getgid, geteuid, getegid, getppid, getpgrp, getuid32, getgid32,
+	geteuid32, getegid32, gettid syscalls.
+	* linux/s390x/syscallent.h ([20], [64], [65], [199], [200], [201],
+	[202], [236]): Add PU flag to getpid, getppid, getpgrp, getuid,
+	getgid, geteuid, getegid, gettid syscalls.
+	* linux/sh64/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[199], [200], [201], [202], [252]): Add PU flag to getpid, getuid,
+	getgid, geteuid, getegid, getppid, getpgrp, getuid32, getgid32,
+	geteuid32, getegid32, gettid syscalls.
+	* linux/sh/syscallent.h ([20], [24], [47], [49], [50], [64], [65],
+	[199], [200], [201], [202], [224]): Add PU flag to getpid, getuid,
+	getgid, geteuid, getegid, getppid, getpgrp, getuid32, getgid32,
+	geteuid32, getegid32, gettid syscalls.
+	* linux/sparc64/syscallent.h ([20], [24], [47], [49], [50], [64], [81],
+	[143], [197], [340]): Add PU flag to getpid, getuid, getgid, geteuid,
+	getegid, getpagesize, getpgrp, gettid, getppid, kern_features syscalls.
+	* linux/sparc/syscallent.h ([20], [24], [44], [47], [49], [50], [53],
+	[64], [69], [70], [81], [143], [197], [340]): Add PU flag to getpid,
+	getuid, getuid32, getgid, geteuid, getegid, getgid32, getpagesize,
+	geteuid32, getegid32, getpgrp, gettid, getppid, kern_features syscalls.
+	* linux/x32/syscallent.h ([39], [102], [104], [107], [108], [110],
+	[111], [186]): Add PU flag to getpid, getuid, getgid, geteuid, getegid,
+	getppid, getpgrp, gettid syscalls.
+	* linux/x86_64/syscallent.h ([39], [102], [104], [107], [108], [110],
+	[111], [186]): Add PU flag to getpid, getuid, getgid, geteuid, getegid,
+	getppid, getpgrp, gettid syscalls.
+	* linux/xtensa/syscallent.h ([120], [127], [137], [139], [140], [141],
+	[150], [151]): Add PU flag to getpid, gettid, getuid, getgid, geteuid,
+	getegid, getppid, getpgrp syscalls.
+	* strace.1.in (.SS Filtering): Document it.
+	* NEWS: Mention it.
+
+	syscall.c: warn if tampering failed.
+
+	syscall.c: set errno if syscall is tampered.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/nsyscall-d.test: swap exp and log in diff calls.
+	In line with the rest of the tests.
+
+	* tests/nsyscalls-d.test: swap arguments of match_diff calls.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/arm/get_scno.c: use debug_msg.
+	* linux/arm/get_scno.c (arch_get_scno): replace if (debug_flag) {
+	error_msg() } with debug_msg() call.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Do not shuffle scno inside syscall_name.
+	This makes interface a bit irregular otherwise.
+
+	* defs.h (syscall_name): Clarify description.
+	* syscall.c (syscall_name): Do not call shuffle_scno.
+	* printsiginfo.c (print_si_info) <case SIGSYS>: Use shuffle_scno.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Handle very special __ARM_NR_-prefixed syscalls.
+	* linux/aarch64/nr_prefix.c: New file.
+	* linux/arm/nr_prefix.c: Likewise.
+	* linux/nr_prefix.c: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* printsiginfo.c: Include nr_prefix.c
+	(print_si_info): Use nr_prefix.
+
+	Make shuffle_scno globally available.
+	* syscall.c (shuffle_scno): Move the declaration...
+	* defs.h (shuffle_scno): ...here. Remove static qualifier.
+	* linux/aarch64/shuffle_scno.c (shuffle_scno): Remove static qualifier.
+	* linux/arm/shuffle_scno.c: Likewise.
+	* linux/shuffle_scno.c: Likewise.
+	* linux/x32/shuffle_scno.c: Likewise.
+	* linux/x86_64/shuffle_scno.c: Likewise.
+
+2018-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: use shuffle_scno in syscall_name.
+	syscall_name() is used only in printsiginfo.c:print_si_info currently,
+	and is supplied with raw syscall number (that's why it has this ugly
+	__X32_SYSCALL_BIT hack). But since it handled only __X32_SYSCALL_BIT and
+	not shuffle_scno(), it was broken on ARM.  Let's replace it with shuffle_scno
+	call, as it handles both the case of shuffled ARM syscalls and the
+	__X32_SYSCALL_BIT.
+
+	* syscall.c (syscall_name): Call shuffle_scno instead of custom
+	__X32_SYSCALL_BIT handling.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Use shuffle_scno for x32 syscall numbers.
+	This changes behaviour of printing of unknown syscall.
+
+	* linux/x32/shuffle_scno.c: New file.
+	* linux/x86_64/shuffle_scno.c: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* linux/x86_64/get_scno.c (arch_get_scno): Do not clear
+	__X32_SYSCALL_BIT.
+	* tests/nsyscalls.c: Update expected output.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Move shuffle_scno() invocation to get_scno.
+	* linux/aarch64/get_scno.c (arch_get_scno): Remove shuffle_scno call.
+	* linux/arm/get_scno.c (arch_get_scno): Remove shuffle_scno calls.
+	* syscall.c (get_scno): Call shuffle_scno after arch_get_scno.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Move shuffle_scno to arch-specific file.
+	While we are here, let's fix AArch64 by limiting scno shuffling
+	to compat personality only.
+
+	* syscall.c: Include shuffle_scno.c.
+	(shuffle_scno): Move it to a...
+	* linux/arm/shuffle_scno.c: New file.
+	* linux/aarch64/shuffle_scno.c: New file, define arm's shuffle_scno
+	as arm_shuffle_scno and call it only for personality 1.
+	* linux/shuffle_scno.c: New file, fallback trivial shuffle_scno
+	definition.
+	* Makefile.am (EXTRA_DIST): Add them.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Print unknown syscall number in hexadecimal.
+	* syscall.c (struct sysent_buf): Update buf field size.
+	(get_scno): Print unknown syscall number in hexadecimal form.
+	* tests/nsyscalls.c: Update expected output.
+	* strace.1.in: Document it.
+	* NEWS: Mention it.
+
+	tests/accept.c: call accept syscall directly, if available.
+	* tests/accept.c [__NR_accept && !TEST_SYSCALL_NAME]: Define a wrapper that
+	calls accept directly.
+	* tests/sockname.c [TEST_SYSCALL_STR]: Do not define TEST_SYSCALL_STR.
+
+	printsiginfo.c: add a comment about personality detection for SIGSYS.
+	Looks like it is not necessary, after all.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/x86_64/set_error.c: update eax for compat personality.
+	Since this is where get_error gets the return value from in the compat case.
+
+	linux/x86_64/set_error.c (set_error, set_success): Update i386_regs.eax
+	if tracee is in compat personality.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Mark various arch-specific syscalls with SYSCALL_NEVER_FAILS.
+	* linux/alpha/syscallent.h (getpagesize, getdtablesize): Add NF flag.
+	* linux/arc/syscallent.h (arc_gettls): Likewise.
+	* linux/arm/syscallent.h (get_tls): Likewise.
+	* linux/ia64/syscallent.h (getpagesize): Likewise.
+	* linux/m68k/syscallent.h (getpagesize, get_thread_area): Likewise.
+	* linux/sparc/syscallent.h (getpagesize): Likewise.
+	* linux/sparc64/syscallent.h (getpagesize): Likewise.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add SYSCALL_NEVER_FAILS flag to getpgrp.
+	As glibc, at least, treats it this way.
+
+	* linux/aarch64/syscallent.h (getpgrp): Add NF flag.
+	* linux/alpha/syscallent.h: Likewise.
+	* linux/arm/syscallent.h: Likewise.
+	* linux/avr32/syscallent.h: Likewise.
+	* linux/bfin/syscallent.h: Likewise.
+	* linux/hppa/syscallent.h: Likewise.
+	* linux/i386/syscallent.h: Likewise.
+	* linux/m68k/syscallent.h: Likewise.
+	* linux/microblaze/syscallent.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/powerpc64/syscallent.h: Likewise.
+	* linux/s390/syscallent.h: Likewise.
+	* linux/s390x/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/xtensa/syscallent.h: Likewise.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/x86_64/get_error.c: do not sign-extend if no error happened.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/membarrier.c: fix expected output on nohz_full systems.
+	If nohz_full is enabled, MEMBARRIER_CMD_GLOBAL is not available.
+
+	* tests/membarrier.c: check availability of MEMBARRIER_CMD_GLOBAL
+	separately.
+
+2018-02-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update MEMBARRIER_CMD_* constants.
+	* xlat/membarrier_cmds.in: Add new constants, rename
+	MEMBARRIER_CMD_SHARED to MEMBARRIER_CMD_GLOBAL.
+	* NEWS: Mention this.
+	* tests/membarrier.c (main): Update expected output.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-02-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	perf.c: print group_fd argument of perf_event_open syscall as fd.
+	* perf.c (SYS_FUNC(perf_event_open)): Print 4th argument using printfd.
+
+	syscall.c: print higher bits of syscall return value on x32 personality.
+	* syscall.c (syscall_exiting_trace): Check for current_klongsize instead
+	of current_wordsize to determine the size of tcp->u_rval.
+
+	strace.1.in: history update.
+	strace.1.in (.SH HISTORY): Some amendments based on
+	https://github.com/strace/strace-talks/blob/master/2012-ossdevconf-obninsk-strace_from_upstream_PoV/ossdevconf_2012-slides-strace_from_upstream_PoV.tex
+
+	strace.1.in: minor changes.
+	* strace.1.in (.SH DESCRIPTION): s/a passion/passion/,
+	s/Here the/Here, the/, s/Where traditional/Where the traditional/,
+	s/output has proven/output is proven/, s/In all cases/In most cases,/¸
+	embolden st_mode, lstat, SIGCHLD, and SIGTTOU mentions,
+	s/In some cases /In some cases, /
+	(.SS Output format) <-o>: de-italicize dot in "filename.pid", convert
+	the sentence's voice to passive, some other rephrasing.  Mention
+	incompatibility of output piping with -ff mode.
+	(.SS Output options) <-t>: s/time of day/wall clock time/.
+	(.SS Statistics) <-c>: Remove "on Linux" mention, -F option mention.
+
+	README.md: add information about git repository location.
+	* README.md: Mention URLs for SourceForge, GitHub, and GitLab
+	repositories.
+
+2018-02-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rewrite net-accept-connect.c without strncpy.
+	gcc8 -Wall -Werror rejects our method of struct sockaddr_un.sun_path
+	initialization because the field lacks __nonstring__ attribute.
+
+	As we calculate the length of the string being copied anyway,
+	workaround this gcc+glibc bug by changing the code to use this
+	pre-calculated length and get rid of strncpy completely.
+
+	* tests/net-accept-connect.c (main): Use memcpy to initialize sun_path.
+
+2018-02-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Use kernel's fcntl.h header instead of libc's for open_mode_flags.
+	As definitions of O_* macros provided by various libc implementations
+	are usually less reliable than those provided by kernel headers, switch
+	to use kernel's fcntl.h header.
+
+	* open.c: Include <asm/fcntl.h> instead of <fcntl.h>.  Remove
+	O_LARGEFILE fallback definitions assuming that the kernel headers
+	provide them.
+	* xlat/open_mode_flags.in: Add __O_SYNC after O_SYNC.  Add O_TMPFILE
+	and __O_TMPFILE before O_DIRECTORY.  Remove "O_TMPFILE & ~O_DIRECTORY".
+	* tests/open.c: Include <asm/fcntl.h> instead of <fcntl.h>.  Remove
+	workarounds for libc O_TMPFILE implementations.
+	* tests/openat.c: Include <asm/fcntl.h> instead of <fcntl.h>.
+	(test_mode_flag): New function.
+	(main): Use it to check decoding of all access modes and file flags.
+	* tests/gen_tests.in (openat): Add -a option.
+
+	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2018-02-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: update TCP_* constants.
+	* xlat/socktcpoptions.in: Add TCP_FASTOPEN_KEY and
+	TCP_FASTOPEN_NO_COOKIE introduced by linux kernel commits
+	v4.15-rc1~84^2~387 and v4.15-rc1~84^2~339, respectively.
+	* NEWS: Mention this.
+
+	xlat: update IPV6_* constants.
+	* xlat/sockipv6options.in: Add IPV6_FREEBIND introduced by linux kernel
+	commit v4.15-rc1~84^2~601.
+	* NEWS: Mention this.
+
+	xlat: update MAP_* constants.
+	* xlat/mmap_flags.in: Add MAP_SHARED_VALIDATE and MAP_SYNC introduced
+	by linux kernel commits v4.15-rc1~71^2^2~23 and v4.15-rc1~71^2^2~12,
+	respectively.
+	* NEWS: Mention this.
+
+2018-02-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: avoid triggering -Wstringop-truncation in ioctl_dm.c.
+	* tests/ioctl_dm.c: Replace strncpy calls with memcpy as the character
+	arrays being copied are not C strings.
+
+	Makefile.am: minor EXTRA_DIST formatting changes.
+
+	Move large file-related wrappers to a separate header.
+	* strace.c [_LARGEFILE64_SOURCE]: Move the definitions under it to a...
+	* largefile_wrappers.h: ... new file.
+	* Makefile.am (strace_SOURCES): Add it.
+
+2018-01-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace.1: fix wording about setuid installation.
+	* strace.1.in (SETUID INSTALLATION): Fix wording.
+
+	Closes: https://github.com/strace/strace/issues/24
+
+2018-01-29  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+	Add KVM_PPC_GET_CPU_CHAR ioctl definition from linux v4.15.
+	* linux/powerpc/ioctls_arch0.h: Update from linux v4.15
+	using ioctls_gen.sh.
+
+2018-01-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update NEWS.
+
+	tests: check s390_pci_mmio_read and s390_pci_mmio_write decoders.
+	* tests/s390_pci_mmio_read_write.c: New file.
+	* tests/.gitignore: Add s390_pci_mmio_read_write.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (s390_pci_mmio_read_write): New test.
+
+	Introduce s390_pci_mmio_read, s390_pci_mmio_write system call decoders.
+	* linux/s390/syscallent.h ([352]): Change decoder to s390_pci_mmio_write.
+	([353]): Change decoder to s390_pci_mmio_read.
+	* linux/s390x/syscallent.h: Likewise.
+	* s390.c (SYS_FUNC(s390_pci_mmio_write), SYS_FUNC(s390_pci_mmio_read)):
+	New function.
+
+	tests: check s390_runtime_instr system call decoder.
+	* tests/s390_runtime_instr.c: New file.
+	* tests/.gitignore: Add s390_runtime_instr.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (s390_runtime_instr): New test.
+
+	Introduce s390_runtime_instr system call decoder.
+	* linux/s390/syscallent.h ([342]): Change decoder to s390_runtime_instr.
+	* linux/s390x/syscallent.h: Likewise.
+	* s390.c (SYS_FUNC(s390_runtime_instr)): New function.
+	* xlat/s390_runtime_instr_commands.in: New file.
+
+	tests: check s390_guarded_storage system call decoder.
+	* configure.ac (AC_CHECK_HEADERS): Add asm/guarded_storage.h.
+	* tests/s390_guarded_storage-v.c: New file.
+	* tests/s390_guarded_storage.c: Likewise.
+	* tests/.gitignore: Add s390_guarded_storage, s390_guarded_storage-v.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (s390_guarded_storage, s390_guarded_storage-v):
+	New tests.
+
+	Introduce s390_guarded_storage system call decoder.
+	* linux/s390/syscallent.h ([378]): Change decoder to s390_guarded_storage.
+	* linux/s390x/syscallent.h: Likewise.
+	* s390.c (struct guard_storage_control_block,
+	struct guard_storage_event_parameter_list): New structure type
+	definition.
+	(guard_storage_print_gsepl, guard_storage_print_gscb,
+	SYS_FUNC(s390_guarded_storage)): New function.
+	(DIV_ROUND_UP): New macro.
+	* xlat/s390_guarded_storage_commands.in: New file.
+
+	tests: check s390_sthyi system call decoder.
+	* configure.ac (AC_CHECK_FUNCS): Add iconv_open.
+	(AC_CHECK_HEADERS): Add iconv.h.
+	* tests/s390_sthyi-v.c: New file.
+	* tests/s390_sthyi.c: Likewise.
+	* tests/.gitignore: Add s390_sthyi, s390_sthyi-v.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (s390_sthyi, s390_sthyi): New tests.
+
+	Introduce s390_sthyi system call decoder.
+	* s390.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* linux/s390/syscallent.h ([380]): Change decoder to s390_sthyi.
+	* linux/s390x/syscallent.h: Likewise.
+	* xlat/s390_sthyi_function_codes.in: New file.
+
+	print_fields.h: add macro to print hexadecimal array field.
+	* print_fields.h (PRINT_FIELD_HEX_ARRAY): New macro, prints target
+	array with QUOTE_FORCE_HEX.
+
+2018-01-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add print_quoted_string flag to generate comment.
+	Because there are never enough print_quoted_string flags.
+
+	* defs.h (QUOTE_EMIT_COMMENT): New quoting flag macro constant.
+	* util.c (string_quote): Emit " /* " in the beginning and " */" in the
+	end if QUOTE_EMIT_COMMENT is passed.
+	(print_quoted_string): Increase alloc_size by 7 if QUOTE_EMIT_COMMENT is
+	passed.
+
+2018-01-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: make ioctl.test more flexible, use it for the rest of ioctl tests
+	As the remaining non-generated ioctl tests differ from ioctl.test only
+	in strace options, and since gen_tests.sh can pass arguments to sourced
+	tests, replace the remaining non-generated ioctl tests with invocations
+	of ioctl.test with appropriate parameters.
+
+	* tests/ioctl.test: Pass script arguments to the strace invocation.
+	* tests/gen_tests.in (ioctl_dm): New entry, invoke ioctl.test with -s9.
+	(ioctl_dm-v): New entry, invoke ioctl.test with -v -s9.
+	(ioctl_kvm_run): New entry, invoke ioctl.test with -a36 -y.
+	(ioctl_loop-nv): New entry, invoke ioctl.test with -a22 -e verbose=none.
+	(ioctl_nsfs): New entry, invoke ioctl.test with -esignal=none.
+	(ioctl_sock_gifconf): New entry, invoke ioctl.test with -a28 -s1.
+	(ioctl_evdev-v, ioctl_loop-v, ioctl_rtc-v): Invoke ioctl.test
+	with -v option instead of ioctl-v.sh.
+	* tests/ioctl_dm-v.test: Remove.
+	* tests/ioctl_dm.test: Likewise.
+	* tests/ioctl_kvm_run.test: Likewise.
+	* tests/ioctl_loop-nv.test: Likewise.
+	* tests/ioctl_nsfs.test: Likewise.
+	* tests/ioctl_sock_gifconf.test: Likewise.
+	* tests/ioctl-v.sh: Likewise.
+	* tests/Makefile.am (DECODER_TESTS, EXTRA_DIST): Remove them.
+
+2018-01-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/gen_tests.sh: enable passing arguments to sourced tests.
+	* tests/gen_tests.sh: Read first argument separately, put it in $arg0,
+	and the rest of the arguments in $args.
+	(case "$arg0" in) <+*)>: Set command line to $args and source $arg0.
+
+	xlat/gen.sh: add some rudimentary support for comments.
+	* xlat/gen.sh: Trim parts of the string abbreviated in "/*" and "*/"
+
+	configure.ac: sort architectures in lexicographical order.
+	* configure.ac (case "$host_cpu"): sort architectures in alphabetical
+	order.
+
+2018-01-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Drop non-functional CRIS architecture support.
+	From the very first commit when CRIS architecture support was introduced
+	and up to this comment that ends the agony of this non-functional code,
+	this support was incomplete and could never be compiled.
+
+	* Makefile.am (EXTRA_DIST): Remove linux/crisv*.
+	* clone.c: Remove CRISV* checks.
+	* configure.ac ($host_cpu == cris*): Remove.
+	* linux/crisv10: Remove.
+	* linux/crisv32: Likewise.
+
+	Fixes: v4.5.18-77-gea0e6e8 ("CRIS support by Hinko Kocevar ...")
+
+2018-01-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update futex test in accordance with kernel's v4.15-rc7-202-gfbe0e83.
+	* futex.c (VALP, VALP_PR, VAL2P, VAL2P_PR): New macro definitions.
+	(main): Allow EINVAL on *REQUEUE* checks with VAL/VAL2 with higher bit
+	being set, check that the existing behaviour preserved with VALP/VAL2P
+	where higher bit is unset.
+
+	tests/futex.c: improve error diagnostics.
+	* tests/futex.c (futex_error): Add func and line arguments, print them.
+	(CHECK_FUTEX_GENERIC): Pass __func__ and __LINE__ to futex_error.
+
+	Add syscall entry for ARM-specific get_tls syscall.
+	* linux/arm/syscallent.h ([ARM_FIRST_SHUFFLED_SYSCALL+1+6]): New entry.
+	(ARM_LAST_SPECIAL_SYSCALL): Update to 6.
+	* NEWS: Mention it.
+
+2018-01-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Fix syscall descriptions for ARM-specific system calls.
+	Based on an analysis of arm_syscall in arch/arm/kernel/traps.c.
+
+	* linux/arm/syscallent.h ([ARM_FIRST_SHUFFLED_SYSCALL+1+2]): Update
+	argument number, add TM flag.
+	([ARM_FIRST_SHUFFLED_SYSCALL+1+1], [ARM_FIRST_SHUFFLED_SYSCALL+1+3],
+	[ARM_FIRST_SHUFFLED_SYSCALL+1+4], [ARM_FIRST_SHUFFLED_SYSCALL+1+5]):
+	Update argument number.
+
+2018-01-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check riscv_flush_icache syscall decoder.
+	* tests/riscv_flush_icache.c: New file.
+	* tests/.gitignore: Add riscv_flush_icache.
+	* tests/gen_tests.in: Likewise.
+	* tests/pure_executables.list: Likewise.
+
+	Implement decoding of riscv_flush_icache syscall.
+	* linux/riscv/syscallent.h ([259]): Add riscv_flush_icache entry.
+	* riscv.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* xlat/riscv_flush_icache_flags.in: New file.
+	* NEWS: Mention it.
+
+2018-01-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Workaround stray PTRACE_EVENT_EXEC.
+	We (apparently) had a long-standing test failure inside strace-ff.test
+	with the symptom that it misses exit_group call.  As it turned out, it
+	was PTRACE_EVENT_EXEC followed by execve syscall exiting stop.  That
+	behaviour indeed screwed all the syscall state tracking for the tracee.
+	Let's try to patch it up by calling trace_syscall when we receive
+	PTRACE_EVENT_EXEC outside syscall.
+
+	* defs.h (TCB_RECOVERING): New tcb flag.
+	* strace.c (dispatch_event) <case TE_STOP_BEFORE_EXECVE>: Invoke
+	trace_syscall with TCB_RECOVERING flag being set for the current_tcp
+	if the tracee is not on exiting syscall.
+	* syscall.c (get_scno): Set QUAL_RAW if we are recovering.
+	(tamper_with_syscall_entering): Do not perform actual tampering during
+	recovery as it's already too late.
+	* NEWS: Mention it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-01-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify set_ptracer_any.
+	* tests/set_ptracer_any.c (main) [HAVE_PRCTL]: Provide fallback
+	definitions for PR_SET_PTRACER and PR_SET_PTRACER_ANY constants,
+	set all unused prctl arguments to 0.
+
+2018-01-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	ia64: do not bail out in get_syscall_args if umove fails with EPERM.
+	If the kernel contains commit 84d77d3f06e7e8dea057d10e8ec77ad71f721be3,
+	both PTRACE_PEEKDATA and process_vm_readv become unavailable when the
+	process dumpable flag is cleared, on ia64 this results to all syscall
+	arguments being unavailable.
+
+	Recognize this situation and do not treat it as get_syscall_args error
+	because the latter leaves the tracee in a ptrace stop.
+
+	This condition used to be triggered by prctl-dumpable test that caused
+	strace to hang indefinitely.
+
+	* linux/ia64/get_syscall_args.c (get_syscall_args): Do not bail out
+	if umove fails.
+	* tests/prctl-dumpable.c [__ia64__]: Skip the test.
+
+2018-01-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.c: reset printing_tcp on print_event_exit.
+	print_event_exit should have printing_tcp setup analogous to printleader and
+	syscall_exit_trace before printing its part, otherwise it spuriously resets
+	curcol in line_ended for the stale printing_tcp if followfork == 2.
+
+	* strace.c (print_event_exit): Set printing_tcp to tcp before printing
+	exiting event line and calling line_ended.
+
+2018-01-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check path tracing of old select syscall.
+	* tests/xselect.c [xselect] (xselect): Turn into prototype.
+	* tests/oldselect-P.c: New file.
+	* tests/oldselect-efault-P.c: Likewise.
+	* tests/oldselect-efault.c: Likewise.
+	* tests/oldselect.c: Use xselect.c
+	* tests/pure_executables.list: Add oldselect-efault.
+	* tests/gen_tests.in (oldselect, oldselect-P, oldselect-efault,
+	oldselect-efault-P): New entries.
+	* tests/oldselect.expected: Remove.
+	* tests/oldselect.test: Remove.
+	* tests/Makefile.am (check_PROGRAMS): Add oldselect-P
+	and oldselect-efault-P.
+	(DECODER_TESTS): Remove oldselect.test.
+	(EXTRA_DIST): Remove oldselect.expected.
+	* tests/.gitignore: Add oldselect-P, oldselect-efault,
+	and oldselect-efault-P.
+
+	tests: check path tracing of select/_newselect syscalls.
+	* tests/xselect.c (main) [PATH_TRACING_FD]: Skip if /proc/self/fd/
+	is not available.  Add test calls that use PATH_TRACING_FD.
+	(main): Conditionalize expected output for those calls
+	that do not use PATH_TRACING_FD with [!PATH_TRACING_FD].
+	* tests/_newselect-P.c: New file.
+	* tests/select-P.c: Likewise.
+	* tests/Makefile.am (check_PROGRAMS): Add _newselect-P and select-P.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (_newselect-P, select-P): New entries.
+
+	tests: extend the check of select/_newselect syscalls decoding.
+	* tests/xselect.c: Rewrite for better coverage.
+
+2018-01-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: redirect stdin to /dev/null.
+	Ensure that stdin descriptor is not available for output
+	by reopening it to input from /dev/null.
+
+	* tests/run.sh: Redirect test's stdin to /dev/null.
+
+2018-01-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: add file:line to perror_msg_and_fail/error_msg_and_fail output.
+	* tests/tests.h [!perror_msg_and_fail] (perror_msg_and_fail): New macro
+	wrapper around the homonymous function.
+	[!error_msg_and_fail] (error_msg_and_fail): Likewise.
+	* tests/error_msg.c (perror_msg_and_fail, error_msg_and_fail): New
+	macros defined to themselves.
+
+	Rework decoding and pathtrace of old select syscall.
+	* linux/arch_defs_.h [!HAVE_ARCH_OLD_SELECT] (HAVE_ARCH_OLD_SELECT): New
+	macro.
+	* linux/aarch64/arch_defs_.h (HAVE_ARCH_OLD_SELECT): Likewise.
+	* linux/arm/arch_defs_.h: Likewise.
+	* linux/bfin/arch_defs_.h: Likewise.
+	* linux/i386/arch_defs_.h: Likewise.
+	* linux/m68k/arch_defs_.h: Likewise.
+	* linux/microblaze/arch_defs_.h: Likewise.
+	* linux/powerpc64/arch_defs_.h: Likewise.
+	* linux/sh/arch_defs_.h: Likewise.
+	* linux/x32/arch_defs_.h: Likewise.
+	* linux/x86_64/arch_defs_.h: Likewise.
+	* linux/powerpc/arch_defs_.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* desc.c (SYS_FUNC(oldselect)): Rewrite using
+	fetch_indirect_syscall_args, move under [HAVE_ARCH_OLD_SELECT].
+	* pathtrace.c (match_xselect_args): New function.
+	(pathtrace_match_set): Use it.
+
+2018-01-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Transform fetch_old_mmap_args into fetch_indirect_syscall_args.
+	As there are more than one old style syscall that take their arguments
+	via array, generalize fetch_old_mmap_args into a function that could
+	fetch variable number of arguments.
+
+	* mem.c (fetch_old_mmap_args): Transform into ...
+	* fetch_indirect_syscall_args.c: ... fetch_indirect_syscall_args
+	in this new file.
+	* Makefile.am (libstrace_a_SOURCES): Add it.
+	* defs.h [HAVE_ARCH_OLD_MMAP] (fetch_old_mmap_args): Remove.
+	(fetch_indirect_syscall_args): New prototype.
+	* pathtrace.c (pathtrace_match_set) [HAVE_ARCH_OLD_MMAP]: Use
+	fetch_indirect_syscall_args instead of fetch_old_mmap_args.
+
+2018-01-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	signal.c: remove excess semicolon after the end of the function.
+	* signal.c (rt_sigtimedwait): Remove semicolon after the function body.
+
+	Use char * for pointer arithmetics.
+	* netlink_inet_diag.c (decode_inet_diag_req_compat,
+	decode_inet_diag_req_v2, decode_inet_diag_msg): Cast to char *
+	instead of void *.
+	* netlink_netlink_diag.c (decode_netlink_diag_req,
+	decode_netlink_diag_msg): Likewise.
+	* netlink_packet_diag.c (decode_packet_diag_req,
+	decode_packet_diag_msg): Likewise.
+	* netlink_unix_diag.c (decode_unix_diag_req, decode_unix_diag_msg):
+	Likewise.
+	* rtnl_addr.c (decode_ifaddrmsg): Likewise.
+	* rtnl_addrlabel.c (decode_ifaddrlblmsg): Likewise.
+	* rtnl_dcb.c (decode_dcbmsg): Likewise.
+	* rtnl_link.c (decode_ifinfomsg): Likewise.
+	* rtnl_mdb.c (decode_br_port_msg): Likewise.
+	* rtnl_neigh.c (decode_ndmsg): Likewise.
+	* rtnl_route.c (decode_rtmsg): Likewise.
+	* rtnl_rule.c (decode_fib_rule_hdr): Likewise.
+	* rtnl_tc.c (decode_tcmsg): Likewise.
+
+2018-01-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	netlink_inet_diag.c: remove unnecessary return.
+	decode_inet_diag_req, as well as the functions it calls, returns void.
+
+	* netlink_inet_diag.c (decode_inet_diag_req): Do not return anything.
+
+2018-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Move decoder of getpagesize syscall to libstrace.
+	As only five architectures have getpagesize syscall, moving the decoder
+	to libstrace allows to get rid of getpagesize related ifdefs and check
+	build of getpagesize decoder on other architectures.
+
+	* mem.c (SYS_FUNC(getpagesize)): Move ...
+	* getpagesize.c: ... to this new file.
+	* Makefile.am (libstrace_a_SOURCES): Add it.
+
+2018-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mpers: implement gawk 3 support.
+	Some old systems that still make some sense to be supported have only
+	gawk 3, so let's support them for now.
+
+	In order to achieve that, multiple changes have been implemented:
+	 - Multidimensional arrays are replaced with single-dimensional ones.
+	   In most places it's a "][" -> ", " replacement, as awk allows some
+	   kind of emulation of multidimensional arrays that way, but in several
+	   occasions (specifically for storing name and special fields) we have
+	   to iterate over them later, so we store that information in
+	   additional arrays in order to get the keys.
+	 - "switch" statements are replaced with sets of "if ... else if ...
+	   else" statements.  This change is trivial, except we've added
+	   a temporary variable in what_is order to store expression value, for
+	   readability purposes.
+	 - No support for array iteration ordering.  This one is most ugly of
+	   them all.  Luckily, not that ugly, we've just had to process index a
+	   bit in order to make it lexicographically sortable and add two
+	   temporary arrays containing sorted indices in order to sort over them
+	   instead of those two arrays that we've added in order to work around
+	   lack of multidimensional array support.
+
+	* mpers.awk (compare_indices): Remove unused function.
+	(array_get, update_upper_bound, /^DW_AT_data_member_location/,
+	/^DW_AT_byte_size/, /^DW_AT_encoding/): Replace multidimensional array
+	access with comma-concatenated index.
+	(norm_idx): New function.
+	(array_seq): Replace multidimensional array access with
+	comma-concatenated index.  Use comma-concatenated pair of (array_idx,
+	"seq") in order to check presence of the item in an array.
+	(what_is): Add enc and i local variables.  Store the value of
+	array[what_idx, "encoding"] in it.  Replace "switch" statements with
+	sets of "if ... else if ... else" statements.  Replace multidimensional
+	array access with comma-concatenated index. Use for (... ; ...; ...)
+	iteration over aparents_keys instead of iteration over array.
+	(/^<[[:xdigit:]]+>/): Store idx as norm_idx(matches[2]).  Replace
+	multidimensional array access with comma-concatenated index.  Store an
+	additional flag in array_names array.
+	(/^DW_AT_name/): Replace multidimensional array access with
+	comma-concatenated index.  Add a flag to array_names for that idx.
+	(/^DW_AT_type/): Do not capture "0x" as a part of a group, normalise
+	the captured group.  Replace multidimensional array access with
+	comma-concatenated index.
+	(/^Abbrev Number:[^(]+\(DW_TAG_/): Replace multidimensional array access
+	with comma-concatenated index.  Store additional flags in
+	array_special and array_parents arrays.
+	(END): Remove PROCINFO["sorted_in"] setup.  Sort array_parents.  Replace
+	multidimensional array access with comma-concatenated index.  Iterate
+	over array_special to go over all the items that have "special" field.
+	Iterate over array_names to go over all items that have "name" field.
+	* NEWS: Mention it.
+
+2018-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	dm: add support for event_nr in DM_LIST_DEVICES result.
+	Commit v4.13-rc1~137^2~13 (and a follow-up fix v4.14-rc4~20^2~3
+	that changed alignment) introduced an additional hidden field
+	in the structure returned by DM_LIST_DEVICES ioctl command
+	that contains event_nr information.
+
+	Unfortunately, we can't test it for now, but looks like it kinda works:
+
+	  # ./strace -v -eioctl -y dmsetup ls
+	  ioctl(3</dev/mapper/control>, DM_VERSION, {version=4.0.0,
+	  data_size=16384, flags=DM_EXISTS_FLAG} => {version=4.37.0,
+	  data_size=16384, flags=DM_EXISTS_FLAG}) = 0
+	  ioctl(3</dev/mapper/control>, DM_LIST_DEVICES, {version=4.0.0,
+	  data_size=16384, data_start=312, flags=DM_EXISTS_FLAG} =>
+	  {version=4.37.0, data_size=408, data_start=312, flags=DM_EXISTS_FLAG,
+	  {dev=makedev(253, 1), name="fedoratesting--30-swap", event_nr=0},
+	  {dev=makedev(253, 0), name="fedoratesting--30-root"}}) = 0
+	  fedoratesting--30-swap	(253:1)
+	  fedoratesting--30-root	(253:0)
+
+	* dm.c (dm_decode_dm_name_list): Obtain the amount of bytes copied
+	during printing device name, print event number if there's a suitable
+	gap present and the DM version is high enough.
+	* NEWS: Mention it.
+
+2018-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Move definition of personality macros to arch_defs_.h.
+	* supported_personalities.h: Remove.
+	* defs.h: Do not include it.
+	* linux/arch_defs_.h [!DEFAULT_PERSONALITY] (DEFAULT_PERSONALITY): New
+	macro.
+	[!SUPPORTED_PERSONALITIES] (SUPPORTED_PERSONALITIES): Likewise.
+	* linux/aarch64/arch_defs_.h (SUPPORTED_PERSONALITIES): New macro.
+	* linux/riscv/arch_defs_.h: Likewise.
+	* linux/s390x/arch_defs_.h: Likewise.
+	* linux/sparc64/arch_defs_.h: Likewise.
+	* linux/x32/arch_defs_.h: Likewise.
+	* linux/x86_64/arch_defs_.h: Likewise.
+	* linux/powerpc64/arch_defs_.h: New file.
+	* linux/tile/arch_defs_.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	(strace_SOURCES): Remove supported_personalities.h.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce HAVE_ARCH_SA_RESTORER.
+	In order to simplify HAVE_SA_RESTORER logic a bit.
+
+	* linux/ia64/arch_defs_.h (HAVE_ARCH_SA_RESTORER): New macro.
+	* linux/m68k/arch_defs_.h: Likewise.
+	* linux/sparc/arch_defs_.h: Likewise.
+	* linux/sparc64/arch_defs_.h: Likewise.
+	* linux/hppa/arch_defs_.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* signal.c [HAVE_ARCH_SA_RESTORER]: Define HAVE_SA_RESTORER to it.
+	[!HAVE_ARCH_SA_RESTORER && SA_RESTORER]: Define HAVE_SA_RESTORER to 1.
+	[!HAVE_ARCH_SA_RESTORER && !SA_RESTORER]: Define HAVE_SA_RESTORER to 0.
+
+2018-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Replace NEED_UID16_PARSERS with HAVE_ARCH_UID16_SYSCALLS.
+	* linux/arch_defs_.h [!HAVE_ARCH_UID16_SYSCALLS]
+	(HAVE_ARCH_UID16_SYSCALLS): New macro.
+	* linux/aarch64/arch_defs_.h (HAVE_ARCH_UID16_SYSCALLS): New macro.
+	* linux/arm/arch_defs_.h: Likewise.
+	* linux/i386/arch_defs_.h: Likewise.
+	* linux/ia64/arch_defs_.h: Likewise.
+	* linux/m68k/arch_defs_.h: Likewise.
+	* linux/s390/arch_defs_.h: Likewise.
+	* linux/s390x/arch_defs_.h: Likewise.
+	* linux/sh/arch_defs_.h: Likewise.
+	* linux/sparc/arch_defs_.h: Likewise.
+	* linux/sparc64/arch_defs_.h: Likewise.
+	* linux/syscall.h: Likewise.
+	* linux/x32/arch_defs_.h: Likewise.
+	* linux/x86_64/arch_defs_.h: Likewise.
+	* linux/bfin/arch_defs_.h: New file.
+	* linux/microblaze/arch_defs_.h: Likewise.
+	* linux/riscv/arch_defs_.h: Likewise.
+	* linux/sh64/arch_defs_.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* defs.h (NEED_UID16_PARSERS): Remove.
+	* linux/syscall.h: Check for HAVE_ARCH_UID16_SYSCALLS instead of
+	NEED_UID16_PARSERS.
+	* uid.c: Likewise.
+
+	Replace HAVE_GETRVAL2 with HAVE_ARCH_GETRVAL2.
+	* linux/arch_defs_.h [!HAVE_ARCH_GETRVAL2] (HAVE_ARCH_GETRVAL2): New
+	macro.
+	* linux/alpha/arch_defs_.h: New file.
+	* linux/ia64/arch_defs_.h: Likewise.
+	* linux/mips/arch_defs_.h: Likewise.
+	* linux/sh/arch_defs_.h: Likewise.
+	* linux/sparc/arch_defs_.h: Likewise.
+	* linux/sparc64/arch_defs_.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* defs.h (HAVE_GETRVAL2): Remove.
+	(getrval2): Check for HAVE_ARCH_GETRVAL2 instead of arch checks.
+	* net.c (SYS_FUNC(pipe)): Check for HAVE_ARCH_GETRVAL2 instead of
+	HAVE_GETRVAL2.
+	* syscall.c: Likewise.
+
+	Use #if idiom instead of #ifdef for HAVE_ARCH_* macros.
+	* linux/arch_defs_.h [!HAVE_ARCH_OLD_MMAP] (HAVE_ARCH_OLD_MMAP): New
+	macro.
+	[!HAVE_ARCH_OLD_MMAP_PGOFF] (HAVE_ARCH_OLD_MMAP_PGOFF): Likewise.
+	* defs.h: Use #if instead of #ifdef to check HAVE_ARCH_OLD_MMAP.
+	* mem.c: Use #if instead of #ifdef to check HAVE_ARCH_OLD_MMAP
+	and HAVE_ARCH_OLD_MMAP_PGOFF
+	* pathtrace.c: Likewise.
+
+2018-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Rename arch-specific arch_defs.h files to arch_defs_.h.
+	Introduce a new arch_defs.h header that includes the corresponding
+	arch-specific arch_defs_.h file followed by generic arch_defs_.h file.
+
+	* linux/arch_defs.h: Rename to linux/arch_defs_.h.
+	* linux/aarch64/arch_defs.h: Rename to linux/aarch64/arch_defs_.h.
+	* linux/arm/arch_defs.h: Rename to linux/arm/arch_defs_.h.
+	* linux/i386/arch_defs.h: Rename to linux/i386/arch_defs_.h.
+	* linux/m68k/arch_defs.h: Rename to linux/m68k/arch_defs_.h.
+	* linux/s390/arch_defs.h: Rename to linux/s390/arch_defs_.h.
+	* linux/s390x/arch_defs.h: Rename to linux/s390x/arch_defs_.h.
+	* linux/x32/arch_defs.h: Rename to linux/x32/arch_defs_.h.
+	* linux/x86_64/arch_defs.h: Rename to linux/x86_64/arch_defs_.h.
+	* arch_defs.h: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	(EXTRA_DIST): Rename linux/*/arch_defs.h to linux/*/arch_defs_.h.
+
+2018-01-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix ANY_WORDSIZE_LESS_THAN_KERNEL_LONG definition.
+	* defs.h (ANY_WORDSIZE_LESS_THAN_KERNEL_LONG): Rewrite without undefined
+	behaviour.
+
+	Fixes: f916793 ("Introduce ANY_WORDSIZE_LESS_THAN_KERNEL_LONG macro")
+
+2018-01-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	util: return string size in printstr.
+	As umovestr now returns something useful, let's propagate it further.
+
+	* defs.h (printstr_ex, printpathn, printpath): Change return type from
+	void to int.
+	(printstrn, printstr): Change return type from void to int, return
+	printstr_ex result.
+	* util.c (printpathn): Return -1 on NULL addr, nul_seen (exit code of
+	umovestr) on success.
+	(printpath): Return printpathn result.
+	(printstr_ex): Return -1 on NULL addr, umoven/umovestr result otherwise.
+
+2018-01-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ucopy: return string size in umovestr.
+	We return the size that includes \0 in order to preserve existing
+	behaviour (return 0 when \0 haven't been seen, return positive number
+	when it has been seen).
+
+	* ucopy.c (umovestr_peekdata, umovestr): Return string length
+	including \0 instead of 1 when \0 is found.
+
+2018-01-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mpers.awk: avoid redefinition of mpers_ptr_t.
+	Older versions of gcc like those found in RHEL6 fail with the following
+	diagnostics:
+
+	  In file included from block.c:32:
+	  ./mpers-m32/struct_blk_user_trace_setup.h:2: error: redefinition of typedef ‘mpers_ptr_t’
+	  mpers_type.h:44: note: previous declaration of ‘mpers_ptr_t’ was here
+
+	* mpers.awk (END): Add #ifndef guard to mpers_ptr_t typedef.
+	* mpers_test.sh: Update expected output.
+
+2018-01-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add support for --enable-mpers=m32|mx32.
+	* configure.ac (AC_ARG_ENABLE([mpers])): Allow m32 and mx32 values
+	for --enable-mpers option.
+	* m4/mpers.m4 (st_MPERS): Check for personality support if personality
+	name is provided as an option.  Fail if the requested personality
+	support is not available.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-01-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: improve setugid error diagnostics a bit.
+	* tests/setugid.c (main): Print unexpected code returned by syscall.
+
+2018-01-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	v4l2: do not mpersify struct v4l2_create unless it is used by other code
+	This fixes build with mpers support on older systems that lack
+	definition of struct v4l2_create.
+
+	* v4l2.c: Wrap references to struct v4l2_create with
+	[VIDIOC_CREATE_BUFS].
+
+2018-01-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	btrfs: use uint32_t instead of __u32.
+	* btrfs.c (btrfs_ioctl) [!HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE]:
+	Replace __u32 with uint32_t.  Remove useless cast.
+
+2018-01-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: clarify mpers flags in strace -V output.
+	The previous description was a bit dated.
+
+	* strace.1.in (.SH "MULTIPLE PERSONALITY SUPPORT"): Remove "no-m32" and
+	"no-mx32", describe the situation when some of mpers flags are not
+	present in strace -V output.
+
+2018-01-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add compat support for s390x.
+	By very popular demand.
+
+	While we are here, let's refactor the condition for old_mmap_pgoff into
+	an arch-specific one, as it is used more than in one place.
+
+	* NEWS: Mention this.
+	* strace.1.in (.SH "MULTIPLE PERSONALITY SUPPORT"): Likewise.
+	* configure.ac (case "$host_cpu" in) <s390x>: Set arch_m32 to s390, set
+	cc_flags_m32 to -m31.
+	(st_MPERS([m32])): Add s390x.
+	* defs.h [S390X]: Define NEED_UID16_PARSERS.
+	* linux/s390/arch_sigreturn.c [!S390_FRAME_PTR] (S390_FRAME_PTR): New
+	macro, define to s390_frame_ptr.
+	[!SIGNAL_FRAMESIZE] (SIGNAL_FRAMESIZE): New macro, define to
+	__SIGNAL_FRAMESIZE.
+	[!PTR_TYPE] (PTR_TYPE): New macro, define to unsigned long.
+	(arch_sigreturn): Use S390_FRAME_PTR, SIGNAL_FRAMESIZE, and PTR_TYPE
+	instead of s390_frame_ptr, __SIGNAL_FRAMESIZE, and pointer-sized type,
+	respectively.
+	* linux/s390/get_error.c [!ARCH_REGSET] (ARCH_REGSET): New macro, define
+	* to s390_regset.
+	(get_error): Use it instead of s390_regset.
+	* linux/s390/get_scno.c (arch_get_scno): Likewise.
+	* linux/s390/get_syscall_args.c (get_syscall_args): Likewise.
+	* linux/s390/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/s390/set_scno.c (arch_set_scno): Likewise.
+	* linux/s390x/arch_regs.c (psw_compat_t, s390_compat_regs,
+	s390x_regs_union, s390_frame_ptr, s390x_frame_ptr, s390x_io): New
+	variables.
+	(s390_regset, s390x_regset, ARCH_REGS_FOR_GETREGSET,
+	ARCH_IOVEC_FOR_GETREGSET, ARCH_PC_REG, ARCH_PERSONALITY_0_IOV_SIZE,
+	ARCH_PERSONALITY_1_IOV_SIZE): New macros.
+	* linux/s390x/arch_regs.h (s390_frame_ptr, s390x_frame_ptr): New
+	prototypes.
+	* linux/s390x/arch_rt_sigframe.c: Conditionalize on tcp->currpers.
+	* linux/s390x/arch_sigreturn.c: Likewise.
+	* linux/s390x/get_error.c: Likewise.
+	* linux/s390x/get_scno.c: Likewise.
+	* linux/s390x/get_syscall_args.c: Likewise.
+	* linux/s390x/set_error.c: Likewise.
+	* linux/s390x/set_scno.c: Likewise.
+	* linux/s390x/errnoent1.h: New file.
+	* linux/s390x/ioctls_arch1.h: Likewise.
+	* linux/s390x/ioctls_inc1.h: Likewise.
+	* linux/s390x/signalent1.h: Likewise.
+	* linux/s390x/syscallent1.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Add new files added to linux/s390x.
+	* supported_personalities.h [S390X] (SUPPORTED_PERSONALITIES): Define
+	to 2.
+	* tests/strace-V.test: Add s390 to the list of architectures that have
+	m32 personality.
+	* linux/s390/arch_defs.h (HAVE_ARCH_OLD_MMAP_PGOFF): New macro.
+	* linux/s390x/arch_defs.h: Likewise.
+	* mem.c: Replace #ifdef S390 with #ifdef HAVE_ARCH_OLD_MMAP_PGOFF.
+	* pathtrace.c: Likewise.
+
+2018-01-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update NEWS.
+
+2018-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check path tracing of ppoll syscall.
+	* tests/ppoll.c (main) [PATH_TRACING_FD]: Skip if /proc/self/fd/
+	is not available.  Add a test call that use PATH_TRACING_FD.
+	(main): Conditionalize expected output for those calls
+	that do not use PATH_TRACING_FD with [!PATH_TRACING_FD].
+	* tests/ppoll-P.c: New file.
+	* tests/pure_executables.list: Add ppoll-P.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (ppoll-P): New entry.
+
+	tests: check path tracing of poll syscall.
+	* tests/poll.c (main) [PATH_TRACING_FD]: Skip if /proc/self/fd/
+	is not available.  Add tests calls that use PATH_TRACING_FD.
+	(main): Conditionalize expected output for those calls
+	that do not use PATH_TRACING_FD with [!PATH_TRACING_FD].
+	* tests/poll-P.c: New file.
+	* tests/pure_executables.list: Add poll-P.
+	* tests/.gitignore: Likewise.
+	* tests/poll-P.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add poll-P.test.
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: enable old_mmap-P.test on s390x.
+	As s390x is the only 64-bit architecture that has old_mmap,
+	the test needs some adjustments there.
+
+	* tests/old_mmap.c: Update condition.
+	(main): Change int types to long, extend numerals to 64 bit, change
+	printing format qualifiers to corresponding long types.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check path tracing of old mmap syscall.
+	* tests/old_mmap.c [!TEST_FD]: Define TEST_FD.
+	(main) <args1_c>: Replace 5th argument with TEST_FD.
+	(main): Wrap the output for the calls that do not use TEST_FD
+	with #ifndef PATH_TRACING.
+	* tests/old_mmap-P.c: New file.
+	* tests/pure_executables.list: Add old_mmap-P.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in: Add old_mmap-P test.
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Fix pathtrace for old_mmap/old_mmap_pgoff.
+	As these system calls have only one argument that points to the
+	location in memory containing actual arguments, current path tracing
+	implementation is incorrect.  In order to fix this, let's use recently
+	introduced fetch_old_mmap_args in order to get actual arguments suitable
+	for path matching.
+
+	* pathtrace.c [HAVE_ARCH_OLD_MMAP] <case SEN_old_mmap,
+	case SEN_old_mmap_pgoff>: Retrieve actual old_mmap arguments with
+	fetch_old_mmap_args, pass the value from the retrieved args if it's
+	available.
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Test non-verbose old_mmap output.
+	* tests/old_mmap-v-none.c: New file.  Include old_mmap.c.
+	* tests/pure_executables.list: Add old_mmap-v-none.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (old_mmap-v-none): New entry.
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mem.c: use runtime check in fetch_old_mmap_args.
+	This makes code a bit cleaner and makes it compatible with the upcoming
+	s390x compat support.
+
+	* mem.c [HAVE_ARCH_OLD_MMAP] (fetch_old_mmap_args): Replace
+	ANY_WORDSIZE_LESS_THAN_KERNEL_LONG check with current_wordsize == 4
+	check.
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mem.c: introduce fetch_old_mmap_args.
+	Move common old_mmap/old_mmap_pgoff argument fetching code into a
+	separate function.
+
+	As it is, it also fixes the case of non-verbose printing of old_mmap
+	arguments (see the new test in the next commit).  Also, it is a
+	preparation for the fix of path tracing for these syscalls.
+
+	* defs.h [HAVE_ARCH_OLD_MMAP] (fetch_old_mmap_args): New prototype.
+	* mem.c [HAVE_ARCH_OLD_MMAP] (fetch_old_mmap_args): New function.
+	[HAVE_ARCH_OLD_MMAP] (old_mmap, old_mmap_pgoff): Use it.
+
+	Fixes: 3db07f11 "Fix old_mmap output when mmap arguments are unfetchable"
+	Suggested-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce arch-specific define HAVE_ARCH_OLD_MMAP.
+	* linux/arch_defs.h: New file.
+	* linux/aarch64/arch_defs.h: New file.  Define HAVE_ARCH_OLD_MMAP.
+	* linux/arm/arch_defs.h: Likewise.
+	* linux/i386/arch_defs.h: Likewise.
+	* linux/m68k/arch_defs.h: Likewise.
+	* linux/s390/arch_defs.h: Likewise.
+	* linux/s390x/arch_defs.h: Likewise.
+	* linux/x32/arch_defs.h: Likewise.
+	* linux/x86_64/arch_defs.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* defs.h: Include "arch_defs.h"
+	* mem.c: Replace condition for SYS_FUNC(old_mmap) with #ifdef
+	HAVE_ARCH_OLD_MMAP.
+
+	Suggested-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+	    Nikolay Marchuk  <marchuk.nikolay.a@gmail.com>
+
+	tests: improve descriptor set syntax testing.
+	* tests/filtering_fd-syntax.test: New file.
+	* tests/options-syntax.test: Move descriptor set syntax testing
+	to filtering_fd-syntax.test.
+	* tests/Makefile.am (MISC_TESTS): Add filtering_fd-syntax.test.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.c: print correct out file name in error messages in case of -ff.
+	* strace.c (outf_perror): New function.
+	(tvprintf, tprints, flush_tcp_output): Use it.
+
+	aarch64: use ARCH_SET_PERSONALITY_FROM_IOV_SIZE.
+	* linux/aarch64/arch_regs.c (ARCH_PERSONALITY_0_IOV_SIZE,
+	ARCH_PERSONALITY_1_IOV_SIZE): New macros.
+	* linux/aarch64/get_scno.c (arch_get_scno): Do not call
+	update_personality as it is handled by the generic get_regs code now.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: add ability to set personality based on GETREGSET iov size.
+	Some architectures (aarch64, s390x) use only PTRACE_GETREGSET interface
+	and use its size to detect current personality. Let's generalise this
+	approach and also avoid subtle errors when we get register but forget to
+	update personality, at least for those architectures.
+
+	Note that in order to employ this behaviour, architecture has to use
+	PTRACE_GETREGSET exclusively (no HAVE_GETREGS_OLD) and should declare
+	appropriate ARCH_PERSONALITY_*_IOV_SIZE macros.
+
+	* syscall.c (get_regs) [ptrace_getregset_or_getregs &&
+	!HAVE_GETREGS_OLD]: Call update_personality based on the value returned
+	in the iov_len field by PTRACE_GETREGSET.  Warn once if the returned
+	iov_len is unknown.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: add sanity check for the target personality number.
+	We can never be cautious enough.
+
+	* defs.h (set_personality): Change argument type to unsigned int.
+	* syscall.c (set_personality): Change argument type to unsigned int,
+	check whether requested personality is sane, die otherwise.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: move current_personality check to set_personality.
+	As all the personality-dependent entries are initially in sync, we can
+	move the check whether we are setting the same personality as we
+	currently are inside set_personality out of update_personality.
+
+	* syscall.c (current_wordsize, current_klongsize): Initialise to 0'th
+	personality value in order to make the statement about "all the
+	personality-dependent entries are initially in sync" true.
+	(set_personality): Check whether requested personality differs from
+	current_personality.
+	(update_personality): Call set_personality unconditionally.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: always update tcp->currpers in update_personality.
+	Sometimes (for example, switching from a process with one personality
+	to a process that previously had different personality but returning
+	from execve to that same personality into) it is possible that
+	current_personality is not changed, but tcp->currpers is different.
+	So, let's not return from update_personality and always update
+	tcp->currpers if it differs from the target personality.
+
+	* syscall.c (update_personality): Do not exit early if personality ==
+	current_personality.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update current_personality on tcb switch.
+	* strace.c (set_current_tcp): New function.
+	(printleader, droptcb, print_event_exit, next_event, dispatch_event):
+	Call set_current_tcp instead of setting current_tcp manually.
+
+2018-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add support for specifying compiler options for mpers builds.
+	Because some architectures are very, very special.
+
+	* configure.ac (cc_flags_m32, cc_flags_mx32): New variables. AC_SUBST
+	them.
+	* m4/mpers.m4 (MPERS_CFLAGS): Use instead of CFLAG, pushdef as
+	$cc_flags_$1.
+	Use mpers_name instead of CFLAG in AC_CACHE_CHECK messages.
+	Pass MPERS_CFLAGS as the second argument to mpers_test.sh
+	* mpers.sh: Add CC_ARCH_FLAGS as the second argument (PARSER_FILE
+	is moved to the third one). Do not expect leading dash in ARCH_FLAG
+	anymore.
+	* mpers_test.sh (mpers_cc_flags): New variable, initialise to the second
+	command line argument.
+	Pass $mpers_name without leading dash to mpers.sh.
+	Pass $mpers_cc_flags as the second argument to mpers.sh ($sample is
+	the third argument now).
+	* Makefile.am (mpers-m%.stamp:): Pass $(mpers_CC_FLAGS) as the second
+	argument to mpers.sh ($$f is now the third argument).
+	($(mpers_m32_targets)): Define target variable mpers_CC_FLAGS with the
+	value of @cc_flags_m32@
+	($(mpers_mx32_targets)): Define target variable mpers_CC_FLAGS with the
+	value of @cc_flags_mx32@
+	* tests/Makefile.am (MERS_CC_FLAGS): New variable.
+	* bootstrap: Append @cc_flags_$1@ to MPERS_CC_FLAGS. Append
+	$(MPERS_CC_FLAGS) to ARCH_MFLAGS.
+
+2018-01-16  Dmitry V. Levin  <ldv@altlinux.org>
+	    Nikolay Marchuk  <marchuk.nikolay.a@gmail.com>
+
+	tests: improve syscall set syntax testing.
+	* tests/filtering_syscall-syntax.test: New file.
+	* tests/options-syntax.test: Move syscall set syntax testing
+	to filtering_syscall-syntax.test.
+	* tests/qual_fault-syntax.test: Likewise.
+	* tests/qual_inject-syntax.test: Likewise.
+	* tests/Makefile.am (MISC_TESTS): Add filtering_syscall-syntax.test.
+
+2018-01-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Enhance error diagnostics about invalid syscalls in fault injection syntax
+	Validate syscall set before the whole fault injection syntax.
+
+	* filter_qualify.c (parse_inject_expression): Add const qualifier to
+	return type.  Return an empty string when no syscall set is specified.
+	(qualify_inject_common): Add const qualifier to "name".  Move
+	qualify_syscall_tokens invocation right after parse_inject_expression.
+	* tests/qual_fault-syntax.test: Update expected output.
+	* tests/qual_inject-syntax.test: Likewise.
+
+2018-01-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	basic_filters: use loop initial declarations.
+	* basic_filters.c (qualify_syscall_number, qualify_syscall_regex,
+	lookup_class, qualify_syscall_class, qualify_syscall_tokens,
+	qualify_tokens): Use "for" loop initial declarations.
+
+	filter_qualify: use loop initial declarations.
+	* filter_qualify.c (sigstr_to_uint, find_errno_by_name,
+	parse_inject_expression, qualify_inject_common, qualify): Use "for" loop
+	initial declarations.
+
+	configure: try to set the C compiler mode to accept ISO Standard C.
+	* configure.ac: Use AC_PROG_CC_STDC.
+	* NEWS: Mention this.
+
+2018-01-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	pathtrace: update the list of unrelated syscalls.
+	* pathtrace.c (pathtrace_match_set) <SEN_accept4, SEN_accept,
+	SEN_signalfd4, SEN_signalfd>: Skip matching.
+
+	basic_filters: move legacy tracing class names to the end of table.
+	* basic_filters.c (lookup_class) <syscall_class>: Move names that do not
+	start with % to the end of table.
+
+	Enhance decoding of mq_* syscalls.
+	* mq.c (SYS_FUNC(mq_open)): Add RVAL_FD to return value.
+	(SYS_FUNC(mq_timedsend), SYS_FUNC(mq_timedreceive), SYS_FUNC(mq_notify),
+	SYS_FUNC(mq_getsetattr)): Print the first argument using printfd.
+	* NEWS: Mention this change.
+	* pathtrace.c (pathtrace_match_set) <SEN_mq_getsetattr, SEN_mq_notify,
+	SEN_mq_open, SEN_mq_timedreceive, SEN_mq_timedsend>: Skip matching.
+	* linux/32/syscallent.h (mq_getsetattr, mq_notify, mq_open,
+	mq_timedreceive, mq_timedsend): Add TD flag.
+	* linux/64/syscallent.h: Likewise.
+	* linux/alpha/syscallent.h: Likewise.
+	* linux/arm/syscallent.h: Likewise.
+	* linux/avr32/syscallent.h: Likewise.
+	* linux/bfin/syscallent.h: Likewise.
+	* linux/crisv10/syscallent.h: Likewise.
+	* linux/hppa/syscallent.h: Likewise.
+	* linux/i386/syscallent.h: Likewise.
+	* linux/ia64/syscallent.h: Likewise.
+	* linux/m68k/syscallent.h: Likewise.
+	* linux/microblaze/syscallent.h: Likewise.
+	* linux/mips/syscallent-n32.h: Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/mips/syscallent-o32.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/powerpc64/syscallent.h: Likewise.
+	* linux/s390/syscallent.h: Likewise.
+	* linux/s390x/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/xtensa/syscallent.h: Likewise.
+
+	Enhance error diagnostics about invalid syscalls in fault injection syntax
+	* basic_filters.c (qualify_syscall_tokens): Remove "name" argument,
+	assume its value is "system call".
+	* filter.h (qualify_syscall_tokens): Remove "name" argument.
+	All callers updated.
+	* tests/qual_fault-syntax.test: Update expected output.
+
+	basic_filters: handle "all" in a more readable way.
+	* basic_filters.c (qualify_syscall_tokens, qualify_tokens): Remove
+	handle_inversion label, handle "all" by invoking invert_number_set_array
+	directly.
+
+	filter: remove redundant braces around single line expressions.
+	* basic_filters.c (qualify_syscall_class, qualify_syscall_name):
+	Rearrange the inner loop body.
+	(qualify_syscall_number, lookup_class, qualify_syscall_tokens,
+	qualify_tokens): Remove redundant braces around single line expressions.
+	* filter_qualify.c (qualify_inject_common): Likewise.
+
+	filter_qualify: move memory allocation from parse_inject_expression.
+	* filter_qualify.c (parse_inject_expression): Replace "s" and "buf"
+	arguments with "str" argument, use it instead of "s" and "*buf".
+	(qualify_inject_common): Rename "buf" to "copy", initialize it to a copy
+	of "str", pass "copy" to parse_inject_expression instead of "str" and
+	"buf".
+
+2018-01-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update NT_* constants.
+	Update NT_* descriptor types with the values borrowed from
+	kernel's include/uapi/linux/elf.h and glibc's elf.h.
+
+	* xlat/nt_descriptor_types.in (NT_PRSTATUS, NT_FPREGSET, NT_PRPSINFO,
+	NT_PRXREG, NT_TASKSTRUCT, NT_PLATFORM, NT_AUXV, NT_GWINDOWS, NT_ASRS,
+	NT_PSTATUS, NT_PSINFO, NT_PRCRED, NT_UTSNAME, NT_LWPSTATUS,
+	NT_LWPSINFO, NT_PRFPXREG, NT_PRXFPREG, NT_PPC_VMX, NT_PPC_SPE,
+	NT_PPC_VSX, NT_386_TLS, NT_386_IOPERM, NT_X86_XSTATE): Add fallback
+	definitions.
+	(NT_SIGINFO, NT_FILE, NT_PPC_*, NT_S390_*, NT_ARM_*, NT_METAG_*,
+	NT_ARC_V2): New constants.
+	* NEWS: Mention this.
+
+2018-01-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	configure: use AC_MSG_ERROR and AC_MSG_FAILURE consistently.
+	* configure.ac [$arch = mips]: Use AC_MSG_FAILURE instead of
+	AC_MSG_ERROR when _MIPS_SIM cannot be determined.  Use AC_MSG_ERROR
+	instead of AC_MSG_FAILURE when syscallent stubs cannot be generated.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	configure: add --disable-mpers and --enable-mpers=check options.
+	On architectures supporting multiple personalities, multiple
+	personalities support in strace is required for proper decoding of
+	structures used by tracees with personalities that differ from the
+	personality of strace.
+
+	New configure options control whether multiple personalities support
+	in strace is mandatory, optional, or disabled.
+
+	The default is changed from what is now equivalent of
+	--enable-mpers=check (automatically detect whether required mpers
+	support could be enabled) to --enable-mpers (terminate the build
+	if required mpers support could not be enabled).
+
+	* configure.ac (AC_ARG_ENABLE([mpers])): New option.
+	* m4/mpers.m4 (st_MPERS): Use enable_mpers.  Terminate the build
+	if mpers could not be enabled and enable_mpers==yes.
+	* strace.spec.in: Specify --enable-mpers=check to %configure.
+	* debian/rules (build/Makefile, build64/Makefile): Specify
+	--enable-mpers=check to configure.
+
+	Suggested-by: DJ Delorie <dj@redhat.com>
+
+2018-01-11  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+	Update ioctl entries from linux v4.15-rc7.
+	* linux/32/ioctls_inc_align16.h: Update from linux v4.15-rc7 using ioctls_gen.sh.
+	* linux/32/ioctls_inc_align32.h: Likewise.
+	* linux/32/ioctls_inc_align64.h: Likewise.
+	* linux/64/ioctls_inc.h: Likewise.
+	* linux/x32/ioctls_inc0.h: Likewise.
+	* NEWS: Mention this.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	Issue a warning when strace lacks tracee personality support.
+	* defs.h (HAVE_PERSONALITY_1_MPERS, HAVE_PERSONALITY_2_MPERS): New
+	macros.
+	* syscall.c (update_personality): Add need_mpers_warning array
+	initialized with mpers support data.  Use it for printing the mpers
+	unavailability warning once per personality.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add more checks of reboot syscall decoding.
+	In particular, check for the recent fixes in reboot syscall decoder.
+
+	* tests/gen_tests.in (reboot): Provide -s 256 option.
+	* tests/reboot.c (STR32, STR128): New macros.
+	(main): Add more checks.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: use sprintrc in reboot.test.
+	* test/reboot.c (main): Use sprintrc instead of old-style manual
+	printing of return code.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	reboot.c: limit printing of the fourth argument to 255 bytes.
+	The size of kernel buffer is 256 bytes and the last byte is always zero.
+
+	* reboot.c (SYS_FUNC(reboot)): Replace printstr call with printstr_ex
+	with size of 255 and style flag QUOTE_0_TERMINATED.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	reboot.c: use printxval instead of printflags.
+	Numeric arguments of reboot syscall are not flags but magic values.
+
+	* reboot.c (SYS_FUNC(reboot)): Replace printflags with printxval.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Search for <libiberty/demangle.h> in addition to <demangle.h>
+	This is the location where this header is installed on Debian-based
+	systems.
+
+	* configure.ac: Check for libiberty/demangle.h in addition to
+	demangle.h.
+	* unwind.c [USE_DEMANGLE]: Include either <demangle.h> or
+	<libiberty_demangle.h> based on the presence of HAVE_DEMANGLE_H and
+	HAVE_LIBIBERTY_DEMANGLE_H macros.
+
+2018-01-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace.1: fix typo.
+	* strace.1.in (.SH NOTES): Replace prlimit with prlimit64.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Document multiple personalities support.
+	* strace.1.in (.SH "MULTIPLE PERSONALITY SUPPORT"): New section.
+
+	Add indication of mpers support to strace -V output.
+	* strace.c (print_version): Append information about m32 and mx32
+	decoding support.
+	* tests/strace-V.test: Update expected output.
+
+	Provide strace's native arch to the test framework.
+	* configure.ac (arch_native): New variable, set to arch.
+	* tests/Makefile.am (NATIVE_ARCH): New variable, set to @arch_native@.
+	(AM_TEST_LOG_FLAGS): Pass NATIVE_ARCH as STRACE_NATIVE_ARCH environment
+	variable.
+
+	Add indication of optional demangle feature strace -V output.
+	* strace.c (print_version) [USE_DEMANGLE]: Append " stack-demangle"
+	to the features string.
+	* tests/strace-V.test: Update expected output.
+
+	configure.ac: check for mpers support on RISC-V.
+	* confgure.ac (st_MPERS([m32])): Add riscv.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Use xappendstr instead of xsnprintf where suitable.
+	Replace occurrences of
+
+	    outptr += xsnprintf(outptr, sizeof(outstr) - (outptr - outstr), ...)
+
+	with much more sleek
+
+	    outptr = xappendstr(outstr, outptr, ...)
+
+	* desc.c (decode_select): Replace xsnprintf with xappendstr.
+	* open.c (sprint_open_modes): Likewise.
+	* poll.c (decode_poll_exiting): Likewise.
+	* signal.c (sprintsigmask_n): Likewise.
+	* xlat.c (sprintflags): Likewise.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xstring.h: add xappendstr.
+	Introduce a macro for handling common case of partial writes
+	to a character array.
+
+	* xstring.h (get_pos_diff_): New function.
+	(xappendstr): New macro.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update perf-related flags.
+	 - PERF_SAMPLE_BRANCH_TYPE_SAVE, added in v4.14-rc1~173^2~33^2~6
+	 - PERF_SAMPLE_PHYS_ADDR, added in v4.14-rc1~173^2~2
+
+	* xlat/perf_branch_sample_type.in (PERF_SAMPLE_BRANCH_TYPE_SAVE): New
+	flag.
+	* xlat/perf_event_sample_format.in (PERF_SAMPLE_PHYS_ADDR): Likewise.
+	* tests/perf_event_open.c: Update expected output.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	perf.c: add support for struct perf_event_attr.namespaces.
+	This field was introduced by linux kernel commit v4.12-rc1~152^2~42^2~10.
+
+	* configure.ac (AC_CHECK_MEMBERS): Add  perf_event_attr.namespaces.
+	* perf_event_struct.h (struct perf_event_attr): Add namespaces field.
+	* perf.c (print_perf_event_attr): Print namespaces field.
+	Update comment for __reserved_1 field.
+	* tests/perf_event_open.c (struct pea_flags): Add namespaces field.
+	(print_event_attr): Update expected output.
+
+2018-01-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of [gs]et_thread_area syscalls on x86.
+	* tests/xet_thread_area_x86.c: New file.
+	* tests/xet_thread_area_x86.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add it.
+	* tests/.gitignore: Add xet_thread_area_x86.
+	* tests/pure_executables.list: Likewise.
+
+2018-01-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of modify_ldt with for 4-byte-available user_desc.
+	Since there is possibility now that strace read only entry_number field
+	of the user_desc struct, let's check that it doesn't do it with
+	modify_ldt syscall.
+
+	* tests/modify_ldt.c (main): Add 4-byte-sized tail_alloc'ed variable.
+	Try to provide it as an argument to modify_ldt.
+
+2018-01-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Allow separate printing of struct user_desc.entry_number.
+	Kernel reads only entry_number field in the beginning of the
+	get_thread_area syscall handler.  Let's replicate this behaviour.
+
+	* defs.h (enum user_desc_print_filter): New enumeration.
+	(print_user_desc): Add an argument for signalling which part of the
+	structure should be printed.
+	* clone.c (print_tls_arg): Update print_user_desc call.
+	* ldt.c (print_user_desc): Add filter argument.  Print entry_number on
+	entering and the rest on exiting. Store entering value of the
+	entry_number field in order to print the updated value in the impossible
+	case of changed entry_number value.
+	(SYS_FUNC(modify_ldt), SYS_FUNC(set_thread_area)): Update
+	print_user_desc call.
+	(SYS_FUNC(get_thread_area)): Call print_user_desc with
+	USER_DESC_ENTERING format argument on entering and with
+	USER_DESC_EXITING on exiting.
+
+2018-01-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: move struct user_desc printing function into a separate file.
+	As part of preparation for the introduction of [gs]et_thread_area test.
+
+	* tests/modify_ldt.c (print_user_desc): Move it ...
+	* tests/print_user_desc.c: ... to new file.
+	* tests/Makefile.am (EXTRA_DIST): Add print_user_desc.c.
+
+2018-01-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of modify_ldt syscall.
+	* tests/modify_ldt.c: New file.
+	* tests/gen_tests.in: Add modify_ldt test.
+	* tests/pure_executables.list: Add modify_ldt.
+	* tests/.gitignore: Likewise.
+
+	ldt.c: manually set modify_ldt's error code.
+	* ldt.c (modify_ldt): Move parsing under entering(tcp). Check whether
+	return code is erroneous and set tcp->u_error appropriately along with
+	RVAL_PRINT_ERR_VAL flag.
+
+2018-01-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: add support for printing return value and error code.
+	Some weird syscalls (like modify_ldt) return value that doesn't indicate
+	an error (less than -4096), but it is, in fact, erroneous (because they
+	decide to clip the return value to 32-bit, for example).
+
+	Add a flag to print decoded error code along with syscall return value.
+
+	* defs.h (RVAL_PRINT_ERR_VAL): New rval flag.
+	* syscall.c (syscall_exiting_trace): Handle it.
+
+2018-01-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ldt.c: print the first argument of modify_ldt as int.
+	* ldt.c (SYS_FUNC(modify_ldt)): Print the first argument as %d.
+
+	ldt.c: print lm field for 64-bit tracees.
+	* configure.ac (AC_CHECK_MEMBERS): Add struct user_desc.lm.
+	* ldt.c (print_user_desc) [HAVE_STRUCT_USER_DESC_LM]: Print lm field
+	for non-compat tracees (it is ignored for compat ones).
+
+2018-01-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ldt.c: make struct user_desc output more structured.
+	Also, while we are here, let's fix print qualifiers (which should be %u
+	and not %d).
+
+	* ldt.c (print_user_desc): Use PRINT_FIELD_* macros for printing
+	structure.
+	(SYS_FUNC(set_thread_area)): Change field key-value separator from ":"
+	to "=", change print format qualifier from %d to %u.
+
+2018-01-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	print_fields.h: add PRINT_FIELD_U_CAST.
+	Add a macro for printing fields explicitly casted to specific type.
+	This is useful for bit fields, as otherwise the magic of *_extend_to_*
+	macros breaks.
+
+	* print_field.h (PRINT_FIELD_U_CAST): New macro.
+
+2018-01-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	print_fields.h: rename PRINT_FIELD_UID to PRINT_FIELD_ID.
+	As uid is not the only thing that has a special treatment of the -1
+	value (and, as a result, needs special care), let's rename
+	PRINT_FIELD_UID to PRINT_FIELD_ID and make PRINT_FIELD_UID its alias.
+
+	* print_fields.h (PRINT_FIELD_ID): Rename from PRINT_FIELD_UID.
+	(PRINT_FIELD_UID): Define to PRINT_FIELD_ID.
+
+2018-01-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix build on systems without linux/genetlink.h.
+	* socketutils.c [!HAVE_LINUX_GENETLINK_H] (genl_families_xlat): Add
+	tcp argument.
+
+	Fixes: v4.20-134-gc46fefc ("Add tcp arguments to netlink calls")
+
+2018-01-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	count.c: whitespace.
+
+	count.c: cleanup types and sizeof usage.
+	* count.c (call_summary_pers): Change the type of sorted_count
+	to "unsigned int *".  Replace sizeof(int) with  sizeof(sorted_count[0]).
+	Change the type of idx to unsigned int.
+
+2018-01-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	count.c: collect definitions of format strings in one place.
+	In an attempt to make it more readable.
+
+	* count.c (call_summary_pers): Put all format strings in static
+	constants. Use them.
+
+2018-01-07  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Add tcp arguments to netlink calls.
+	Since they call tracee-specific socket/sendmsg/recvmsg, we'd like to
+	pass tcp there.
+
+	* defs.h (genl_families_xlat): Add tcp argument.
+	* netlink.c (decode_nlmsg_type_default, decode_nlmsg_type_generic,
+	decode_nlmsg_type_netfilter, typedef nlmsg_types_decoder_t): Likewise.
+	(decode_nlmsg_type): Add tcp argument. Pass tcp to decoder call.
+	(print_nlmsghdr): Pass tcp to the decode_nlmsg_type call.
+	* socketutils.c (send_query, receive_responses): Add tcp argument.
+	(inet_send_query, unix_send_query, netlink_send_query, ): Add tcp argument.
+	Pass tcp to the send_query call.
+	(unix_get): Add tcp argument. Pass tcp to the unix_send_query and
+	receive_responses calls.
+	(inet_get): Add tcp argument. Pass tcp to the inet_send_query and
+	receive_responses calls.
+	(tcp_v4_get, udp_v4_get, tcp_v6_get, udp_v6_get): Add tcp argument. Pass
+	tcp to the inet_get call.
+	(netlink_get): Add tcp argument. Pass tcp to the netlink_send_query and
+	receive_responses calls.
+	(protocols): Add tcp argument to the get field.
+	(get_sockaddr_by_inode_uncached): Add tcp argument. Pass tcp to
+	the protocols[].get calls.
+	(print_sockaddr_by_inode_uncached): Add tcp argument. Pass tcp to
+	the get_sockaddr_by_inode_uncached call.
+	(get_sockaddr_by_inode): Pass tcp to the get_sockaddr_by_inode_uncached
+	call.
+	(print_sockaddr_by_inode): Pass tcp to the
+	print_sockaddr_by_inode_uncached call.
+	(genl_send_dump_families): Add tcp argument. Pass tcp to the send_query
+	call.
+	(genl_families_xlat): Add tcp argument. Pass tcp to the
+	genl_send_dump_families and receive_responses calls.
+
+2018-01-07  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Add tcp argument to clear_regs.
+	* defs.h (clear_regs): Add argument struct tcb *tcp.
+	* syscall.c (clear_regs): Likewise.
+	* strace.c (next_event): Pass tcp to clear_regs() call.
+
+2018-01-07  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Pass tcp argument to get_optmem_max/read_int_from_file.
+	In preparation to passing tcp to all tracee-related syscalls.
+
+	* defs.h (read_int_from_file): Add "struct tcb *" as the first argument.
+	* util.c (read_int_from_file): Likewise.
+	* msghdr.c (get_optmem_max): Add "struct tcb *tcp" as the first
+	argument, pass it to read_int_from_file call.
+	(decode_msg_control): Pass tcp to get_optmem_max.
+
+2018-01-07  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Include paths.h if it is available.
+	Use the OS definition of _PATH_BSHELL macro if it is available.
+
+	* configure.ac (AC_CHECK_HEADERS): Add paths.h.
+	* strace.c [HAVE_PATHS_H]: Include paths.h.
+
+2018-01-07  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	strace.c: avoid duplication of a format string in attach_tcb.
+	* strace.c (attach_tcb): Add task_path variable with the output format.
+	Use it for the procdir declaration and xsprintf format string argument.
+
+2018-01-07  Elvira Khabirova  <lineprinter@altlinux.org>
+
+	Move syscall_tampered to defs.h.
+	* syscall.c (syscall_tampered): Move ...
+	* defs.h: ... here.
+
+2018-01-07  Elvira Khabirova  <lineprinter@altlinux.org>
+
+	strace.c: rename set_sigaction to set_sighandler.
+	Since set_sigaction() actually specifies sa_handler and not sa_sigaction,
+	rename set_sigaction() to set_sighandler() for future definition of
+	set_sigaction() function as specifying sa_sigaction.
+
+	* strace.c (set_sigaction): Rename to set_sighandler.
+	All callers updated.
+
+2018-01-07  Elvira Khabirova  <lineprinter@altlinux.org>
+
+	.gitignore: ignore "gnu" directory created by st_MPERS m4 macro.
+
+	Update .mailmap.
+	* .mailmap (Elvira Khabirova): Add @altlinux.org.
+
+2018-01-07  Chen Jingpiao  <chenjingpiao@gmail.com>
+
+	.mailmap: add canonical name for Chen Jingpiao.
+	* .mailmap: Add canonical name for Chen Jingpiao.
+
+2018-01-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	personality.c: use sprintxval.
+	* personality.c (SYS_FUNC(personality)): Use sprintxval instead of local
+	implementation.
+
+2018-01-07  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	xlat.c: add sprintxval for printing xval to string.
+	* defs.h (sprintxval): New declaration.
+	(sprintxval): New function.
+
+2018-01-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	desc.c: use xsnprintf instead of sprintf.
+	* desc.c: Include "xstring.h".
+	(decode_select): Replace sprintf with xsnprintf.
+
+	xlat.c: use xsnprintf instead of sprintf.
+	* xlat.c: Include "xstring.h".
+	(sprintflags): Replace sprintf with xsnprintf.
+
+	open.c: use xsnprintf instead of sprintf.
+	* open.c: Include "xstring.h".
+	(sprint_open_modes): Replace sprintf with xsnprintf.
+
+	poll.c: use xs*printf instead of sprintf.
+	* poll.c: Include "xstring.h".
+	(decode_poll_exiting): Replace sprintf with xsnprintf and xsprintf.
+
+	signal.c: use xs*printf instead of sprintf.
+	* signal.c: Include "xstring.h".
+	(signame): Replace sprintf with xsprintf.
+	(sprintsigmask_n): Replace sprintf with xsnprintf.
+
+	print_timeval.c: use xsprintf instead of snprintf.
+	* print_timeval.c: Include "xstring.h".
+	(sprint_timeval, sprint_timeval32): Replace snprintf with xsprintf.
+
+	print_timespec.c: use xsprintf instead of snprintf.
+	* print_timespec.c: Include "xstring.h".
+	(sprint_timespec): Replace snprintf with xsprintf.
+
+	mmsghdr.c: use xsprintf instead of snprintf.
+	* mmsghdr.c: Include "xstring.h".
+	(SYS_FUNC(recvmmsg)): Replace snprintf with xsprintf.
+
+	socketutils.c: use xsprintf instead of snprintf.
+	* socketutils.c: Include "xstring.h".
+	(unix_parse_response): Replace snprintf with xsprintf.
+
+	alpha.c: use xsprintf instead of snprintf.
+	* alpha.c: Include "xstring.h".
+	(decode_getxxid): Replace snprintf with xsprintf.
+
+	v4l2.c: use xsprintf instead of sprintf.
+	* v4l2.c: Include "xstring.h".
+	(print_v4l2_create_buffers): Replace sprintf with xsprintf.
+
+	util.c: use x*sprintf instead of s*printf.
+	* util.c: Include "xstring.h".
+	(sprinttime_ex): Replace snprintf with xsnprintf.
+	(getfdproto): Replace sprintf with xsprintf.
+
+	unwind.c: use xsprintf instead of sprintf.
+	* unwind.c: Include "xstring.h".
+	(build_mmap_cache): Replace sprintf with xsprintf.
+
+	syscall.c: use xsprintf instead of sprintf.
+	* syscall.c: Include "xstring.h".
+	(get_scno): Replace sprintf with xsprintf.
+
+	resource.c: use xsprintf instead of sprintf.
+	* resource.c: Include "xstring.h".
+	(sprint_rlim64, sprint_rlim32): Replace sprintf with xsprintf.
+
+	pathtrace.c: use xsprintf instead of sprintf.
+	* pathtrace.c: Include "xstring.h".
+	(getfdpath): Replace sprintf with xsprintf.
+
+2018-01-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ldt.c: replace sprintf with xsprintf.
+	* ldt.c: Include "xstring.h".
+	(SYS_FUNC(set_thread_area)): Replace sprintf with xsprintf.
+
+2018-01-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace.c: use xsprintf instead of sprintf.
+	* strace.c: Include "xstring.h".
+	(strerror, newoutf, attach_tcb, print_debug_info): Replace sprintf
+	with xsprintf.
+
+2018-01-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ioprio.c: use xsprintf instead of sprintf.
+	* ioprio.c: Include "xstring.h".
+	(sprint_ioprio): Replace sprintf with xsprintf.
+
+2018-01-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce hardened xsprintf/xsnprintf macros.
+	Let's try to future/fool-proof code a bit by introducing variants
+	of sprintf/snprintf that die if an overflow (or an error) occurs.
+	They are deemed to be the default choice for printing to some local
+	string buffer where no sensible error handling is implemented.
+
+	* xstring.h: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+
+2018-01-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	count.c: use %9.u conversion specification.
+	Instead of printing to a temporary string.  This also fixes a subtle bug
+	when the output for a billion errors and more is cut and shown
+	incorrectly.
+
+	* count.c (struct call_counts): Change type of calls and errors fields
+	to unsigned int since they are used and printed as unsigned anyway.
+	(call_summary_pers): Remove error_str.  Print cc->errors
+	and error_cum using %9.u conversion specification.
+
+2018-01-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	count.c: use personality_names in call_summary report caption.
+	Otherwise the title is quite misleading for x32 personality.
+
+	* count.c (call_summary): Use personality_names.
+
+2018-01-05  Victor Krapivensky  <krapivenskiy.va@phystech.edu>
+
+	Move personality names to a global variable.
+	This is a part of "Prepare for adding support for Lua scripting"
+	commit.
+
+	* defs.h (personality_names): New external constant declaration.
+	* syscall.c: (personality_names): New global variable.
+	(update_personality): Use personality_names for reporting personality
+	name.
+
+	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2018-01-04  Lubomir Rintel  <lkundrak@v3.sk>
+
+	strace.spec.in: include Bluetooth headers for AF_BLUETOOTH sockets decoding
+	* strace.spec.in (BuildRequires): Add pkgconfig(bluez).
+
+2018-01-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Lift artificial limit on output file names in -ff mode.
+	Starting with commit v4.5.19~88 strace imposed an artificial limit
+	on output file names in -ff mode, leading to the following absurd
+	behaviour:
+
+	$ strace -ff -o"$(perl -e 'print "/" x 510')/$PWD/log" /bin/true
+	strace: Can't fopen '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.12345': Permission denied
+
+	* strace.c (newoutf): Raise buffer size to PATH_MAX.
+	(init) <followfork >= 2>: Check output file name prefix length.
+	* tests/options-syntax.test: Check it.
+
+2018-01-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	configure.ac: fix typo.
+	* configure.ac: Replace CPPFALGS with CPPFLAGS.
+
+	Fixes: v4.20-85-gf9c8e8a ("unwind: demangle symbol names")
+
+2018-01-03  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Change the first argument of upeek from pid to tcp.
+	All users were changed automatically by:
+
+		for i in `git grep -l 'upeek(tcp->pid'`; do \
+			sed -i 's/upeek(tcp->pid/upeek(tcp/g' "$i"; \
+		done
+
+	* upeek.c (upeek): Change the first argument from pid_t pid to struct
+	tcb *tcp. Use tcp->pid instead of pid in the function's body.
+	* defs.h (upeek): Update declaration.
+	* linux/alpha/arch_getrval2.c: Pass tcp instead of tcp->pid to the
+	upeek calls.
+	* linux/alpha/arch_rt_sigframe.c: Likewise.
+	* linux/alpha/arch_sigreturn.c: Likewise.
+	* linux/alpha/get_scno.c: Likewise.
+	* linux/alpha/get_syscall_args.c: Likewise.
+	* linux/alpha/get_syscall_result.c: Likewise.
+	* linux/bfin/arch_rt_sigframe.c: Likewise.
+	* linux/bfin/get_scno.c: Likewise.
+	* linux/bfin/get_syscall_args.c: Likewise.
+	* linux/bfin/get_syscall_result.c: Likewise.
+	* linux/crisv10/arch_rt_sigframe.c: Likewise.
+	* linux/crisv10/get_scno.c: Likewise.
+	* linux/crisv10/get_syscall_args.c: Likewise.
+	* linux/crisv10/get_syscall_result.c: Likewise.
+	* linux/hppa/arch_rt_sigframe.c: Likewise.
+	* linux/hppa/get_scno.c: Likewise.
+	* linux/hppa/get_syscall_args.c: Likewise.
+	* linux/hppa/get_syscall_result.c: Likewise.
+	* linux/microblaze/arch_rt_sigframe.c: Likewise.
+	* linux/microblaze/arch_sigreturn.c: Likewise.
+	* linux/microblaze/get_scno.c: Likewise.
+	* linux/microblaze/get_syscall_args.c: Likewise.
+	* linux/microblaze/get_syscall_result.c: Likewise.
+	* linux/powerpc/getregs_old.c: Likewise.
+	* linux/sh/arch_getrval2.c: Likewise.
+	* linux/sh/arch_rt_sigframe.c: Likewise.
+	* linux/sh/get_scno.c: Likewise.
+	* linux/sh/get_syscall_args.c: Likewise.
+	* linux/sh/get_syscall_result.c: Likewise.
+	* linux/sh64/get_scno.c: Likewise.
+	* linux/sh64/get_syscall_args.c: Likewise.
+	* linux/sh64/get_syscall_result.c: Likewise.
+	* linux/xtensa/arch_rt_sigframe.c: Likewise.
+	* linux/xtensa/get_scno.c: Likewise.
+	* linux/xtensa/get_syscall_args.c: Likewise.
+	* linux/xtensa/get_syscall_result.c: Likewise.
+	* syscall.c: Likewise.
+
+2018-01-03  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Change argument of getregs_old from pid to tcp.
+	* linux/powerpc/getregs_old.c (getregs_old): Change the first argument
+	from pid_t pid to struct tcb *tcp. Replace all instances of pid with
+	tcp->pid.
+	* linux/x86_64/getregs_old.c (getregs_old): Likewise.
+	* linux/x86_64/getregs_old.h (getregs_old): Update declaration.
+	* syscall.c (get_regs) [HAVE_GETREGS_OLD]: Pass tcp to the getregs_old
+	call instead of tcp->pid.
+
+2018-01-03  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Change the first argument of upoke from pid to tcp.
+	Users were updated automatically by:
+
+		for i in `git grep -l 'upoke(tcp->pid'`; do \
+			sed -i 's/upoke(tcp->pid/upoke(tcp/g' "$i"; \
+		done
+
+	* upoke.c (upoke): Change the first argument from pid_t pid to struct
+	tcb *tcp. Use tcp->pid instead of pid in the function's body.
+	* defs.h (upoke): Update declaration.
+	* linux/alpha/set_error.c (arch_set_error, arch_set_success): Provide
+	tcp in the first argument of the upoke call instead of tcp->pid.
+	* linux/alpha/set_scno.c (arch_set_scno): Likewise.
+	* linux/bfin/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/bfin/set_scno.c (arch_set_scno): Likewise.
+	* linux/crisv10/set_error.c (arch_set_error, arch_set_success):
+	Likewise.
+	* linux/crisv10/set_scno.c (arch_set_scno): Likewise.
+	* linux/hppa/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/hppa/set_scno.c (arch_set_scno): Likewise.
+	* linux/i386/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/i386/set_scno.c (arch_set_scno): Likewise.
+	* linux/microblaze/set_error.c (arch_set_error, arch_set_success):
+	Likewise.
+	* linux/microblaze/set_scno.c (arch_set_scno): Likewise.
+	* linux/powerpc/set_error.c (arch_set_error, arch_set_success):
+	Likewise.
+	* linux/powerpc/set_scno.c (arch_set_scno): Likewise.
+	* linux/sh/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/sh/set_scno.c (arch_set_scno): Likewise.
+	* linux/sh64/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/sh64/set_scno.c (arch_set_scno): Likewise.
+	* linux/x86_64/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/x86_64/set_scno.c (arch_set_scno): Likewise.
+	* linux/xtensa/set_error.c (arch_set_error, arch_set_success): Likewise.
+	* linux/xtensa/set_scno.c (arch_set_scno): Likewise.
+
+2018-01-03  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	Move enum trace_event into a separate header.
+	As it will have users outside strace.c in the future.
+
+	* trace_event.h (enum trace_event): Move it from...
+	* strace.c (enum trace_event): ...here.
+	(#include "trace_event.h"): New header, for enum trace_event.
+	* Makefile.am (strace_SOURCES): Add trace_event.h.
+
+2018-01-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Call get_scno during startup_tcb only for forcibly attached processes.
+	Otherwise it makes little sense on most arches to try to get syscall
+	number.
+
+	* defs.h (TCB_GRABBED): New tcb flag.
+	* strace.c (attach_tcb): Set TCB_GRABBED for the tcb.
+	(startup_tcb): Call get_scno() only if process is grabbed and its
+	registers may contain syscall number information.
+
+	Reported-by: Dmitry V. Levin <ldv@altlinux.org>
+	Closes: https://github.com/strace/strace/issues/22
+
+2018-01-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.c: sort getopt switch branches alphabetically.
+	There's no reason to have them out of order. This also (almost) matches
+	their order in the getopt call argument, introduced in
+	v4.20-64-g61c03be.
+
+	* strace.c (init): Sort branches in the getopt switch routine.
+
+2018-01-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.c: check for (non)zero argc instead of argv[0]
+	Since we can never be sure that we have NULL behind the last entry of
+	the argv array.
+
+	* strace.c (init): Check for non-zero argc before/instead of argv[0].
+
+2018-01-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1: advertise strace-log-merge.
+	In order to raise awareness about strace-log-merge, mention it in
+	SEE ALSO section and -ff option description.
+
+	* strace.1.in (.SS Filtering) <.TP .B \-ff>: Mention strace-log-merge.
+	(.SH "SEE ALSO"): Likewise.
+
+2017-12-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	unwind: demangle function arguments.
+	* unwind.c (print_stack_frame): Specify demangling style.
+	* tests/strace-k.test (result): Update regexp.
+	* tests/strace-k-demangle.test (expected): Update expected output.
+
+	tests: check strace -k symbol names demangling.
+	* tests/strace-k-demangle.test: New test.
+	* tests/stack-fcall-mangled.c: New file.
+	* tests/stack-fcall-mangled-0.c: Likewise.
+	* tests/stack-fcall-mangled-1.c: Likewise.
+	* tests/stack-fcall-mangled-2.c: Likewise.
+	* tests/stack-fcall-mangled-3.c: Likewise.
+	* tests/stack-fcall.h [MANGLE] (f0, f1, f2, f3): New macros.
+	* tests/.gitignore: Add stack-fcall-mangled.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(stack_fcall_mangled_SOURCES): New variable.
+	(EXTRA_DIST): Add strace-k-demangle.test.
+	[USE_LIBUNWIND && USE_DEMANGLE] (LIBUNWIND_TESTS): Likewise.
+
+2017-12-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: parametrize strace-k.test.
+	Prepare for the check of strace -k symbol names demangling.
+
+	* tests/strace-k.test: Parametrize $test_prog and $expected.
+	* tests/stack-fcall.h: New file.
+	* tests/stack-fcall.c: Include "stack-fcall.h"
+	* tests/stack-fcall-0.c: Likewise.
+	* tests/stack-fcall-1.c: Likewise.
+	* tests/stack-fcall-2.c: Likewise.
+	* tests/stack-fcall-3.c: Likewise.
+	* tests/Makefile.am (EXTRA_DIST): Add stack-fcall.h.
+
+2017-12-26  Masatake YAMATO  <yamato@redhat.com>
+
+	unwind: demangle symbol names.
+	Implement demangling of C++ symbol names in stack trace
+	using cplus_demangle function from GNU libiberty library.
+
+	This is an example demangled stack trace output:
+
+	fstat(5, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
+	 > /usr/lib64/libc-2.25.so(__fxstat64+0x12) [0xffd62]
+	 > /usr/lib64/libc-2.25.so(_IO_file_doallocate+0x5f) [0x717ff]
+	 > /usr/lib64/libc-2.25.so(_IO_doallocbuf+0x79) [0x81699]
+	 > /usr/lib64/libc-2.25.so(_IO_file_overflow+0x198) [0x807b8]
+	 > /usr/lib64/libc-2.25.so(_IO_file_xsputn+0xbd) [0x7ed5d]
+	 > /usr/lib64/libc-2.25.so(fwrite_unlocked+0x60) [0x7d800]
+	 > /usr/lib64/libleveldb.so.1.18(leveldb::EnvWrapper::StartThread+0x3b6) [0x48656]
+	 > /usr/lib64/libleveldb.so.1.18(leveldb::log::Writer::EmitPhysicalRecord+0x89) [0x28bc9]
+	 > /usr/lib64/libleveldb.so.1.18(leveldb::log::Writer::AddRecord+0x9e) [0x28d9e]
+	 > /usr/lib64/libleveldb.so.1.18(leveldb::DBImpl::Write+0x208) [0x1ce18]
+	 > /usr/lib64/libleveldb.so.1.18(leveldb::DB::Put+0x59) [0x192b9]
+	 > /usr/lib64/libleveldb.so.1.18(leveldb::DBImpl::Put+0x1d) [0x1931d]
+	 > /home/yamato/var/leveldb/doc/a.out(main+0x120) [0x1107]
+	 > /usr/lib64/libc-2.25.so(__libc_start_main+0xea) [0x2088a]
+	 > /home/yamato/var/leveldb/doc/a.out(_start+0x2a) [0xf3a]
+
+	* Makefile.am [USE_DEMANGLE] (strace_CPPFLAGS, strace_LDFLAGS,
+	libiberty_LDADD): Append libiberty_CPPFLAGS, strace_LDFLAGS, and
+	libiberty_LIBS, respectively.
+	* configure.ac: Add --with-libiberty option.  Check cplus_demangle
+	support in libiberty.
+	* unwind.c [USE_DEMANGLE]: Include <demangle.h>.
+	(print_stack_frame) [USE_DEMANGLE]: Use cplus_demangle.
+
+2017-12-26  Masatake YAMATO  <yamato@redhat.com>
+
+	Define macros for renaming xmalloc and xcalloc.
+	I'm planning to link strace with libiberty for mangling C++
+	symbol names in stack trace enabled with -k option.
+
+	Both names, xmalloc and xcalloc, are already defined and used
+	in libiberty, and they conflict with functions in strace.
+	Rename xmalloc and xcalloc functions defined in strace
+	to strace_xmalloc and strace_xcalloc, respectively,
+	to avoid this conflict.
+
+	* xmalloc.h (xcalloc, xmalloc): New macros.
+
+2017-12-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	syscall: move a sparc specific include to an arch specific file.
+	* syscall.c [SPARC64]: Do not include <asm/psrcompat.h>.
+	[SPARC]: Do not include <asm/psr.h>.
+	* linux/sparc/get_error.c: Include <asm/psr.h>.
+
+	syscall: move all ia64 specific includes to an arch specific file.
+	* syscall.c [IA64]: Remove.
+	* linux/ia64/get_syscall_args.c: Include <asm/rse.h>.
+
+	syscall: simplify get_syscall_result.
+	* syscall.c [ptrace_getregset_or_getregs] (get_syscall_result_regs):
+	Define to get_regs.
+	(get_syscall_result): Use get_syscall_result_regs unconditionally.
+
+2017-12-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	syscall: change get_regs argument type.
+	This opens the way for future changes related to get_regs.
+
+	* syscall.c (get_regs): Change argument type from "pid_t"
+	to "struct tcb *", all callers changed.
+
+2017-12-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	syscall: move get_regs call from syscall_exiting_decode to get_syscall_result
+	This make the code less confusing and opens the way for future changes
+	related to get_regs.
+
+	* syscall.c (syscall_exiting_decode): Move get_regs invocation ...
+	(get_syscall_result) [ptrace_getregset_or_getregs]: ... here.
+
+2017-12-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	syscall: rework subcall decoding on mips o32.
+	Move syscall subcall handling to the same switch statement that
+	handles ipc and socket subcalls.
+
+	* linux/mips/syscallent-o32.h [LINUX_MIPSO32] (SYS_syscall_subcall):
+	Define.
+	* syscall.c (decode_mips_subcall): Rename to decode_syscall_subcall,
+	conditionalize on SYS_syscall_subcall instead of LINUX_MIPSO32.
+	(syscall_entering_decode) [LINUX_MIPSO32]: Remove.
+	(syscall_entering_decode) [SYS_syscall_subcall]: Handle SEN_syscall
+	using decode_syscall_subcall.
+
+2017-12-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	syscall: tweak shuffle_scno ifdefery.
+	* syscall.c (shuffle_scno): Check for ARM_FIRST_SHUFFLED_SYSCALL
+	instead of ARM || AARCH64.  This does not result to any code change
+	but looks more comprehensible.
+
+	syscall: change get_regs to return an error code.
+	* syscall.c (get_regs_error) [!ptrace_getregset_or_getregs]: Do not
+	define.
+	(clear_regs) [!ptrace_getregset_or_getregs]: Do not set get_regs_error.
+	(get_regs) [ptrace_getregset_or_getregs]: Return get_regs_error, all
+	callers changed to test get_regs return code instead of get_regs_error
+	static variable, which is now internally used by get_regs() and
+	clear_regs() only.
+	(USE_GET_SYSCALL_RESULT_REGS): Do not define.
+	Use "#ifndef ptrace_getregset_or_getregs"
+	instead of "#ifdef USE_GET_SYSCALL_RESULT_REGS".
+
+2017-12-24  Harsha Sharma  <harshasharmaiitr@gmail.com>
+
+	tests: enhance run.sh usage error diagnostics.
+	* tests/run.sh: Execute timeout command only when invoked with
+	an argument, otherwise print an error message.
+
+2017-12-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: skip nsyscalls-d.test on mips o32.
+	On mips o32, nsyscalls test is implemented using syscall #4000,
+	so nsyscalls-d cannot work there.
+
+	* tests/nsyscalls-d.test: Skip on mips o32.
+
+2017-12-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Remove linux/ptp_clock.h.
+	As linux kernel provides a compatible linux/ptp_clock.h header since
+	commit v3.8-rc1~139^2~514, there is no need for a local copy.
+
+	* linux/ptp_clock.h: Remove.
+	* Makefile.am (EXTRA_DIST): Remove it.
+	* configure.ac (AC_CHECK_TYPES): Check for struct ptp_sys_offset
+	in <linux/ptp_clock.h>.
+	* ioctl.c (ioctl_decode) <case '='>: Conditionalize
+	on [HAVE_STRUCT_PTP_SYS_OFFSET].
+	* ptp.c: Likewise.
+
+2017-12-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Remove linux/ubi-user.h.
+	As linux kernel provides a compatible mtd/ubi-user.h header since
+	commit v3.7-rc1~85^2~17, there is no need for a local copy.
+
+	* linux/ubi-user.h: Remove.
+	* Makefile.am (EXTRA_DIST): Remove it.
+	* configure.ac (AC_CHECK_MEMBERS): Check
+	for struct ubi_attach_req.max_beb_per1024 in <mtd/ubi-user.h>.
+	* ioctl.c (ioctl_decode) <case 'o', case 'O'>: Conditionalize
+	on HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024.
+	* ubi.c: Likewise.
+
+2017-12-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Remove linux/mtd-abi.h.
+	As linux kernel provides a compatible mtd/mtd-abi.h header since
+	commit v3.2-rc1~14^2~33, there is no need for a local copy.
+
+	* linux/mtd-abi.h: Remove.
+	* Makefile.am (EXTRA_DIST): Remove it.
+	* configure.ac (AC_CHECK_TYPES): Check for struct mtd_write_req
+	in <mtd/mtd-abi.h>.
+	* ioctl.c (ioctl_decode) <case 'M'>: Conditionalize
+	on [HAVE_STRUCT_MTD_WRITE_REQ].
+	* mtd.c: Likewise.
+	* tests/ioctl_mtd.c: Likewise.
+	* tests/ioctl.c (main): Likewise.
+
+2017-12-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Remove linux/personality.h.
+	* linux/personality.h: Remove.
+	* Makefile.am (EXTRA_DIST): Remove it.
+	* personality.c: Do not include <linux/personality.h>, include
+	"xlat/personality_flags.h" before "xlat/personality_types.h".
+	* xlat/personality_flags.in: Provide fallback definitions.
+	* xlat/personality_types.in: Likewise.
+
+2017-12-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	travis: switch from clang-3.8 to clang.
+	As travis provides a relatively fresh clang by default nowadays,
+	it makes sense to use default clang in clang-based test builds.
+
+	* .travis.yml (matrix): Change clang-3.8 to clang.
+
+2017-12-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: mention perf and ftrace in SEE ALSO.
+	* strace.1.in (.SH SEE ALSO): Add references to perf-trace(1) and
+	trace-cmd(1).
+
+	strace.1.in: clarify -F option behaviour.
+	* strace.1.in <.TP \-F>: Extend deprecation warning.  Describe behaviour
+	of multiple instances of -F and interoperability of -F and -f.
+
+2017-12-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: consistently use $STRACE_EXE instead of local alternatives.
+	* tests/get_regs.test: Replace "${STRACE##* }" with "$STRACE_EXE".
+	* tests/options-syntax.test: Replace "$strace_exp" with "$STRACE_EXE".
+	* tests/syntax.sh: Likewise.
+
+2017-12-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace.c: inform the user about -F option obsolescence.
+	* strace.c (init): Print an error message if the option is used.
+
+2017-12-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.c: sort option arguments alphabetically.
+	Except for the ones that enabled by configure options.
+
+	While we are here, let's also change the indentation of while expression
+	continuation in order to separate it from the following switch clause.
+
+	* strace.c (init): Reorder options in getopt() call.
+
+2017-12-20  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	strace.c: use _exit() instead of exit() in child's die()
+	Let's keep child's death routine as minimalistic as possible for the
+	cases when vfork() is used instead of fork() on systems that lack MMU.
+
+	* strace.c (die) <!(strace_tracer_pid == getpid())>: Call _exit().
+
+2017-12-20  Harsha Sharma  <harshasharmaiitr@gmail.com>
+
+	syscall: replace if (debug_flag) ... with debug_msg macro.
+	* syscall.c (get_scno): Use debug_msg instead of
+	"if (debug_flag) error_msg".
+
+2017-12-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check (some) debugging output generated during nsyscalls test.
+	* tests/nsyscalls-d.c: New file.
+	* tests/.gitignore: Add it.
+	* tests/nsyscalls-d.test: New test, variant of nsyscalls.test with debug
+	output check.
+	* tests/nsyscalls-nd.test: Likewise.
+	* tests/nsyscalls.c: Add expected debug output.
+	* tests/Makefile.am (check_PROGRAMS): Add nsyscalls-d.
+	(DECODER_TESTS): Add nsyscalls-d.test and nsyscalls-nd.test.
+
+2017-12-20  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	pathtrace.c: use xgrowarray.
+	* defs.h <struct path_set>: Change type of num_selected field to size_t.
+	Add size field.
+	* pathtrace.c (storepath): Rewrite to utilise xgrowarray.
+
+2017-12-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	dyxlat: use xgrowarray.
+	* dyxlat.c (dyxlat_alloc): Use xgrowarray instead of xcalloc.
+	(dyxlat_add_pair): Use xgrowarray instead of xreallocarray.
+
+	unwind: use xgrowarray.
+	* unwind.c (get_symbol_name): Use xgrowarray instead of manual
+	dynamic array management using xreallocarray.
+
+2017-12-14  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	strace.c: use xgrowarray.
+	* strace.c (tcbtabsize): Change type to size_t.
+	(expand_tcbtab): Rewrite in order to utilise xgrowarray
+	instead of manual dynamic array management.
+
+	unwind: use xgrowarray.
+	* unwind.c (build_mmap_cache): Use xgrowarray instead of manual dynamic
+	array management.
+
+2017-12-14  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	xmalloc.c: introduce xgrowarray helper function.
+	In order to simplify dynamic array management code.
+
+	* xmalloc.h (xgrowarray): New declaration.
+	* xmalloc.c (xgrowarray): New function.
+
+2017-12-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check error diagnostics when exec file name is too long.
+	* tests/options-syntax.test: Check error diagnostics when
+	exec file name length equals to PATH_MAX.
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	strace.c: minor style fixes.
+	* strace.c (test_ptrace_seize): Remove excess braces.
+	(init): Wrap overly long string literal.  Add braces
+	to the else if branch.
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	strace.c: use *_func_* message printing macros where appropriate.
+	In order to provide some additional bits of information in weird error
+	cases or just replace existing usages of __func__/literal function name.
+
+	* strace.c (detach): Use perror_func_msg() instead of perror_msg().
+	(startup_attach, open_dummy_desc, startup_child, test_ptrace_seize): Use
+	perror_func_msg_and_die() instead of perror_msg_and_die().
+	(test_ptrace_seize): Use error_func_msg_and_die() instead of
+	error_msg_and_die().
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	unwind.c: more verbose mapping overlapping diagnostic message.
+	* unwind.c (build_mmap_cache): Change error_msg() to debug_msg(), add
+	information about region names and the respective start and end
+	addresses.
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	unwind.c: non-fatal handling of asprintf error.
+	An error returned by asprintf is a poor excuse for dying.
+
+	* unwind.c (asprintf_error_str): New string constant.
+	(sprint_call_or_error): Replace error_msg_and_die() with
+	perror_func_msg() and usage of asprintf_error_str for a return value.
+	(queue_print): Free tmp->output line only if it is not
+	asprintf_error_str.
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	unwind.c: eliminate DPRINTF.
+	Since DPRINTF is simply a macro that provides debugging information
+	along with some information about printing routine call site, now standard
+	debug_func_* macros are deemed to be a suitable replacement.
+
+	* unwind.c (DPRINTF): Remove.
+	(build_mmap_cache, delete_mmap_cache, unwind_cache_invalidate,
+	unwind_print_stacktrace, unwind_captiure_stacktrace): Replace
+	DPRINTF(fmt, str, ...) with debug_func_msg(fmt, ...)/
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	strace.c: replace if (debug_flag) ... with suitable debug printing macros
+	* strace.c (alloc_tcb, droptcb, detach, attach_tcb, test_ptrace_seize,
+	init, startup_tcb): Replace if (debug_flag) error_msg(...) occurrences
+	with debug_error_msg(...).
+	(attach_tcb): Replace if (debug_flag) perror_msg(...) with
+	debug_perror_msg(...).
+	(cleanup, startup_tcb): Replace if (debug_flag) error_msg(...)
+	occurrences with debug_func_msg() in attempt to provide additional
+	information.
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	error_prints.h: add *_func_* printing macros.
+	In order to reduce boilerplate for the cases when __func__ is desired
+	to be printed.
+
+	* error_prints.h (error_func_msg, perror_func_msg, debug_func_msg,
+	debug_func_perror_msg, error_func_msg_and_die, perror_func_msg_and_die):
+	New macro definitions.
+
+2017-12-13  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	error_prints.h: add debug print macros.
+	* defs.h (debug_flag): Move the declaration...
+	* error_prints.h (debug_flag): ... here.
+	(debug_msg, debug_perror_msg): New macro definitions.
+	Include <stdbool.h> for the debug_flag declaration.
+
+2017-12-04  Masatake YAMATO  <yamato@redhat.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check decoding of KVM ioctl commands.
+	* tests/ioctl_kvm_run.c: New file.
+	* tests/ioctl_kvm_run.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add ioctl_kvm_run.test.
+	* tests/pure_executables.list: Add ioctl_kvm_run.
+	* tests/.gitignore: Likewise.
+
+2017-12-04  Masatake YAMATO  <yamato@redhat.com>
+
+	kvm: decode the argument of KVM_{SET, GET}_SREGS ioctl command.
+	* configure.ac (AC_CHECK_TYPES): Add struct kvm_sregs.
+	* kvm.c [HAVE_STRUCT_KVM_SREGS] (kvm_ioctl_decode_sregs): New function.
+	(kvm_ioctl) [HAVE_STRUCT_KVM_SREGS] <KVM_SET_SREGS, KVM_GET_SREGS>:
+	Use it.
+	* linux/arch_kvm.c (arch_print_kvm_sregs): New function.
+	* linux/x86_64/arch_kvm.c (PRINT_FIELD_KVM_SREGS_STRUCT): New macro.
+	(kvm_ioctl_decode_regs_dtable, kvm_ioctl_decode_regs_segment,
+	arch_print_kvm_sregs): New functions.
+
+	kvm: decode the argument of KVM_{SET, GET}_REGS ioctl command.
+	* configure.ac (AC_CHECK_TYPES): Add struct kvm_regs.
+	* linux/arck_kvm.c: New file.
+	* linux/x86_64/arch_kvm.c: Likewise.
+	* linux/i386/arch_kvm.c: Likewise.
+	* linux/x32/arch_kvm.c: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+	* kvm.c: Include "arch_kvm.c".
+	[HAVE_STRUCT_KVM_REGS] (kvm_ioctl_decode_regs): New function.
+	(kvm_ioctl) [HAVE_STRUCT_KVM_REGS] <KVM_SET_REGS, KVM_GET_REGS>: Use it.
+
+	kvm: decode the argument of KVM_SET_USER_MEMORY_REGION ioctl command.
+	* configure.ac (AC_CHECK_TYPES): Add struct kvm_userspace_memory_region.
+	* xlat/kvm_mem_flags.in: New file.
+	* kvm.c: Include print_fields.h.
+	[HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION]: Include xlat/kvm_mem_flags.h,
+	(kvm_ioctl_set_user_memory_region): New function.
+	(kvm_ioctl) [HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION]
+	<KVM_SET_USER_MEMORY_REGION>: Use it.
+
+2017-12-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add strace mascot.
+	* strace.svg: New file.
+
+	Co-Authored-by: Vitaly Chaykovsky <mgspeker@gmail.com>
+
+2017-12-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify attach-p-cmd.test against buggy kernels.
+	From time to time various kernels, old and new, just go nuts
+	and fail attach-p-cmd.test with the following diagnostics:
+
+	 12345 --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
+	-12345 chdir("attach-p-cmd.test -p") = -1 ENOENT (No such file or directory)
+	+12345 syscall_4294967295(0xffe60934, 0x1c0, 0xffe60934, 0x1, 0xffe609b4, 0xffe60a58) = -1 (errno 38)
+	+12345 chdir("attach-p-cmd.test -p") = -1 ENOSYS (Function not implemented)
+
+	Let's workaround this kernel madness by rewriting the test
+	without use of SIGALRM.
+
+	* tests/attach-p-cmd.h: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add attach-p-cmd.h.
+	* tests/attach-p-cmd-cmd.c: Include "attach-p-cmd.h".
+	(write_pidfile, wait_for_peer_invocation): New functions.
+	(main): Use them.
+	* tests/attach-p-cmd-p.c: Include <time.h> and "attach-p-cmd.h".
+	(wait_for_peer_invocation, wait_for_peer_termination): New functions.
+	(main): Use them.  Do not raise SIGALRM, use nanosleep after peer
+	termination.
+
+2017-12-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify ipc_msgbuf.test against broken libc.
+	glibc between commits glibc-2.25~130 and glibc-2.26~740 had broken
+	msgctl(IPC_RMID) on hppa: this operation always failed with EINVAL
+	because of inappropriate use of IPC_64 flag.  Similar issues were
+	fixed on other niche architectures.  Let's workaround these issues
+	by skipping the test in case of msgctl(IPC_RMID) failure.
+
+	* tests/ipc_msgbuf.c (cleanup): Change return type to int,
+	return 77 in case of msgctl(IPC_RMID) failure.
+	(main): Explicitly invoke cleanup() at the end.
+
+2017-12-01  Masatake YAMATO  <yamato@redhat.com>
+
+	kvm: decode the argument of KVM_CREATE_VCPU ioctl command.
+	* kvm.c (kvm_ioctl_create_vcpu): New function.
+	(kvm_ioctl) <KVM_CREATE_VCPU>: Use it.
+
+	kvm: handle KVM_CREATE_VM ioctl command.
+	* kvm.c (kvm_ioctl): Handle KVM_CREATE_VM command.
+
+	kvm: handle KVM_RUN, KVM_GET_VCPU_MMAP_SIZE, and KVM_GET_API_VERSION ioctl commands
+	* kvm.c (kvm_ioctl): Handle KVM_RUN, KVM_GET_VCPU_MMAP_SIZE,
+	and KVM_GET_API_VERSION commands.
+
+	ioctl: add a stub for decoding kvm related ioctls.
+	* kvm.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* configure.ac (AC_CHECK_HEADERS): Add linux/kvm.h.
+	* defs.h (kvm_ioctl): New prototype.
+	* ioctl.c (ioctl_decode) HAVE_LINUX_KVM_H]: Use kvm_ioctl.
+
+2017-11-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace-log-merge: work around corner cases of strace -ttt parsing.
+	Employing strace -ttt for the logs destined to be fed to
+	strace-log-merge is ultimately the best solution except for the logs
+	that pass the following dates:
+
+	Thu Jan  1 00:00:09 UTC 1970
+	Thu Jan  1 00:01:39 UTC 1970
+	Thu Jan  1 00:16:39 UTC 1970
+	Thu Jan  1 02:46:39 UTC 1970
+	Fri Jan  2 03:46:39 UTC 1970
+	Mon Jan 12 13:46:39 UTC 1970
+	Sun Apr 26 17:46:39 UTC 1970
+	Sat Mar  3 09:46:39 UTC 1973
+	Sun Sep  9 01:46:39 UTC 2001
+	Sat Nov 20 17:46:39 UTC 2286
+	Wed Nov 16 09:46:39 UTC 5138
+	Fri Sep 27 01:46:39 UTC 33658
+	Sun May 20 17:46:39 UTC 318857
+	Sat Nov  7 09:46:39 UTC 3170843
+	Sun Jul  5 01:46:39 UTC 31690708
+	Sat Jan 25 17:46:39 UTC 316889355
+
+	Let's lift this limitation.
+
+	* strace-log-merge: Generate numeric-only key for sorting, use sort -n
+	option.
+
+2017-11-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	debian: add strace-log-merge to the list of installed files.
+	* debian/strace.install: Add strace-log-merge.
+
+	Add strace-log-merge man page.
+	* strace-log-merge.1.in: New file.
+	* NEWS: Mention this.
+	* .gitignore: Add strace-log-merge.1.
+	* Makefile.am (man_MANS): Likewise.
+	* configure.ac (AC_CONFIG_FILES): Likewise.
+	* debian/strace.manpages: Likewise.
+
+	strace-log-merge: add copyright header.
+
+2017-11-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Add initial GitLab CI support.
+	* .gitlab-ci.yml: New file.
+	* travis-build.sh: Print $CC -print-multi-lib.  Print config.log
+	in case of configure failure.
+	* travis-install.sh: Check sudo availability.  Install autoconf,
+	automake, file, gawk, gcc-multilib, git, gzip, make, and xz-utils
+	for all targets.
+	(musl-gcc): Install ca-certificates.
+
+2017-11-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mpers: fix cross-compiling.
+	In cross builds, a target version of readelf has to be used
+	instead of a native one.
+
+	* configure.ac (AC_CHECK_TOOL): Add readelf.
+	* Makefile.am (READELF): New variable.
+	(mpers-m%.stamp): Pass it to $(srcdir)/mpers.sh.
+	* m4/mpers.m4 (st_MPERS): Pass READELF environment variable
+	to $srcdir/mpers_test.sh.
+	* mpers.sh (READELF): New variable.
+	Use it instead of readelf.
+	* maint/ioctls_sym.sh: Likewise.
+	* NEWS: Mention this fix.
+
+	Reported-by: Rolf Eike Beer <eb@emlix.com>
+
+2017-11-22  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix llseek test.
+	* tests/llseek.test: Fix typo.
+
+	INSTALL-git.md: fix typo.
+
+	tests: simplify bpf test a bit.
+	* tests/bpf.c (DEF_BPF_INIT_FIRST): New macro.
+	(init_BPF_MAP_CREATE_first, init_BPF_MAP_LOOKUP_ELEM_first,
+	init_BPF_PROG_LOAD_first, init_BPF_OBJ_PIN_first,
+	init_BPF_PROG_ATTACH_first, init_BPF_PROG_TEST_RUN_first,
+	init_BPF_PROG_GET_NEXT_ID_first, init_BPF_OBJ_GET_INFO_BY_FD_first):
+	Use it.
+
+2017-11-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Implement decoding of BPF_OBJ_GET_INFO_BY_FD command of bpf syscall.
+	* configure.ac (AC_CHECK_MEMBERS): Add union bpf_attr.info.info.
+	* bpf.c (decode_BPF_OBJ_GET_INFO_BY_FD): New function.
+	(SYS_FUNC(bpf)) <bpf_cmd_decoders>: Use it.
+	* NEWS: Mention this.
+	* tests/bpf.c: Add macro guard for BPF_OBJ_GET_INFO_BY_FD decoder test.
+	[HAVE_UNION_BPF_ATTR_INFO_INFO] (sample_BPF_OBJ_GET_INFO_BY_FD_attr):
+	New variable.
+	[HAVE_UNION_BPF_ATTR_INFO_INFO] (init_BPF_OBJ_GET_INFO_BY_FD_first,
+	print_BPF_OBJ_GET_INFO_BY_FD_first, init_BPF_OBJ_GET_INFO_BY_FD_attr,
+	print_BPF_OBJ_GET_INFO_BY_FD_attr): New functions.
+	(main) [HAVE_UNION_BPF_ATTR_INFO_INFO]: Use them.
+
+	Simplify union bpf_attr field checks.
+	* configure.ac: Use AC_CHECK_MEMBERS instead of st_CHECK_UNION_BPF_ATTR
+	for union bpf_attr field checks as the former seems to be enough
+	for the case.
+	* m4/st_bpf.m4: Remove.
+
+	Implement decoding of BPF_*_GET_*_ID commands of bpf syscall.
+	* configure.ac: Check for union bpf_attr.next_id.
+	* bpf.c (decode_BPF_PROG_GET_NEXT_ID, decode_BPF_PROG_GET_FD_BY_ID,
+	* decode_BPF_MAP_GET_FD_BY_ID): New functions.
+	(decode_BPF_MAP_GET_NEXT_ID): New macro.
+	(SYS_FUNC(bpf)) <bpf_cmd_decoders>: Use them.
+	* NEWS: Mention this.
+	* tests/bpf.c: Add macro guard for BPF_*_GET_*_ID decoder tests.
+	[HAVE_UNION_BPF_ATTR_NEXT_ID] (init_BPF_PROG_GET_NEXT_ID_first,
+	print_BPF_PROG_GET_NEXT_ID_first, init_BPF_PROG_GET_NEXT_ID_attr,
+	print_BPF_PROG_GET_NEXT_ID_attr, print_BPF_PROG_GET_FD_BY_ID_first,
+	print_BPF_PROG_GET_FD_BY_ID_attr, print_BPF_MAP_GET_NEXT_ID_first,
+	print_BPF_MAP_GET_NEXT_ID_attr): New functions.
+	(init_BPF_MAP_GET_NEXT_ID_first, print_BPF_MAP_GET_NEXT_ID_first,
+	init_BPF_MAP_GET_NEXT_ID_attr, print_BPF_MAP_GET_NEXT_ID_attr,
+	init_BPF_PROG_GET_FD_BY_ID_first, init_BPF_PROG_GET_FD_BY_ID_attr,
+	init_BPF_MAP_GET_FD_BY_ID_first, init_BPF_MAP_GET_FD_BY_ID_attr):
+	New macros.
+	(main) [HAVE_UNION_BPF_ATTR_NEXT_ID]: Use them.
+
+2017-11-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Implement decoding of BPF_PROG_TEST_RUN command of bpf syscall.
+	* configure.ac: Check for union bpf_attr.test.duration.
+	* bpf.c (decode_BPF_PROG_TEST_RUN): New function.
+	(SYS_FUNC(bpf)) <bpf_cmd_decoders>: Use it.
+	* NEWS: Mention this.
+	* tests/bpf.c: Include "print_fields.h".
+	Add macro guard for BPF_PROG_TEST_RUN decoder test.
+	[HAVE_UNION_BPF_ATTR_TEST_DURATION] (sample_BPF_PROG_TEST_RUN_attr):
+	New variable.
+	[HAVE_UNION_BPF_ATTR_TEST_DURATION] (init_BPF_PROG_TEST_RUN_first,
+	print_BPF_PROG_TEST_RUN_first, init_BPF_PROG_TEST_RUN_attr,
+	print_BPF_PROG_TEST_RUN_attr): New functions.
+	(main) [HAVE_UNION_BPF_ATTR_TEST_DURATION]: Use them.
+
+2017-11-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: update BPF_MAP_CREATE decoding.
+	Implement decoding of union bpf_attr.numa_node field for BPF_MAP_CREATE
+	command introduced by linux kernel commit v4.14-rc1~130^2~196^2~1.
+
+	* configure.ac: Check for numa_node member of union bpf_attr
+	instead of inner_map_fd.
+	(decode_BPF_MAP_CREATE): Add numa_node field to the structure, print it.
+	* NEWS: Mention this.
+	* tests/bpf.c: Update macro guards of BPF_MAP_CREATE decoder test.
+	(init_BPF_MAP_CREATE_first, print_BPF_MAP_CREATE_attr): Update expected
+	output.
+	(init_BPF_MAP_CREATE_attr): Initialize numa_node field, update offset.
+
+2017-11-20  Eugene Syromiatnikov  <esyr@redhat.com>
+
+	unwind.c: cleanup.
+	* unwind.c (rebuild_cache_if_invalid): Simplify return statement.
+
+	unwind.c: fix typo in comment.
+	* unwind.c (unwind_cache_invalidate, unwind_print_stacktrace,
+	unwind_capture_stacktrace): Replace strack with stack.
+
+2017-11-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	ipc_shm: decode hugetlb page size in shmget flags.
+	Decode alternative hugetlb page sizes introduced by kernel commit
+	v3.8-rc1~175^2~36.
+
+	* ipc_shm.c [!SHM_HUGE_SHIFT] (SHM_HUGE_SHIFT): New macro.
+	[!SHM_HUGE_MASK] (SHM_HUGE_MASK): Likewise.
+	(SYS_FUNC(shmget)): Print hugetlb page size.
+	* tests/ipc_shm.c: Check it.
+
+2017-11-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	memfd_create: decode hugetlb page size.
+	Decode alternative hugetlb page sizes introduced by kernel commit
+	v4.14-rc1~126^2~17.
+
+	* configure.ac (AC_CHECK_HEADERS): Add linux/memfd.h.
+	* memfd_create.c [HAVE_LINUX_MEMFD_H]: Include it.
+	[!MFD_HUGE_SHIFT] (MFD_HUGE_SHIFT): New macro.
+	[!MFD_HUGE_MASK] (MFD_HUGE_MASK): Likewise.
+	(SYS_FUNC(memfd_create)): Print hugetlb page size.
+	* tests/memfd_create.c: Check it.
+
+2017-11-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Print the first argument of memfd_create syscall as a path.
+	The limit imposed by the kernel on the length of memfd_create first
+	argument is NAME_MAX - strlen("memfd:").
+
+	* memfd_create.c (SYS_FUNC(memfd_create)): Print the first argument
+	using printpathn.
+	* tests/memfd_create.c: Check it.
+
+2017-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mem: decode hugetlb page size in mmap flags.
+	Decode alternative hugetlb page sizes introduced by kernel commit
+	v3.8-rc1~175^2~36.
+
+	* mem.c [!MAP_HUGE_SHIFT] (MAP_HUGE_SHIFT): New macro.
+	[!MAP_HUGE_MASK] (MAP_HUGE_MASK): Likewise.
+	(print_mmap_flags): Print hugetlb page size.
+	* NEWS: Mention it.
+	* tests/remap_file_pages.c: Check it.
+
+2017-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mem: assume that MAP_TYPE is defined.
+	Since linux kernel provided a definition of MAP_TYPE in <asm/mman.h>
+	as long ago as in v2.4.0, it's safe to assume that MAP_TYPE is defined.
+
+	* mem.c (print_mmap_flags) [!MAP_TYPE]: Remove.
+
+2017-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mem: move printing of mmap_flags to a separate function.
+	* mem.c (print_mmap_flags): New function.
+	(print_mmap, SYS_FUNC(remap_file_pages)): Use it.
+
+2017-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Provide fallback definitions for SHM_EXEC constant.
+	Although SHM_EXEC is available in <linux/shm.h> since kernel commit
+	v2.6.9-rc2~23^2~93^2~78, the glibc version of <sys/shm.h> did not
+	provide SHM_EXEC until commit glibc-2.10~238.
+
+	* xlat/shm_flags.in (SHM_EXEC): Add fallback definition.
+	* tests/shmxt.c (SHM_EXEC): Likewise.
+
+2017-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Update SHM_* constants.
+	* xlat/shm_flags.in: Add SHM_EXEC introduced by kernel commit
+	v2.6.9-rc2~23^2~93^2~78.
+	* xlat/shm_resource_flags.in: Add SHM_NORESERVE introduced by kernel
+	commit v2.6.15-rc1~622.
+	* NEWS: Mention this.
+	* tests/ipc_shm.c (main): Update expected output.
+	* tests/shmxt.c (main): Update expected output, check SHM_EXEC decoding.
+
+2017-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Remove fallback definitions for SHM_STAT and SHM_INFO constants.
+	These constants are universally available for quite a long time
+	and are used unconditionally in tests without any complaints.
+
+	* xlat/shmctl_flags.in: Remove fallback definitions.
+
+2017-11-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	net: fix SOL_NETLINK NETLINK_LIST_MEMBERSHIPS decoding.
+	NETLINK_LIST_MEMBERSHIPS, unlike all other SOL_NETLINK options, requests
+	not just a single integer but an array of integers.  The kernel also
+	supports a zero optlen NETLINK_LIST_MEMBERSHIPS request.
+
+	* net.c (print_uint32): New function.
+	(print_getsockopt): Add ulen argument, rename len argument to rlen,
+	<SOL_NETLINK> Handle NETLINK_LIST_MEMBERSHIPS using print_array
+	and print_uint32.
+	(SYS_FUNC(getsockopt)): Pass ulen to print_getsockopt.
+	* tests/sockopt-sol_netlink.c (main): Check NETLINK_LIST_MEMBERSHIPS
+	decoding.
+
+2017-11-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check [gs]etsockopt SOL_NETLINK decoding.
+	* tests/sockopt-sol_netlink.c: New file.
+	* tests/gen_tests.in (sockopt-sol_netlink): New entry.
+	* tests/pure_executables.list: Add sockopt-sol_netlink.
+	* tests/.gitignore: Likewise.
+
+2017-11-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	net: fix decoding of optval argument of [gs]etsockopt SOL_NETLINK.
+	Tweak the parser to follow the kernel behaviour.
+
+	* net.c (print_getsockopt, print_setsockopt) <SOL_NETLINK>: Fetch and
+	print returned value as integer iff the length is >= sizeof(int),
+	otherwise print the address.
+	* NEWS: Mention this.
+
+2017-11-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	net: decode optname argument of [gs]etsockopt for SOL_NETLINK level.
+	* xlat/socknetlinkoptions.in: New file.
+	* net.c: Include "xlat/socknetlinkoptions.h".
+	(print_sockopt_fd_level_name) <SOL_NETLINK>: Print name using
+	socknetlinkoptions.
+	* NEWS: Metnion this.
+
+	Update MSG_* constants.
+	* xlat/msg_flags.in: Add MSG_ZEROCOPY introduced by kernel commit
+	v4.14-rc1~130^2~376^2~6.
+	* NEWS: Mention this.
+
+	netlink: print descriptor attributes using printfd.
+	* nlattr.h (DECL_NLA(fd)): New prototype.
+	* nlattr.c (decode_nla_fd): New function.
+	* rtnl_link.c (ifla_xdp_nla_decoders) <IFLA_XDP_FD>: Use it.
+	(ifinfomsg_nla_decoders) <IFLA_NET_NS_FD>: Likewise.
+	* rtnl_nsid.c (rtgenmsg_nla_decoders) <NETNSA_FD>: Likewise.
+	* NEWS: Mention this.
+
+2017-11-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	maint/update_copyright_years.sh: implement concurrent execution.
+	Analogous to the way it is done in xlat/gen.sh.
+
+	* maint/update_copyright_years.sh (MAX_JOBS): New variable, initialize
+	it to double the CPU count.
+	<while [ -n "${1:-}" ]; do case "$1" in>: Add -j option parsing.
+	(jobs, pids): New variables.
+	<git ls-files -- "$@" | grep -vFx "$IGNORED_FILES" | while read f; do>:
+	Execute process_file in background, count background jobs and wait
+	if there are too many.
+
+2017-11-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	maint/update_copyright_years.sh: use -efu shell mode.
+	* maint/update_copyright_years.sh: Add -efu to shebang.  Adjust
+	the script for -efu shell mode.
+
+2017-11-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Post-release administrivia.
+	* NEWS: Add a header line for the next release.
+	* debian/changelog.in: Add a changelog entry for 4.20-1.
+	* strace.spec.in: Likewise.
+
 2017-11-13  Dmitry V. Levin  <ldv@altlinux.org>
 
 	Prepare for 4.20 release.
diff --git a/Makefile.am b/Makefile.am
index 3ea56a1..db9ad6e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,7 @@
 # Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2002-2017 The strace developers.
+# Copyright (c) 2002-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -38,13 +38,15 @@
 SUBDIRS = . tests $(TESTS_M32) $(TESTS_MX32)
 
 bin_PROGRAMS = strace
-man_MANS = strace.1
+man_MANS = strace.1 strace-log-merge.1
 bin_SCRIPTS = strace-graph strace-log-merge
 
 OS		= linux
 # ARCH is `i386', `m68k', `sparc', etc.
 ARCH		= @arch@
 
+READELF		= @READELF@
+
 ACLOCAL_AMFLAGS = -I m4
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
@@ -68,8 +70,10 @@
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
 libstrace_a_SOURCES =	\
+	fetch_indirect_syscall_args.c \
 	fstatfs.c \
 	fstatfs64.c \
+	getpagesize.c \
 	ipc.c \
 	sigreturn.c	\
 	socketcall.c \
@@ -86,6 +90,7 @@
 	affinity.c	\
 	aio.c		\
 	alpha.c		\
+	arch_defs.h	\
 	basic_filters.c	\
 	bind.c		\
 	bjm.c		\
@@ -164,6 +169,8 @@
 	kexec.c		\
 	keyctl.c	\
 	keyctl_kdf_params.h \
+	kvm.c		\
+	largefile_wrappers.h \
 	ldt.c		\
 	link.c		\
 	linux/asm_stat.h \
@@ -248,6 +255,7 @@
 	regs.h		\
 	renameat.c	\
 	resource.c	\
+	riscv.c		\
 	rt_sigframe.c	\
 	rt_sigreturn.c	\
 	rtc.c		\
@@ -264,6 +272,7 @@
 	rtnl_rule.c	\
 	rtnl_tc.c	\
 	rtnl_tc_action.c \
+	s390.c		\
 	sched.c		\
 	sched_attr.h	\
 	scsi.c		\
@@ -290,7 +299,6 @@
 	strace.c	\
 	string_to_uint.h \
 	string_to_uint.c \
-	supported_personalities.h \
 	swapon.c	\
 	syscall.c	\
 	sysctl.c	\
@@ -303,6 +311,7 @@
 	term.c		\
 	time.c		\
 	times.c		\
+	trace_event.h	\
 	truncate.c	\
 	ubi.c		\
 	ucopy.c		\
@@ -323,6 +332,7 @@
 	xlat.h		\
 	xmalloc.c	\
 	xmalloc.h	\
+	xstring.h	\
 	# end of strace_SOURCES
 
 if USE_LIBUNWIND
@@ -330,6 +340,11 @@
 strace_CPPFLAGS += $(libunwind_CPPFLAGS)
 strace_LDFLAGS += $(libunwind_LDFLAGS)
 strace_LDADD += $(libunwind_LIBS)
+if USE_DEMANGLE
+strace_CPPFLAGS += $(libiberty_CPPFLAGS)
+strace_LDFLAGS += $(libiberty_LDFLAGS)
+strace_LDADD += $(libiberty_LIBS)
+endif
 endif
 
 @CODE_COVERAGE_RULES@
@@ -376,23 +391,27 @@
 	linux/32/syscallent.h		\
 	linux/64/ioctls_inc.h		\
 	linux/64/syscallent.h		\
+	linux/aarch64/arch_defs_.h	\
 	linux/aarch64/arch_regs.c	\
 	linux/aarch64/arch_regs.h	\
-	linux/aarch64/arch_rt_sigframe.c\
+	linux/aarch64/arch_rt_sigframe.c	\
 	linux/aarch64/arch_sigreturn.c	\
 	linux/aarch64/errnoent1.h	\
 	linux/aarch64/get_error.c	\
 	linux/aarch64/get_scno.c	\
-	linux/aarch64/get_syscall_args.c\
+	linux/aarch64/get_syscall_args.c	\
 	linux/aarch64/ioctls_arch0.h	\
 	linux/aarch64/ioctls_arch1.h	\
 	linux/aarch64/ioctls_inc0.h	\
 	linux/aarch64/ioctls_inc1.h	\
+	linux/aarch64/nr_prefix.c	\
 	linux/aarch64/set_error.c	\
 	linux/aarch64/set_scno.c	\
+	linux/aarch64/shuffle_scno.c	\
 	linux/aarch64/signalent1.h	\
 	linux/aarch64/syscallent.h	\
 	linux/aarch64/syscallent1.h	\
+	linux/alpha/arch_defs_.h	\
 	linux/alpha/arch_getrval2.c	\
 	linux/alpha/arch_regs.c		\
 	linux/alpha/arch_regs.h		\
@@ -402,7 +421,7 @@
 	linux/alpha/get_error.c		\
 	linux/alpha/get_scno.c		\
 	linux/alpha/get_syscall_args.c	\
-	linux/alpha/get_syscall_result.c\
+	linux/alpha/get_syscall_result.c	\
 	linux/alpha/ioctls_arch0.h	\
 	linux/alpha/ioctls_inc0.h	\
 	linux/alpha/set_error.c		\
@@ -421,8 +440,11 @@
 	linux/arc/set_error.c		\
 	linux/arc/set_scno.c		\
 	linux/arc/syscallent.h		\
+	linux/arch_defs_.h		\
+	linux/arch_kvm.c		\
 	linux/arch_regs.h		\
 	linux/arch_sigreturn.c		\
+	linux/arm/arch_defs_.h		\
 	linux/arm/arch_regs.c		\
 	linux/arm/arch_regs.h		\
 	linux/arm/arch_rt_sigframe.c	\
@@ -432,8 +454,10 @@
 	linux/arm/get_syscall_args.c	\
 	linux/arm/ioctls_arch0.h	\
 	linux/arm/ioctls_inc0.h		\
+	linux/arm/nr_prefix.c		\
 	linux/arm/set_error.c		\
 	linux/arm/set_scno.c		\
+	linux/arm/shuffle_scno.c	\
 	linux/arm/syscallent.h		\
 	linux/arm/userent.h		\
 	linux/avr32/arch_regs.c		\
@@ -448,6 +472,7 @@
 	linux/avr32/set_scno.c		\
 	linux/avr32/syscallent.h	\
 	linux/avr32/userent.h		\
+	linux/bfin/arch_defs_.h		\
 	linux/bfin/arch_regs.c		\
 	linux/bfin/arch_rt_sigframe.c	\
 	linux/bfin/get_error.c		\
@@ -461,33 +486,10 @@
 	linux/bfin/set_scno.c		\
 	linux/bfin/syscallent.h		\
 	linux/bfin/userent.h		\
-	linux/crisv10/arch_regs.c	\
-	linux/crisv10/arch_rt_sigframe.c\
-	linux/crisv10/arch_sigreturn.c	\
-	linux/crisv10/get_error.c	\
-	linux/crisv10/get_scno.c	\
-	linux/crisv10/get_syscall_args.c	\
-	linux/crisv10/get_syscall_result.c	\
-	linux/crisv10/rt_sigframe.h	\
-	linux/crisv10/set_error.c	\
-	linux/crisv10/set_scno.c	\
-	linux/crisv10/syscallent.h	\
-	linux/crisv10/userent.h		\
-	linux/crisv32/arch_regs.c	\
-	linux/crisv32/arch_rt_sigframe.c\
-	linux/crisv32/arch_sigreturn.c	\
-	linux/crisv32/get_error.c	\
-	linux/crisv32/get_scno.c	\
-	linux/crisv32/get_syscall_args.c	\
-	linux/crisv32/get_syscall_result.c	\
-	linux/crisv32/rt_sigframe.h	\
-	linux/crisv32/set_error.c	\
-	linux/crisv32/set_scno.c	\
-	linux/crisv32/syscallent.h	\
-	linux/crisv32/userent.h		\
 	linux/dummy.h			\
 	linux/errnoent.h		\
 	linux/getregs_old.h		\
+	linux/hppa/arch_defs_.h		\
 	linux/hppa/arch_regs.c		\
 	linux/hppa/arch_regs.h		\
 	linux/hppa/arch_rt_sigframe.c	\
@@ -503,6 +505,8 @@
 	linux/hppa/set_scno.c		\
 	linux/hppa/signalent.h		\
 	linux/hppa/syscallent.h		\
+	linux/i386/arch_kvm.c		\
+	linux/i386/arch_defs_.h		\
 	linux/i386/arch_regs.c		\
 	linux/i386/arch_regs.h		\
 	linux/i386/arch_rt_sigframe.c	\
@@ -518,6 +522,7 @@
 	linux/i386/syscallent.h		\
 	linux/i386/userent.h		\
 	linux/i386/userent0.h		\
+	linux/ia64/arch_defs_.h		\
 	linux/ia64/arch_getrval2.c	\
 	linux/ia64/arch_regs.c		\
 	linux/ia64/arch_regs.h		\
@@ -533,6 +538,7 @@
 	linux/ia64/syscallent.h		\
 	linux/ia64/userent.h		\
 	linux/inet_diag.h		\
+	linux/m68k/arch_defs_.h		\
 	linux/m68k/arch_regs.c		\
 	linux/m68k/arch_regs.h		\
 	linux/m68k/arch_rt_sigframe.c	\
@@ -558,8 +564,9 @@
 	linux/metag/set_error.c		\
 	linux/metag/set_scno.c		\
 	linux/metag/syscallent.h	\
+	linux/microblaze/arch_defs_.h	\
 	linux/microblaze/arch_regs.c	\
-	linux/microblaze/arch_rt_sigframe.c\
+	linux/microblaze/arch_rt_sigframe.c	\
 	linux/microblaze/arch_sigreturn.c	\
 	linux/microblaze/get_error.c	\
 	linux/microblaze/get_scno.c	\
@@ -571,6 +578,7 @@
 	linux/microblaze/set_scno.c	\
 	linux/microblaze/syscallent.h	\
 	linux/microblaze/userent.h	\
+	linux/mips/arch_defs_.h		\
 	linux/mips/arch_getrval2.c	\
 	linux/mips/arch_regs.c		\
 	linux/mips/arch_regs.h		\
@@ -593,8 +601,8 @@
 	linux/mips/syscallent-o32.h	\
 	linux/mips/syscallent.h		\
 	linux/mips/userent.h		\
-	linux/mtd-abi.h			\
 	linux/netlink_diag.h		\
+	linux/nios2/arch_defs_.h	\
 	linux/nios2/arch_regs.c		\
 	linux/nios2/arch_regs.h		\
 	linux/nios2/arch_rt_sigframe.c	\
@@ -606,6 +614,7 @@
 	linux/nios2/set_error.c		\
 	linux/nios2/set_scno.c		\
 	linux/nios2/syscallent.h	\
+	linux/nr_prefix.c		\
 	linux/or1k/arch_regs.c		\
 	linux/or1k/arch_regs.h		\
 	linux/or1k/arch_rt_sigframe.c	\
@@ -619,10 +628,10 @@
 	linux/or1k/syscallent.h		\
 	linux/or1k/userent.h		\
 	linux/packet_diag.h		\
-	linux/personality.h		\
+	linux/powerpc/arch_defs_.h	\
 	linux/powerpc/arch_regs.c	\
 	linux/powerpc/arch_regs.h	\
-	linux/powerpc/arch_rt_sigframe.c\
+	linux/powerpc/arch_rt_sigframe.c	\
 	linux/powerpc/arch_sigreturn.c	\
 	linux/powerpc/errnoent.h	\
 	linux/powerpc/get_error.c	\
@@ -636,9 +645,10 @@
 	linux/powerpc/set_scno.c	\
 	linux/powerpc/syscallent.h	\
 	linux/powerpc/userent.h		\
+	linux/powerpc64/arch_defs_.h	\
 	linux/powerpc64/arch_regs.c	\
 	linux/powerpc64/arch_regs.h	\
-	linux/powerpc64/arch_rt_sigframe.c\
+	linux/powerpc64/arch_rt_sigframe.c	\
 	linux/powerpc64/arch_sigreturn.c	\
 	linux/powerpc64/errnoent.h	\
 	linux/powerpc64/errnoent1.h	\
@@ -658,7 +668,7 @@
 	linux/powerpc64/syscallent.h	\
 	linux/powerpc64/syscallent1.h	\
 	linux/powerpc64/userent.h	\
-	linux/ptp_clock.h		\
+	linux/riscv/arch_defs_.h	\
 	linux/riscv/arch_regs.c		\
 	linux/riscv/arch_regs.h		\
 	linux/riscv/arch_rt_sigframe.c	\
@@ -676,6 +686,7 @@
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
 	linux/rt_sigframe.h		\
+	linux/s390/arch_defs_.h		\
 	linux/s390/arch_regs.c		\
 	linux/s390/arch_regs.h		\
 	linux/s390/arch_rt_sigframe.c	\
@@ -692,20 +703,27 @@
 	linux/s390/userent.h		\
 	linux/s390/userent0.h		\
 	linux/s390/userent1.h		\
+	linux/s390x/arch_defs_.h	\
 	linux/s390x/arch_regs.c		\
 	linux/s390x/arch_regs.h		\
 	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
+	linux/s390x/errnoent1.h		\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
 	linux/s390x/ioctls_arch0.h	\
+	linux/s390x/ioctls_arch1.h	\
 	linux/s390x/ioctls_inc0.h	\
+	linux/s390x/ioctls_inc1.h	\
 	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
+	linux/s390x/signalent1.h	\
 	linux/s390x/syscallent.h	\
+	linux/s390x/syscallent1.h	\
 	linux/s390x/userent.h		\
+	linux/sh/arch_defs_.h		\
 	linux/sh/arch_getrval2.c	\
 	linux/sh/arch_regs.c		\
 	linux/sh/arch_rt_sigframe.c	\
@@ -720,6 +738,7 @@
 	linux/sh/syscallent.h		\
 	linux/sh/userent.h		\
 	linux/sh/userent0.h		\
+	linux/sh64/arch_defs_.h		\
 	linux/sh64/arch_regs.c		\
 	linux/sh64/arch_regs.h		\
 	linux/sh64/arch_rt_sigframe.c	\
@@ -734,16 +753,17 @@
 	linux/sh64/set_scno.c		\
 	linux/sh64/syscallent.h		\
 	linux/sh64/userent.h		\
+	linux/shuffle_scno.c		\
 	linux/signalent.h		\
 	linux/smc_diag.h		\
 	linux/sock_diag.h		\
+	linux/sparc/arch_defs_.h	\
 	linux/sparc/arch_getrval2.c	\
 	linux/sparc/arch_regs.c		\
 	linux/sparc/arch_regs.h		\
 	linux/sparc/arch_rt_sigframe.c	\
 	linux/sparc/arch_sigreturn.c	\
 	linux/sparc/errnoent.h		\
-	linux/sparc/gen.pl		\
 	linux/sparc/get_error.c		\
 	linux/sparc/get_scno.c		\
 	linux/sparc/get_syscall_args.c	\
@@ -755,16 +775,17 @@
 	linux/sparc/signalent.h		\
 	linux/sparc/syscallent.h	\
 	linux/sparc/userent.h		\
+	linux/sparc64/arch_defs_.h	\
 	linux/sparc64/arch_getrval2.c	\
 	linux/sparc64/arch_regs.c	\
 	linux/sparc64/arch_regs.h	\
-	linux/sparc64/arch_rt_sigframe.c\
+	linux/sparc64/arch_rt_sigframe.c	\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
 	linux/sparc64/errnoent1.h	\
 	linux/sparc64/get_error.c	\
 	linux/sparc64/get_scno.c	\
-	linux/sparc64/get_syscall_args.c\
+	linux/sparc64/get_syscall_args.c	\
 	linux/sparc64/ioctls_arch0.h	\
 	linux/sparc64/ioctls_arch1.h	\
 	linux/sparc64/ioctls_inc0.h	\
@@ -779,6 +800,7 @@
 	linux/sparc64/userent.h		\
 	linux/subcall.h			\
 	linux/syscall.h			\
+	linux/tile/arch_defs_.h		\
 	linux/tile/arch_regs.c		\
 	linux/tile/arch_regs.h		\
 	linux/tile/arch_rt_sigframe.c	\
@@ -798,10 +820,11 @@
 	linux/tile/syscallent.h		\
 	linux/tile/syscallent1.h	\
 	linux/tile/userent.h		\
-	linux/ubi-user.h		\
 	linux/unix_diag.h		\
 	linux/userent.h			\
 	linux/userent0.h		\
+	linux/x32/arch_defs_.h		\
+	linux/x32/arch_kvm.c		\
 	linux/x32/arch_regs.c		\
 	linux/x32/arch_regs.h		\
 	linux/x32/arch_rt_sigframe.c	\
@@ -817,17 +840,19 @@
 	linux/x32/rt_sigframe.h		\
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
+	linux/x32/shuffle_scno.c	\
 	linux/x32/signalent1.h		\
 	linux/x32/syscallent.h		\
 	linux/x32/syscallent1.h		\
 	linux/x32/userent.h		\
+	linux/x86_64/arch_defs_.h	\
+	linux/x86_64/arch_kvm.c		\
 	linux/x86_64/arch_regs.c	\
 	linux/x86_64/arch_regs.h	\
 	linux/x86_64/arch_rt_sigframe.c	\
 	linux/x86_64/arch_sigreturn.c	\
 	linux/x86_64/errnoent1.h	\
 	linux/x86_64/errnoent2.h	\
-	linux/x86_64/gentab.pl		\
 	linux/x86_64/get_error.c	\
 	linux/x86_64/get_scno.c		\
 	linux/x86_64/get_syscall_args.c	\
@@ -842,6 +867,7 @@
 	linux/x86_64/rt_sigframe.h	\
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
+	linux/x86_64/shuffle_scno.c	\
 	linux/x86_64/signalent1.h	\
 	linux/x86_64/signalent2.h	\
 	linux/x86_64/syscallent.h	\
@@ -871,7 +897,7 @@
 	$(XLAT_INPUT_FILES)		\
 	$(XLAT_HEADER_FILES)		\
 	xlat/gen.sh			\
-	xlate.el
+	# end of EXTRA_DIST
 
 .PHONY: check-valgrind-local
 check-valgrind-local:
@@ -987,9 +1013,12 @@
 
 mpers-m%.stamp: $(srcdir_mpers_source_files) | printers.h
 	for f in $^; do \
-		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; \
+		READELF="$(READELF)" \
+		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) $(mpers_CC_FLAGS) $$f || exit; \
 	done
 	> $@
 
@@ -1060,6 +1089,7 @@
 CLEANFILES    += $(mpers_m32_targets)
 
 $(mpers_m32_targets): mpers_NAME = m32
+$(mpers_m32_targets): mpers_CC_FLAGS = @cc_flags_m32@
 
 endif # HAVE_M32_MPERS
 
@@ -1076,6 +1106,7 @@
 CLEANFILES    += $(mpers_mx32_targets)
 
 $(mpers_mx32_targets): mpers_NAME = mx32
+$(mpers_mx32_targets): mpers_CC_FLAGS = @cc_flags_mx32@
 
 endif # HAVE_MX32_MPERS
 
diff --git a/Makefile.in b/Makefile.in
index 2f14f43..f1822ad 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -20,7 +20,7 @@
 # Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2002-2017 The strace developers.
+# Copyright (c) 2002-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -143,27 +143,31 @@
 	$(srcdir)/mpers.am $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/configure $(am__configure_deps) \
 	$(srcdir)/config.h.in $(srcdir)/strace.1.in \
-	$(srcdir)/strace.spec.in $(top_srcdir)/debian/changelog.in \
-	depcomp AUTHORS COPYING INSTALL NEWS README compile \
-	config.guess config.sub install-sh missing
+	$(srcdir)/strace-log-merge.1.in $(srcdir)/strace.spec.in \
+	$(top_srcdir)/debian/changelog.in depcomp AUTHORS COPYING \
+	INSTALL NEWS README compile config.guess config.sub install-sh \
+	missing
 @USE_LIBUNWIND_TRUE@am__append_1 = unwind.c
 @USE_LIBUNWIND_TRUE@am__append_2 = $(libunwind_CPPFLAGS)
 @USE_LIBUNWIND_TRUE@am__append_3 = $(libunwind_LDFLAGS)
 @USE_LIBUNWIND_TRUE@am__append_4 = $(libunwind_LIBS)
-@HAVE_M32_MPERS_TRUE@am__append_5 = libmpers-m32.a
-@HAVE_M32_MPERS_TRUE@am__append_6 = libmpers-m32.a
-@HAVE_M32_MPERS_TRUE@am__append_7 = $(mpers_m32_targets)
-@HAVE_M32_MPERS_TRUE@am__append_8 = $(mpers_m32_targets)
-@HAVE_MX32_MPERS_TRUE@am__append_9 = libmpers-mx32.a
-@HAVE_MX32_MPERS_TRUE@am__append_10 = libmpers-mx32.a
-@HAVE_MX32_MPERS_TRUE@am__append_11 = $(mpers_mx32_targets)
-@HAVE_MX32_MPERS_TRUE@am__append_12 = $(mpers_mx32_targets)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_5 = $(libiberty_CPPFLAGS)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_6 = $(libiberty_LDFLAGS)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_7 = $(libiberty_LIBS)
+@HAVE_M32_MPERS_TRUE@am__append_8 = libmpers-m32.a
+@HAVE_M32_MPERS_TRUE@am__append_9 = libmpers-m32.a
+@HAVE_M32_MPERS_TRUE@am__append_10 = $(mpers_m32_targets)
+@HAVE_M32_MPERS_TRUE@am__append_11 = $(mpers_m32_targets)
+@HAVE_MX32_MPERS_TRUE@am__append_12 = libmpers-mx32.a
+@HAVE_MX32_MPERS_TRUE@am__append_13 = libmpers-mx32.a
+@HAVE_MX32_MPERS_TRUE@am__append_14 = $(mpers_mx32_targets)
+@HAVE_MX32_MPERS_TRUE@am__append_15 = $(mpers_mx32_targets)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
 	$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
 	$(top_srcdir)/m4/ax_valgrind_check.m4 \
-	$(top_srcdir)/m4/mpers.m4 $(top_srcdir)/m4/st_bpf.m4 \
+	$(top_srcdir)/m4/mpers.m4 \
 	$(top_srcdir)/m4/st_save_restore_var.m4 \
 	$(top_srcdir)/m4/st_warn_cflags.m4 \
 	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -173,7 +177,8 @@
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = strace.1 strace.spec debian/changelog
+CONFIG_CLEAN_FILES = strace.1 strace-log-merge.1 strace.spec \
+	debian/changelog
 CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 AR = ar
@@ -282,8 +287,10 @@
 libmpers_mx32_a_OBJECTS = $(am_libmpers_mx32_a_OBJECTS)
 libstrace_a_AR = $(AR) $(ARFLAGS)
 libstrace_a_LIBADD =
-am_libstrace_a_OBJECTS = libstrace_a-fstatfs.$(OBJEXT) \
-	libstrace_a-fstatfs64.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
+am_libstrace_a_OBJECTS =  \
+	libstrace_a-fetch_indirect_syscall_args.$(OBJEXT) \
+	libstrace_a-fstatfs.$(OBJEXT) libstrace_a-fstatfs64.$(OBJEXT) \
+	libstrace_a-getpagesize.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
 	libstrace_a-sigreturn.$(OBJEXT) \
 	libstrace_a-socketcall.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
 	libstrace_a-statfs64.$(OBJEXT) \
@@ -295,8 +302,8 @@
 	"$(DESTDIR)$(man1dir)"
 PROGRAMS = $(bin_PROGRAMS)
 am__strace_SOURCES_DIST = access.c affinity.c aio.c alpha.c \
-	basic_filters.c bind.c bjm.c block.c bpf.c bpf_filter.c \
-	bpf_filter.h bpf_fprog.h bpf_seccomp_filter.c \
+	arch_defs.h basic_filters.c bind.c bjm.c block.c bpf.c \
+	bpf_filter.c bpf_filter.h bpf_fprog.h bpf_seccomp_filter.c \
 	bpf_sock_filter.c btrfs.c cacheflush.c capability.c caps0.h \
 	caps1.h chdir.c chmod.c clone.c copy_file_range.c count.c \
 	defs.h desc.c dirent.c dirent64.c dm.c dyxlat.c empty.h \
@@ -311,40 +318,41 @@
 	getcwd.c getrandom.c hdio.c hostname.c inotify.c io.c ioctl.c \
 	ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
 	ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_types.h kexec.c \
-	keyctl.c keyctl_kdf_params.h ldt.c link.c linux/asm_stat.h \
-	linux/x32/asm_stat.h linux/x86_64/asm_stat.h listen.c \
-	lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \
-	memfd_create.c mknod.c mmsghdr.c mount.c mpers_type.h mq.c \
-	msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h net.c \
-	netlink.c netlink.h netlink_crypto.c netlink_sock_diag.h \
-	netlink_inet_diag.c netlink_netlink_diag.c \
-	netlink_packet_diag.c netlink_route.c netlink_route.h \
-	netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
-	netlink_unix_diag.c nlattr.c nlattr.h nsfs.c nsfs.h nsig.h \
-	numa.c number_set.c number_set.h oldstat.c open.c \
-	or1k_atomic.c pathtrace.c perf.c perf_event_struct.h \
-	personality.c pkeys.c poll.c prctl.c print_dev_t.c \
-	print_group_req.c print_fields.h print_ifindex.c \
+	keyctl.c keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c \
+	link.c linux/asm_stat.h linux/x32/asm_stat.h \
+	linux/x86_64/asm_stat.h listen.c lookup_dcookie.c loop.c \
+	lseek.c macros.h mem.c membarrier.c memfd_create.c mknod.c \
+	mmsghdr.c mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
+	native_defs.h negated_errno.h net.c netlink.c netlink.h \
+	netlink_crypto.c netlink_sock_diag.h netlink_inet_diag.c \
+	netlink_netlink_diag.c netlink_packet_diag.c netlink_route.c \
+	netlink_route.h netlink_selinux.c netlink_smc_diag.c \
+	netlink_sock_diag.c netlink_unix_diag.c nlattr.c nlattr.h \
+	nsfs.c nsfs.h nsig.h numa.c number_set.c number_set.h \
+	oldstat.c open.c or1k_atomic.c pathtrace.c perf.c \
+	perf_event_struct.h personality.c pkeys.c poll.c prctl.c \
+	print_dev_t.c print_group_req.c print_fields.h print_ifindex.c \
 	print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
 	print_sigevent.c print_statfs.c print_struct_stat.c \
 	print_time.c print_timespec.c print_timeval.c print_timex.c \
 	printmode.c printrusage.c printsiginfo.c printsiginfo.h \
 	process.c process_vm.c ptp.c ptrace.h quota.c readahead.c \
-	readlink.c reboot.c regs.h renameat.c resource.c rt_sigframe.c \
-	rt_sigreturn.c rtc.c rtnl_addr.c rtnl_addrlabel.c rtnl_dcb.c \
-	rtnl_link.c rtnl_mdb.c rtnl_neigh.c rtnl_neightbl.c \
-	rtnl_netconf.c rtnl_nsid.c rtnl_route.c rtnl_rule.c rtnl_tc.c \
-	rtnl_tc_action.c sched.c sched_attr.h scsi.c seccomp.c \
-	sendfile.c sg_io_v3.c sg_io_v4.c shutdown.c sigaltstack.c \
-	sigevent.h signal.c signalfd.c sock.c sockaddr.c socketutils.c \
-	sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h statx.c \
-	statx.h strace.c string_to_uint.h string_to_uint.c \
-	supported_personalities.h swapon.c syscall.c sysctl.c sysent.h \
-	sysent_shorthand_defs.h sysent_shorthand_undefs.h sysinfo.c \
-	syslog.c sysmips.c term.c time.c times.c truncate.c ubi.c \
-	ucopy.c uid.c uid16.c umask.c umount.c uname.c userfaultfd.c \
-	ustat.c util.c utime.c utimes.c v4l2.c wait.c xattr.c xlat.c \
-	xlat.h xmalloc.c xmalloc.h unwind.c
+	readlink.c reboot.c regs.h renameat.c resource.c riscv.c \
+	rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \
+	rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
+	rtnl_neigh.c rtnl_neightbl.c rtnl_netconf.c rtnl_nsid.c \
+	rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
+	sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
+	sg_io_v4.c shutdown.c sigaltstack.c sigevent.h signal.c \
+	signalfd.c sock.c sockaddr.c socketutils.c sram_alloc.c stat.c \
+	stat.h stat64.c statfs.c statfs.h statx.c statx.h strace.c \
+	string_to_uint.h string_to_uint.c swapon.c syscall.c sysctl.c \
+	sysent.h sysent_shorthand_defs.h sysent_shorthand_undefs.h \
+	sysinfo.c syslog.c sysmips.c term.c time.c times.c \
+	trace_event.h truncate.c ubi.c ucopy.c uid.c uid16.c umask.c \
+	umount.c uname.c userfaultfd.c ustat.c util.c utime.c utimes.c \
+	v4l2.c wait.c xattr.c xlat.c xlat.h xmalloc.c xmalloc.h \
+	xstring.h unwind.c
 @USE_LIBUNWIND_TRUE@am__objects_3 = strace-unwind.$(OBJEXT)
 am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \
 	strace-aio.$(OBJEXT) strace-alpha.$(OBJEXT) \
@@ -385,15 +393,16 @@
 	strace-ipc_sem.$(OBJEXT) strace-ipc_shm.$(OBJEXT) \
 	strace-ipc_shmctl.$(OBJEXT) strace-kcmp.$(OBJEXT) \
 	strace-kexec.$(OBJEXT) strace-keyctl.$(OBJEXT) \
-	strace-ldt.$(OBJEXT) strace-link.$(OBJEXT) \
-	strace-listen.$(OBJEXT) strace-lookup_dcookie.$(OBJEXT) \
-	strace-loop.$(OBJEXT) strace-lseek.$(OBJEXT) \
-	strace-mem.$(OBJEXT) strace-membarrier.$(OBJEXT) \
-	strace-memfd_create.$(OBJEXT) strace-mknod.$(OBJEXT) \
-	strace-mmsghdr.$(OBJEXT) strace-mount.$(OBJEXT) \
-	strace-mq.$(OBJEXT) strace-msghdr.$(OBJEXT) \
-	strace-mtd.$(OBJEXT) strace-net.$(OBJEXT) \
-	strace-netlink.$(OBJEXT) strace-netlink_crypto.$(OBJEXT) \
+	strace-kvm.$(OBJEXT) strace-ldt.$(OBJEXT) \
+	strace-link.$(OBJEXT) strace-listen.$(OBJEXT) \
+	strace-lookup_dcookie.$(OBJEXT) strace-loop.$(OBJEXT) \
+	strace-lseek.$(OBJEXT) strace-mem.$(OBJEXT) \
+	strace-membarrier.$(OBJEXT) strace-memfd_create.$(OBJEXT) \
+	strace-mknod.$(OBJEXT) strace-mmsghdr.$(OBJEXT) \
+	strace-mount.$(OBJEXT) strace-mq.$(OBJEXT) \
+	strace-msghdr.$(OBJEXT) strace-mtd.$(OBJEXT) \
+	strace-net.$(OBJEXT) strace-netlink.$(OBJEXT) \
+	strace-netlink_crypto.$(OBJEXT) \
 	strace-netlink_inet_diag.$(OBJEXT) \
 	strace-netlink_netlink_diag.$(OBJEXT) \
 	strace-netlink_packet_diag.$(OBJEXT) \
@@ -421,15 +430,16 @@
 	strace-ptp.$(OBJEXT) strace-quota.$(OBJEXT) \
 	strace-readahead.$(OBJEXT) strace-readlink.$(OBJEXT) \
 	strace-reboot.$(OBJEXT) strace-renameat.$(OBJEXT) \
-	strace-resource.$(OBJEXT) strace-rt_sigframe.$(OBJEXT) \
-	strace-rt_sigreturn.$(OBJEXT) strace-rtc.$(OBJEXT) \
-	strace-rtnl_addr.$(OBJEXT) strace-rtnl_addrlabel.$(OBJEXT) \
-	strace-rtnl_dcb.$(OBJEXT) strace-rtnl_link.$(OBJEXT) \
-	strace-rtnl_mdb.$(OBJEXT) strace-rtnl_neigh.$(OBJEXT) \
-	strace-rtnl_neightbl.$(OBJEXT) strace-rtnl_netconf.$(OBJEXT) \
-	strace-rtnl_nsid.$(OBJEXT) strace-rtnl_route.$(OBJEXT) \
-	strace-rtnl_rule.$(OBJEXT) strace-rtnl_tc.$(OBJEXT) \
-	strace-rtnl_tc_action.$(OBJEXT) strace-sched.$(OBJEXT) \
+	strace-resource.$(OBJEXT) strace-riscv.$(OBJEXT) \
+	strace-rt_sigframe.$(OBJEXT) strace-rt_sigreturn.$(OBJEXT) \
+	strace-rtc.$(OBJEXT) strace-rtnl_addr.$(OBJEXT) \
+	strace-rtnl_addrlabel.$(OBJEXT) strace-rtnl_dcb.$(OBJEXT) \
+	strace-rtnl_link.$(OBJEXT) strace-rtnl_mdb.$(OBJEXT) \
+	strace-rtnl_neigh.$(OBJEXT) strace-rtnl_neightbl.$(OBJEXT) \
+	strace-rtnl_netconf.$(OBJEXT) strace-rtnl_nsid.$(OBJEXT) \
+	strace-rtnl_route.$(OBJEXT) strace-rtnl_rule.$(OBJEXT) \
+	strace-rtnl_tc.$(OBJEXT) strace-rtnl_tc_action.$(OBJEXT) \
+	strace-s390.$(OBJEXT) strace-sched.$(OBJEXT) \
 	strace-scsi.$(OBJEXT) strace-seccomp.$(OBJEXT) \
 	strace-sendfile.$(OBJEXT) strace-sg_io_v3.$(OBJEXT) \
 	strace-sg_io_v4.$(OBJEXT) strace-shutdown.$(OBJEXT) \
@@ -457,8 +467,11 @@
 strace_OBJECTS = $(am_strace_OBJECTS)
 am__DEPENDENCIES_1 =
 @USE_LIBUNWIND_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__DEPENDENCIES_3 =  \
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@	$(am__DEPENDENCIES_1)
 strace_DEPENDENCIES = libstrace.a $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_1) $(am__append_5) $(am__append_9)
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) $(am__append_8) \
+	$(am__append_12)
 strace_LINK = $(CCLD) $(strace_CFLAGS) $(CFLAGS) $(strace_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -686,10 +699,13 @@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
 RANLIB = @RANLIB@
+READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
+SIZEOF_LONG = @SIZEOF_LONG@
 STRIP = @STRIP@
 VALGRIND = @VALGRIND@
 VALGRIND_ENABLED = @VALGRIND_ENABLED@
@@ -710,6 +726,7 @@
 arch = @arch@
 arch_m32 = @arch_m32@
 arch_mx32 = @arch_mx32@
+arch_native = @arch_native@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -717,6 +734,8 @@
 build_os = @build_os@
 build_vendor = @build_vendor@
 builddir = @builddir@
+cc_flags_m32 = @cc_flags_m32@
+cc_flags_mx32 = @cc_flags_mx32@
 datadir = @datadir@
 datarootdir = @datarootdir@
 dl_LIBS = @dl_LIBS@
@@ -734,6 +753,9 @@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
+libiberty_LDFLAGS = @libiberty_LDFLAGS@
+libiberty_LIBS = @libiberty_LIBS@
 libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
 libunwind_LDFLAGS = @libunwind_LDFLAGS@
 libunwind_LIBS = @libunwind_LIBS@
@@ -759,7 +781,7 @@
 @HAVE_M32_RUNTIME_TRUE@TESTS_M32 = tests-m32
 @HAVE_MX32_RUNTIME_TRUE@TESTS_MX32 = tests-mx32
 SUBDIRS = . tests $(TESTS_M32) $(TESTS_MX32)
-man_MANS = strace.1
+man_MANS = strace.1 strace-log-merge.1
 bin_SCRIPTS = strace-graph strace-log-merge
 OS = linux
 # ARCH is `i386', `m68k', `sparc', etc.
@@ -841,7 +863,8 @@
 	xlat/kcmp_types.in xlat/kexec_arch_values.in \
 	xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in \
 	xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in \
-	xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in \
+	xlat/keyctl_commands.in xlat/kvm_mem_flags.in \
+	xlat/lockfcmds.in xlat/loop_cmds.in \
 	xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \
 	xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in \
 	xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in \
@@ -894,15 +917,16 @@
 	xlat/ptrace_setoptions_flags.in xlat/quota_formats.in \
 	xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in \
 	xlat/resource_flags.in xlat/resources.in \
-	xlat/route_nexthop_flags.in xlat/routing_flags.in \
-	xlat/routing_protocols.in xlat/routing_scopes.in \
-	xlat/routing_table_ids.in xlat/routing_types.in \
-	xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in \
-	xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in \
-	xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in \
-	xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in \
-	xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in \
-	xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in \
+	xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in \
+	xlat/routing_flags.in xlat/routing_protocols.in \
+	xlat/routing_scopes.in xlat/routing_table_ids.in \
+	xlat/routing_types.in xlat/rtnl_addr_attrs.in \
+	xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in \
+	xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in \
+	xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in \
+	xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in \
+	xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in \
+	xlat/rtnl_mdba_mdb_eattr_attrs.in \
 	xlat/rtnl_mdba_mdb_entry_attrs.in \
 	xlat/rtnl_mdba_router_attrs.in \
 	xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in \
@@ -912,12 +936,14 @@
 	xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in \
 	xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in \
 	xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in \
-	xlat/sa_handler_values.in xlat/sched_flags.in \
-	xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.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/setns_types.in \
+	xlat/s390_guarded_storage_commands.in \
+	xlat/s390_runtime_instr_commands.in \
+	xlat/s390_sthyi_function_codes.in xlat/sa_handler_values.in \
+	xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in \
+	xlat/scsi_sg_commands.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/setns_types.in \
 	xlat/setsockipoptions.in xlat/setsockipv6options.in \
 	xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in \
 	xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in \
@@ -935,9 +961,10 @@
 	xlat/sock_type_flags.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/socktypes.in xlat/splice_flags.in \
+	xlat/socknetlinkoptions.in xlat/sockoptions.in \
+	xlat/sockpacketoptions.in xlat/sockrawoptions.in \
+	xlat/socksctpoptions.in xlat/socktcpoptions.in \
+	xlat/socktypes.in xlat/splice_flags.in \
 	xlat/sram_alloc_flags.in xlat/statfs_flags.in \
 	xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in \
 	xlat/sync_file_range_flags.in xlat/sysctl_kern.in \
@@ -1032,11 +1059,11 @@
 	xlat/kcmp_types.h xlat/kexec_arch_values.h \
 	xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h \
 	xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h \
-	xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h \
-	xlat/loop_crypt_type_options.h xlat/loop_flags_options.h \
-	xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h \
-	xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h \
-	xlat/mdb_states.h xlat/membarrier_cmds.h \
+	xlat/keyctl_commands.h xlat/kvm_mem_flags.h xlat/lockfcmds.h \
+	xlat/loop_cmds.h xlat/loop_crypt_type_options.h \
+	xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h \
+	xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h \
+	xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h \
 	xlat/memfd_create_flags.h xlat/mempolicyflags.h \
 	xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h \
 	xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h \
@@ -1084,15 +1111,16 @@
 	xlat/ptrace_setoptions_flags.h xlat/quota_formats.h \
 	xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h \
 	xlat/resource_flags.h xlat/resources.h \
-	xlat/route_nexthop_flags.h xlat/routing_flags.h \
-	xlat/routing_protocols.h xlat/routing_scopes.h \
-	xlat/routing_table_ids.h xlat/routing_types.h \
-	xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h \
-	xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h \
-	xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h \
-	xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h \
-	xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h \
-	xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h \
+	xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h \
+	xlat/routing_flags.h xlat/routing_protocols.h \
+	xlat/routing_scopes.h xlat/routing_table_ids.h \
+	xlat/routing_types.h xlat/rtnl_addr_attrs.h \
+	xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h \
+	xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h \
+	xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h \
+	xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h \
+	xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h \
+	xlat/rtnl_mdba_mdb_eattr_attrs.h \
 	xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h \
 	xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h \
 	xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h \
@@ -1101,8 +1129,11 @@
 	xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h \
 	xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h \
 	xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h \
-	xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h \
-	xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h \
+	xlat/s390_guarded_storage_commands.h \
+	xlat/s390_runtime_instr_commands.h \
+	xlat/s390_sthyi_function_codes.h xlat/sa_handler_values.h \
+	xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h \
+	xlat/scsi_sg_commands.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/setns_types.h \
@@ -1121,13 +1152,13 @@
 	xlat/smc_states.h xlat/sock_type_flags.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/socktypes.h xlat/splice_flags.h \
-	xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h \
-	xlat/statx_masks.h xlat/swap_flags.h \
-	xlat/sync_file_range_flags.h xlat/sysctl_kern.h \
-	xlat/sysctl_net.h xlat/sysctl_net_core.h \
+	xlat/socknetlinkoptions.h xlat/sockoptions.h \
+	xlat/sockpacketoptions.h xlat/sockrawoptions.h \
+	xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h \
+	xlat/splice_flags.h xlat/sram_alloc_flags.h \
+	xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h \
+	xlat/swap_flags.h xlat/sync_file_range_flags.h \
+	xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h \
 	xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h \
 	xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h \
 	xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h \
@@ -1155,18 +1186,20 @@
 	xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h \
 	xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h \
 	xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
-strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_2) \
+strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_2) $(am__append_5) \
 	$(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
-strace_LDFLAGS = $(am__append_3)
-strace_LDADD = libstrace.a $(am__append_4) $(CODE_COVERAGE_LIBS) \
-	$(am__append_5) $(am__append_9)
-noinst_LIBRARIES = libstrace.a $(am__append_6) $(am__append_10)
+strace_LDFLAGS = $(am__append_3) $(am__append_6)
+strace_LDADD = libstrace.a $(am__append_4) $(am__append_7) \
+	$(CODE_COVERAGE_LIBS) $(am__append_8) $(am__append_12)
+noinst_LIBRARIES = libstrace.a $(am__append_9) $(am__append_13)
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
 libstrace_a_SOURCES = \
+	fetch_indirect_syscall_args.c \
 	fstatfs.c \
 	fstatfs64.c \
+	getpagesize.c \
 	ipc.c \
 	sigreturn.c	\
 	socketcall.c \
@@ -1178,57 +1211,58 @@
 	upoke.c		\
 	# end of libstrace_a_SOURCES
 
-strace_SOURCES = access.c affinity.c aio.c alpha.c basic_filters.c \
-	bind.c bjm.c block.c bpf.c bpf_filter.c bpf_filter.h \
-	bpf_fprog.h bpf_seccomp_filter.c bpf_sock_filter.c btrfs.c \
-	cacheflush.c capability.c caps0.h caps1.h chdir.c chmod.c \
-	clone.c copy_file_range.c count.c defs.h desc.c dirent.c \
-	dirent64.c dm.c dyxlat.c empty.h epoll.c error_prints.c \
-	error_prints.h evdev.c eventfd.c execve.c fadvise.c \
-	fallocate.c fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
-	fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c \
-	fetch_struct_mmsghdr.c fetch_struct_msghdr.c \
-	fetch_struct_stat.c fetch_struct_stat64.c \
-	fetch_struct_statfs.c file_handle.c file_ioctl.c \
-	filter_qualify.c filter.h flock.c flock.h fs_x_ioctl.c futex.c \
-	gcc_compat.h get_robust_list.c getcpu.c getcwd.c getrandom.c \
-	hdio.c hostname.c inotify.c io.c ioctl.c ioperm.c iopl.c \
-	ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c ipc_shm.c \
-	ipc_shmctl.c kcmp.c kernel_types.h kexec.c keyctl.c \
-	keyctl_kdf_params.h ldt.c link.c linux/asm_stat.h \
-	linux/x32/asm_stat.h linux/x86_64/asm_stat.h listen.c \
-	lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \
-	memfd_create.c mknod.c mmsghdr.c mount.c mpers_type.h mq.c \
-	msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h net.c \
-	netlink.c netlink.h netlink_crypto.c netlink_sock_diag.h \
-	netlink_inet_diag.c netlink_netlink_diag.c \
-	netlink_packet_diag.c netlink_route.c netlink_route.h \
-	netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
-	netlink_unix_diag.c nlattr.c nlattr.h nsfs.c nsfs.h nsig.h \
-	numa.c number_set.c number_set.h oldstat.c open.c \
-	or1k_atomic.c pathtrace.c perf.c perf_event_struct.h \
-	personality.c pkeys.c poll.c prctl.c print_dev_t.c \
-	print_group_req.c print_fields.h print_ifindex.c \
+strace_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \
+	basic_filters.c bind.c bjm.c block.c bpf.c bpf_filter.c \
+	bpf_filter.h bpf_fprog.h bpf_seccomp_filter.c \
+	bpf_sock_filter.c btrfs.c cacheflush.c capability.c caps0.h \
+	caps1.h chdir.c chmod.c clone.c copy_file_range.c count.c \
+	defs.h desc.c dirent.c dirent64.c dm.c dyxlat.c empty.h \
+	epoll.c error_prints.c error_prints.h evdev.c eventfd.c \
+	execve.c fadvise.c fallocate.c fanotify.c fchownat.c fcntl.c \
+	fetch_bpf_fprog.c fetch_struct_flock.c \
+	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
+	fetch_struct_msghdr.c fetch_struct_stat.c \
+	fetch_struct_stat64.c fetch_struct_statfs.c file_handle.c \
+	file_ioctl.c filter_qualify.c filter.h flock.c flock.h \
+	fs_x_ioctl.c futex.c gcc_compat.h get_robust_list.c getcpu.c \
+	getcwd.c getrandom.c hdio.c hostname.c inotify.c io.c ioctl.c \
+	ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
+	ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_types.h kexec.c \
+	keyctl.c keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c \
+	link.c linux/asm_stat.h linux/x32/asm_stat.h \
+	linux/x86_64/asm_stat.h listen.c lookup_dcookie.c loop.c \
+	lseek.c macros.h mem.c membarrier.c memfd_create.c mknod.c \
+	mmsghdr.c mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
+	native_defs.h negated_errno.h net.c netlink.c netlink.h \
+	netlink_crypto.c netlink_sock_diag.h netlink_inet_diag.c \
+	netlink_netlink_diag.c netlink_packet_diag.c netlink_route.c \
+	netlink_route.h netlink_selinux.c netlink_smc_diag.c \
+	netlink_sock_diag.c netlink_unix_diag.c nlattr.c nlattr.h \
+	nsfs.c nsfs.h nsig.h numa.c number_set.c number_set.h \
+	oldstat.c open.c or1k_atomic.c pathtrace.c perf.c \
+	perf_event_struct.h personality.c pkeys.c poll.c prctl.c \
+	print_dev_t.c print_group_req.c print_fields.h print_ifindex.c \
 	print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
 	print_sigevent.c print_statfs.c print_struct_stat.c \
 	print_time.c print_timespec.c print_timeval.c print_timex.c \
 	printmode.c printrusage.c printsiginfo.c printsiginfo.h \
 	process.c process_vm.c ptp.c ptrace.h quota.c readahead.c \
-	readlink.c reboot.c regs.h renameat.c resource.c rt_sigframe.c \
-	rt_sigreturn.c rtc.c rtnl_addr.c rtnl_addrlabel.c rtnl_dcb.c \
-	rtnl_link.c rtnl_mdb.c rtnl_neigh.c rtnl_neightbl.c \
-	rtnl_netconf.c rtnl_nsid.c rtnl_route.c rtnl_rule.c rtnl_tc.c \
-	rtnl_tc_action.c sched.c sched_attr.h scsi.c seccomp.c \
-	sendfile.c sg_io_v3.c sg_io_v4.c shutdown.c sigaltstack.c \
-	sigevent.h signal.c signalfd.c sock.c sockaddr.c socketutils.c \
-	sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h statx.c \
-	statx.h strace.c string_to_uint.h string_to_uint.c \
-	supported_personalities.h swapon.c syscall.c sysctl.c sysent.h \
-	sysent_shorthand_defs.h sysent_shorthand_undefs.h sysinfo.c \
-	syslog.c sysmips.c term.c time.c times.c truncate.c ubi.c \
-	ucopy.c uid.c uid16.c umask.c umount.c uname.c userfaultfd.c \
-	ustat.c util.c utime.c utimes.c v4l2.c wait.c xattr.c xlat.c \
-	xlat.h xmalloc.c xmalloc.h $(am__append_1)
+	readlink.c reboot.c regs.h renameat.c resource.c riscv.c \
+	rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \
+	rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
+	rtnl_neigh.c rtnl_neightbl.c rtnl_netconf.c rtnl_nsid.c \
+	rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
+	sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
+	sg_io_v4.c shutdown.c sigaltstack.c sigevent.h signal.c \
+	signalfd.c sock.c sockaddr.c socketutils.c sram_alloc.c stat.c \
+	stat.h stat64.c statfs.c statfs.h statx.c statx.h strace.c \
+	string_to_uint.h string_to_uint.c swapon.c syscall.c sysctl.c \
+	sysent.h sysent_shorthand_defs.h sysent_shorthand_undefs.h \
+	sysinfo.c syslog.c sysmips.c term.c time.c times.c \
+	trace_event.h truncate.c ubi.c ucopy.c uid.c uid16.c umask.c \
+	umount.c uname.c userfaultfd.c ustat.c util.c utime.c utimes.c \
+	v4l2.c wait.c xattr.c xlat.c xlat.h xmalloc.c xmalloc.h \
+	xstring.h $(am__append_1)
 CODE_COVERAGE_BRANCH_COVERAGE = 1
 CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
 	--prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .)
@@ -1269,23 +1303,27 @@
 	linux/32/syscallent.h		\
 	linux/64/ioctls_inc.h		\
 	linux/64/syscallent.h		\
+	linux/aarch64/arch_defs_.h	\
 	linux/aarch64/arch_regs.c	\
 	linux/aarch64/arch_regs.h	\
-	linux/aarch64/arch_rt_sigframe.c\
+	linux/aarch64/arch_rt_sigframe.c	\
 	linux/aarch64/arch_sigreturn.c	\
 	linux/aarch64/errnoent1.h	\
 	linux/aarch64/get_error.c	\
 	linux/aarch64/get_scno.c	\
-	linux/aarch64/get_syscall_args.c\
+	linux/aarch64/get_syscall_args.c	\
 	linux/aarch64/ioctls_arch0.h	\
 	linux/aarch64/ioctls_arch1.h	\
 	linux/aarch64/ioctls_inc0.h	\
 	linux/aarch64/ioctls_inc1.h	\
+	linux/aarch64/nr_prefix.c	\
 	linux/aarch64/set_error.c	\
 	linux/aarch64/set_scno.c	\
+	linux/aarch64/shuffle_scno.c	\
 	linux/aarch64/signalent1.h	\
 	linux/aarch64/syscallent.h	\
 	linux/aarch64/syscallent1.h	\
+	linux/alpha/arch_defs_.h	\
 	linux/alpha/arch_getrval2.c	\
 	linux/alpha/arch_regs.c		\
 	linux/alpha/arch_regs.h		\
@@ -1295,7 +1333,7 @@
 	linux/alpha/get_error.c		\
 	linux/alpha/get_scno.c		\
 	linux/alpha/get_syscall_args.c	\
-	linux/alpha/get_syscall_result.c\
+	linux/alpha/get_syscall_result.c	\
 	linux/alpha/ioctls_arch0.h	\
 	linux/alpha/ioctls_inc0.h	\
 	linux/alpha/set_error.c		\
@@ -1314,8 +1352,11 @@
 	linux/arc/set_error.c		\
 	linux/arc/set_scno.c		\
 	linux/arc/syscallent.h		\
+	linux/arch_defs_.h		\
+	linux/arch_kvm.c		\
 	linux/arch_regs.h		\
 	linux/arch_sigreturn.c		\
+	linux/arm/arch_defs_.h		\
 	linux/arm/arch_regs.c		\
 	linux/arm/arch_regs.h		\
 	linux/arm/arch_rt_sigframe.c	\
@@ -1325,8 +1366,10 @@
 	linux/arm/get_syscall_args.c	\
 	linux/arm/ioctls_arch0.h	\
 	linux/arm/ioctls_inc0.h		\
+	linux/arm/nr_prefix.c		\
 	linux/arm/set_error.c		\
 	linux/arm/set_scno.c		\
+	linux/arm/shuffle_scno.c	\
 	linux/arm/syscallent.h		\
 	linux/arm/userent.h		\
 	linux/avr32/arch_regs.c		\
@@ -1341,6 +1384,7 @@
 	linux/avr32/set_scno.c		\
 	linux/avr32/syscallent.h	\
 	linux/avr32/userent.h		\
+	linux/bfin/arch_defs_.h		\
 	linux/bfin/arch_regs.c		\
 	linux/bfin/arch_rt_sigframe.c	\
 	linux/bfin/get_error.c		\
@@ -1354,33 +1398,10 @@
 	linux/bfin/set_scno.c		\
 	linux/bfin/syscallent.h		\
 	linux/bfin/userent.h		\
-	linux/crisv10/arch_regs.c	\
-	linux/crisv10/arch_rt_sigframe.c\
-	linux/crisv10/arch_sigreturn.c	\
-	linux/crisv10/get_error.c	\
-	linux/crisv10/get_scno.c	\
-	linux/crisv10/get_syscall_args.c	\
-	linux/crisv10/get_syscall_result.c	\
-	linux/crisv10/rt_sigframe.h	\
-	linux/crisv10/set_error.c	\
-	linux/crisv10/set_scno.c	\
-	linux/crisv10/syscallent.h	\
-	linux/crisv10/userent.h		\
-	linux/crisv32/arch_regs.c	\
-	linux/crisv32/arch_rt_sigframe.c\
-	linux/crisv32/arch_sigreturn.c	\
-	linux/crisv32/get_error.c	\
-	linux/crisv32/get_scno.c	\
-	linux/crisv32/get_syscall_args.c	\
-	linux/crisv32/get_syscall_result.c	\
-	linux/crisv32/rt_sigframe.h	\
-	linux/crisv32/set_error.c	\
-	linux/crisv32/set_scno.c	\
-	linux/crisv32/syscallent.h	\
-	linux/crisv32/userent.h		\
 	linux/dummy.h			\
 	linux/errnoent.h		\
 	linux/getregs_old.h		\
+	linux/hppa/arch_defs_.h		\
 	linux/hppa/arch_regs.c		\
 	linux/hppa/arch_regs.h		\
 	linux/hppa/arch_rt_sigframe.c	\
@@ -1396,6 +1417,8 @@
 	linux/hppa/set_scno.c		\
 	linux/hppa/signalent.h		\
 	linux/hppa/syscallent.h		\
+	linux/i386/arch_kvm.c		\
+	linux/i386/arch_defs_.h		\
 	linux/i386/arch_regs.c		\
 	linux/i386/arch_regs.h		\
 	linux/i386/arch_rt_sigframe.c	\
@@ -1411,6 +1434,7 @@
 	linux/i386/syscallent.h		\
 	linux/i386/userent.h		\
 	linux/i386/userent0.h		\
+	linux/ia64/arch_defs_.h		\
 	linux/ia64/arch_getrval2.c	\
 	linux/ia64/arch_regs.c		\
 	linux/ia64/arch_regs.h		\
@@ -1426,6 +1450,7 @@
 	linux/ia64/syscallent.h		\
 	linux/ia64/userent.h		\
 	linux/inet_diag.h		\
+	linux/m68k/arch_defs_.h		\
 	linux/m68k/arch_regs.c		\
 	linux/m68k/arch_regs.h		\
 	linux/m68k/arch_rt_sigframe.c	\
@@ -1451,8 +1476,9 @@
 	linux/metag/set_error.c		\
 	linux/metag/set_scno.c		\
 	linux/metag/syscallent.h	\
+	linux/microblaze/arch_defs_.h	\
 	linux/microblaze/arch_regs.c	\
-	linux/microblaze/arch_rt_sigframe.c\
+	linux/microblaze/arch_rt_sigframe.c	\
 	linux/microblaze/arch_sigreturn.c	\
 	linux/microblaze/get_error.c	\
 	linux/microblaze/get_scno.c	\
@@ -1464,6 +1490,7 @@
 	linux/microblaze/set_scno.c	\
 	linux/microblaze/syscallent.h	\
 	linux/microblaze/userent.h	\
+	linux/mips/arch_defs_.h		\
 	linux/mips/arch_getrval2.c	\
 	linux/mips/arch_regs.c		\
 	linux/mips/arch_regs.h		\
@@ -1486,8 +1513,8 @@
 	linux/mips/syscallent-o32.h	\
 	linux/mips/syscallent.h		\
 	linux/mips/userent.h		\
-	linux/mtd-abi.h			\
 	linux/netlink_diag.h		\
+	linux/nios2/arch_defs_.h	\
 	linux/nios2/arch_regs.c		\
 	linux/nios2/arch_regs.h		\
 	linux/nios2/arch_rt_sigframe.c	\
@@ -1499,6 +1526,7 @@
 	linux/nios2/set_error.c		\
 	linux/nios2/set_scno.c		\
 	linux/nios2/syscallent.h	\
+	linux/nr_prefix.c		\
 	linux/or1k/arch_regs.c		\
 	linux/or1k/arch_regs.h		\
 	linux/or1k/arch_rt_sigframe.c	\
@@ -1512,10 +1540,10 @@
 	linux/or1k/syscallent.h		\
 	linux/or1k/userent.h		\
 	linux/packet_diag.h		\
-	linux/personality.h		\
+	linux/powerpc/arch_defs_.h	\
 	linux/powerpc/arch_regs.c	\
 	linux/powerpc/arch_regs.h	\
-	linux/powerpc/arch_rt_sigframe.c\
+	linux/powerpc/arch_rt_sigframe.c	\
 	linux/powerpc/arch_sigreturn.c	\
 	linux/powerpc/errnoent.h	\
 	linux/powerpc/get_error.c	\
@@ -1529,9 +1557,10 @@
 	linux/powerpc/set_scno.c	\
 	linux/powerpc/syscallent.h	\
 	linux/powerpc/userent.h		\
+	linux/powerpc64/arch_defs_.h	\
 	linux/powerpc64/arch_regs.c	\
 	linux/powerpc64/arch_regs.h	\
-	linux/powerpc64/arch_rt_sigframe.c\
+	linux/powerpc64/arch_rt_sigframe.c	\
 	linux/powerpc64/arch_sigreturn.c	\
 	linux/powerpc64/errnoent.h	\
 	linux/powerpc64/errnoent1.h	\
@@ -1551,7 +1580,7 @@
 	linux/powerpc64/syscallent.h	\
 	linux/powerpc64/syscallent1.h	\
 	linux/powerpc64/userent.h	\
-	linux/ptp_clock.h		\
+	linux/riscv/arch_defs_.h	\
 	linux/riscv/arch_regs.c		\
 	linux/riscv/arch_regs.h		\
 	linux/riscv/arch_rt_sigframe.c	\
@@ -1569,6 +1598,7 @@
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
 	linux/rt_sigframe.h		\
+	linux/s390/arch_defs_.h		\
 	linux/s390/arch_regs.c		\
 	linux/s390/arch_regs.h		\
 	linux/s390/arch_rt_sigframe.c	\
@@ -1585,20 +1615,27 @@
 	linux/s390/userent.h		\
 	linux/s390/userent0.h		\
 	linux/s390/userent1.h		\
+	linux/s390x/arch_defs_.h	\
 	linux/s390x/arch_regs.c		\
 	linux/s390x/arch_regs.h		\
 	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
+	linux/s390x/errnoent1.h		\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
 	linux/s390x/ioctls_arch0.h	\
+	linux/s390x/ioctls_arch1.h	\
 	linux/s390x/ioctls_inc0.h	\
+	linux/s390x/ioctls_inc1.h	\
 	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
+	linux/s390x/signalent1.h	\
 	linux/s390x/syscallent.h	\
+	linux/s390x/syscallent1.h	\
 	linux/s390x/userent.h		\
+	linux/sh/arch_defs_.h		\
 	linux/sh/arch_getrval2.c	\
 	linux/sh/arch_regs.c		\
 	linux/sh/arch_rt_sigframe.c	\
@@ -1613,6 +1650,7 @@
 	linux/sh/syscallent.h		\
 	linux/sh/userent.h		\
 	linux/sh/userent0.h		\
+	linux/sh64/arch_defs_.h		\
 	linux/sh64/arch_regs.c		\
 	linux/sh64/arch_regs.h		\
 	linux/sh64/arch_rt_sigframe.c	\
@@ -1627,16 +1665,17 @@
 	linux/sh64/set_scno.c		\
 	linux/sh64/syscallent.h		\
 	linux/sh64/userent.h		\
+	linux/shuffle_scno.c		\
 	linux/signalent.h		\
 	linux/smc_diag.h		\
 	linux/sock_diag.h		\
+	linux/sparc/arch_defs_.h	\
 	linux/sparc/arch_getrval2.c	\
 	linux/sparc/arch_regs.c		\
 	linux/sparc/arch_regs.h		\
 	linux/sparc/arch_rt_sigframe.c	\
 	linux/sparc/arch_sigreturn.c	\
 	linux/sparc/errnoent.h		\
-	linux/sparc/gen.pl		\
 	linux/sparc/get_error.c		\
 	linux/sparc/get_scno.c		\
 	linux/sparc/get_syscall_args.c	\
@@ -1648,16 +1687,17 @@
 	linux/sparc/signalent.h		\
 	linux/sparc/syscallent.h	\
 	linux/sparc/userent.h		\
+	linux/sparc64/arch_defs_.h	\
 	linux/sparc64/arch_getrval2.c	\
 	linux/sparc64/arch_regs.c	\
 	linux/sparc64/arch_regs.h	\
-	linux/sparc64/arch_rt_sigframe.c\
+	linux/sparc64/arch_rt_sigframe.c	\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
 	linux/sparc64/errnoent1.h	\
 	linux/sparc64/get_error.c	\
 	linux/sparc64/get_scno.c	\
-	linux/sparc64/get_syscall_args.c\
+	linux/sparc64/get_syscall_args.c	\
 	linux/sparc64/ioctls_arch0.h	\
 	linux/sparc64/ioctls_arch1.h	\
 	linux/sparc64/ioctls_inc0.h	\
@@ -1672,6 +1712,7 @@
 	linux/sparc64/userent.h		\
 	linux/subcall.h			\
 	linux/syscall.h			\
+	linux/tile/arch_defs_.h		\
 	linux/tile/arch_regs.c		\
 	linux/tile/arch_regs.h		\
 	linux/tile/arch_rt_sigframe.c	\
@@ -1691,10 +1732,11 @@
 	linux/tile/syscallent.h		\
 	linux/tile/syscallent1.h	\
 	linux/tile/userent.h		\
-	linux/ubi-user.h		\
 	linux/unix_diag.h		\
 	linux/userent.h			\
 	linux/userent0.h		\
+	linux/x32/arch_defs_.h		\
+	linux/x32/arch_kvm.c		\
 	linux/x32/arch_regs.c		\
 	linux/x32/arch_regs.h		\
 	linux/x32/arch_rt_sigframe.c	\
@@ -1710,17 +1752,19 @@
 	linux/x32/rt_sigframe.h		\
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
+	linux/x32/shuffle_scno.c	\
 	linux/x32/signalent1.h		\
 	linux/x32/syscallent.h		\
 	linux/x32/syscallent1.h		\
 	linux/x32/userent.h		\
+	linux/x86_64/arch_defs_.h	\
+	linux/x86_64/arch_kvm.c		\
 	linux/x86_64/arch_regs.c	\
 	linux/x86_64/arch_regs.h	\
 	linux/x86_64/arch_rt_sigframe.c	\
 	linux/x86_64/arch_sigreturn.c	\
 	linux/x86_64/errnoent1.h	\
 	linux/x86_64/errnoent2.h	\
-	linux/x86_64/gentab.pl		\
 	linux/x86_64/get_error.c	\
 	linux/x86_64/get_scno.c		\
 	linux/x86_64/get_syscall_args.c	\
@@ -1735,6 +1779,7 @@
 	linux/x86_64/rt_sigframe.h	\
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
+	linux/x86_64/shuffle_scno.c	\
 	linux/x86_64/signalent1.h	\
 	linux/x86_64/signalent2.h	\
 	linux/x86_64/syscallent.h	\
@@ -1764,7 +1809,7 @@
 	$(XLAT_INPUT_FILES)		\
 	$(XLAT_HEADER_FILES)		\
 	xlat/gen.sh			\
-	xlate.el
+	# end of EXTRA_DIST
 
 strace_SOURCES_c = \
 	$(filter %.c,$(strace_SOURCES)) $(filter %.c,$(libstrace_a_SOURCES))
@@ -1788,11 +1833,11 @@
 ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
 BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) native_printer_decls.h \
 	native_printer_defs.h printers.h sen.h sys_func.h .version \
-	scno.h $(am__append_7) $(am__append_11)
+	scno.h $(am__append_10) $(am__append_14)
 CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \
 	ioctl_iocdef.h ioctl_iocdef.i native_printer_decls.h \
 	native_printer_defs.h printers.h sen.h sys_func.h syscallent.i \
-	scno.h $(am__append_8) $(am__append_12)
+	scno.h $(am__append_11) $(am__append_15)
 DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
@@ -1882,6 +1927,8 @@
 	-rm -f config.h stamp-h1
 strace.1: $(top_builddir)/config.status $(srcdir)/strace.1.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
+strace-log-merge.1: $(top_builddir)/config.status $(srcdir)/strace-log-merge.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
 strace.spec: $(top_builddir)/config.status $(srcdir)/strace.spec.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 debian/changelog: $(top_builddir)/config.status $(top_srcdir)/debian/changelog.in
@@ -2068,8 +2115,10 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-ustat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-utime.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-v4l2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fstatfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fstatfs64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getpagesize.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-socketcall.Po@am__quote@
@@ -2148,6 +2197,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kcmp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kexec.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-keyctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kvm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ldt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-link.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-listen.Po@am__quote@
@@ -2212,6 +2262,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-reboot.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-renameat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-resource.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-riscv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rt_sigframe.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rt_sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtc.Po@am__quote@
@@ -2228,6 +2279,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_rule.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_tc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_tc_action.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-s390.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sched.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-scsi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-seccomp.Po@am__quote@
@@ -3355,6 +3407,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-v4l2.obj `if test -f 'v4l2.c'; then $(CYGPATH_W) 'v4l2.c'; else $(CYGPATH_W) '$(srcdir)/v4l2.c'; fi`
 
+libstrace_a-fetch_indirect_syscall_args.o: fetch_indirect_syscall_args.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_indirect_syscall_args.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo -c -o libstrace_a-fetch_indirect_syscall_args.o `test -f 'fetch_indirect_syscall_args.c' || echo '$(srcdir)/'`fetch_indirect_syscall_args.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fetch_indirect_syscall_args.c' object='libstrace_a-fetch_indirect_syscall_args.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_indirect_syscall_args.o `test -f 'fetch_indirect_syscall_args.c' || echo '$(srcdir)/'`fetch_indirect_syscall_args.c
+
+libstrace_a-fetch_indirect_syscall_args.obj: fetch_indirect_syscall_args.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_indirect_syscall_args.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo -c -o libstrace_a-fetch_indirect_syscall_args.obj `if test -f 'fetch_indirect_syscall_args.c'; then $(CYGPATH_W) 'fetch_indirect_syscall_args.c'; else $(CYGPATH_W) '$(srcdir)/fetch_indirect_syscall_args.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fetch_indirect_syscall_args.c' object='libstrace_a-fetch_indirect_syscall_args.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_indirect_syscall_args.obj `if test -f 'fetch_indirect_syscall_args.c'; then $(CYGPATH_W) 'fetch_indirect_syscall_args.c'; else $(CYGPATH_W) '$(srcdir)/fetch_indirect_syscall_args.c'; fi`
+
 libstrace_a-fstatfs.o: fstatfs.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs.Tpo -c -o libstrace_a-fstatfs.o `test -f 'fstatfs.c' || echo '$(srcdir)/'`fstatfs.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs.Tpo $(DEPDIR)/libstrace_a-fstatfs.Po
@@ -3383,6 +3449,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs64.obj `if test -f 'fstatfs64.c'; then $(CYGPATH_W) 'fstatfs64.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs64.c'; fi`
 
+libstrace_a-getpagesize.o: getpagesize.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpagesize.o -MD -MP -MF $(DEPDIR)/libstrace_a-getpagesize.Tpo -c -o libstrace_a-getpagesize.o `test -f 'getpagesize.c' || echo '$(srcdir)/'`getpagesize.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpagesize.Tpo $(DEPDIR)/libstrace_a-getpagesize.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='getpagesize.c' object='libstrace_a-getpagesize.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.o `test -f 'getpagesize.c' || echo '$(srcdir)/'`getpagesize.c
+
+libstrace_a-getpagesize.obj: getpagesize.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpagesize.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getpagesize.Tpo -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpagesize.Tpo $(DEPDIR)/libstrace_a-getpagesize.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='getpagesize.c' object='libstrace_a-getpagesize.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi`
+
 libstrace_a-ipc.o: ipc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc.Tpo -c -o libstrace_a-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc.Tpo $(DEPDIR)/libstrace_a-ipc.Po
@@ -4475,6 +4555,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-keyctl.obj `if test -f 'keyctl.c'; then $(CYGPATH_W) 'keyctl.c'; else $(CYGPATH_W) '$(srcdir)/keyctl.c'; fi`
 
+strace-kvm.o: kvm.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kvm.o -MD -MP -MF $(DEPDIR)/strace-kvm.Tpo -c -o strace-kvm.o `test -f 'kvm.c' || echo '$(srcdir)/'`kvm.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-kvm.Tpo $(DEPDIR)/strace-kvm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kvm.c' object='strace-kvm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kvm.o `test -f 'kvm.c' || echo '$(srcdir)/'`kvm.c
+
+strace-kvm.obj: kvm.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kvm.obj -MD -MP -MF $(DEPDIR)/strace-kvm.Tpo -c -o strace-kvm.obj `if test -f 'kvm.c'; then $(CYGPATH_W) 'kvm.c'; else $(CYGPATH_W) '$(srcdir)/kvm.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-kvm.Tpo $(DEPDIR)/strace-kvm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kvm.c' object='strace-kvm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kvm.obj `if test -f 'kvm.c'; then $(CYGPATH_W) 'kvm.c'; else $(CYGPATH_W) '$(srcdir)/kvm.c'; fi`
+
 strace-ldt.o: ldt.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ldt.o -MD -MP -MF $(DEPDIR)/strace-ldt.Tpo -c -o strace-ldt.o `test -f 'ldt.c' || echo '$(srcdir)/'`ldt.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-ldt.Tpo $(DEPDIR)/strace-ldt.Po
@@ -5371,6 +5465,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-resource.obj `if test -f 'resource.c'; then $(CYGPATH_W) 'resource.c'; else $(CYGPATH_W) '$(srcdir)/resource.c'; fi`
 
+strace-riscv.o: riscv.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-riscv.o -MD -MP -MF $(DEPDIR)/strace-riscv.Tpo -c -o strace-riscv.o `test -f 'riscv.c' || echo '$(srcdir)/'`riscv.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-riscv.Tpo $(DEPDIR)/strace-riscv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='riscv.c' object='strace-riscv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-riscv.o `test -f 'riscv.c' || echo '$(srcdir)/'`riscv.c
+
+strace-riscv.obj: riscv.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-riscv.obj -MD -MP -MF $(DEPDIR)/strace-riscv.Tpo -c -o strace-riscv.obj `if test -f 'riscv.c'; then $(CYGPATH_W) 'riscv.c'; else $(CYGPATH_W) '$(srcdir)/riscv.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-riscv.Tpo $(DEPDIR)/strace-riscv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='riscv.c' object='strace-riscv.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-riscv.obj `if test -f 'riscv.c'; then $(CYGPATH_W) 'riscv.c'; else $(CYGPATH_W) '$(srcdir)/riscv.c'; fi`
+
 strace-rt_sigframe.o: rt_sigframe.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigframe.o -MD -MP -MF $(DEPDIR)/strace-rt_sigframe.Tpo -c -o strace-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigframe.Tpo $(DEPDIR)/strace-rt_sigframe.Po
@@ -5595,6 +5703,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_tc_action.obj `if test -f 'rtnl_tc_action.c'; then $(CYGPATH_W) 'rtnl_tc_action.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc_action.c'; fi`
 
+strace-s390.o: s390.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-s390.o -MD -MP -MF $(DEPDIR)/strace-s390.Tpo -c -o strace-s390.o `test -f 's390.c' || echo '$(srcdir)/'`s390.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-s390.Tpo $(DEPDIR)/strace-s390.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='s390.c' object='strace-s390.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-s390.o `test -f 's390.c' || echo '$(srcdir)/'`s390.c
+
+strace-s390.obj: s390.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-s390.obj -MD -MP -MF $(DEPDIR)/strace-s390.Tpo -c -o strace-s390.obj `if test -f 's390.c'; then $(CYGPATH_W) 's390.c'; else $(CYGPATH_W) '$(srcdir)/s390.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-s390.Tpo $(DEPDIR)/strace-s390.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='s390.c' object='strace-s390.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-s390.obj `if test -f 's390.c'; then $(CYGPATH_W) 's390.c'; else $(CYGPATH_W) '$(srcdir)/s390.c'; fi`
+
 strace-sched.o: sched.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sched.o -MD -MP -MF $(DEPDIR)/strace-sched.Tpo -c -o strace-sched.o `test -f 'sched.c' || echo '$(srcdir)/'`sched.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sched.Tpo $(DEPDIR)/strace-sched.Po
@@ -7075,6 +7197,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/keyctl_commands.h: $(top_srcdir)/xlat/keyctl_commands.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/kvm_mem_flags.h: $(top_srcdir)/xlat/kvm_mem_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/lockfcmds.h: $(top_srcdir)/xlat/lockfcmds.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/loop_cmds.h: $(top_srcdir)/xlat/loop_cmds.in $(top_srcdir)/xlat/gen.sh
@@ -7299,6 +7423,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/resources.h: $(top_srcdir)/xlat/resources.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/riscv_flush_icache_flags.h: $(top_srcdir)/xlat/riscv_flush_icache_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/route_nexthop_flags.h: $(top_srcdir)/xlat/route_nexthop_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/routing_flags.h: $(top_srcdir)/xlat/routing_flags.in $(top_srcdir)/xlat/gen.sh
@@ -7367,6 +7493,12 @@
 	$(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/s390_guarded_storage_commands.h: $(top_srcdir)/xlat/s390_guarded_storage_commands.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/s390_runtime_instr_commands.h: $(top_srcdir)/xlat/s390_runtime_instr_commands.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/s390_sthyi_function_codes.h: $(top_srcdir)/xlat/s390_sthyi_function_codes.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
@@ -7467,6 +7599,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sockipxoptions.h: $(top_srcdir)/xlat/sockipxoptions.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socknetlinkoptions.h: $(top_srcdir)/xlat/socknetlinkoptions.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sockoptions.h: $(top_srcdir)/xlat/sockoptions.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sockpacketoptions.h: $(top_srcdir)/xlat/sockpacketoptions.in $(top_srcdir)/xlat/gen.sh
@@ -7695,9 +7829,12 @@
 
 mpers-m%.stamp: $(srcdir_mpers_source_files) | printers.h
 	for f in $^; do \
-		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; \
+		READELF="$(READELF)" \
+		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) $(mpers_CC_FLAGS) $$f || exit; \
 	done
 	> $@
 
@@ -7754,8 +7891,10 @@
 native_printer_decls.h native_printer_defs.h: mpers_PREFIX =
 
 @HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_NAME = m32
+@HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_CC_FLAGS = @cc_flags_m32@
 
 @HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_NAME = mx32
+@HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_CC_FLAGS = @cc_flags_mx32@
 
 clean-local:
 	-rm -rf mpers-m32 mpers-mx32
diff --git a/NEWS b/NEWS
index 03f8375..868e30c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,76 @@
+Noteworthy changes in release 4.21 (2018-02-13)
+===============================================
+
+* Changes in behaviour
+  * Warning is now issued when -F option is used.
+  * Warning is now issued when a tracee with unsupported personality
+    is attached.
+  * Unknown syscall numbers are now printed in hexadecimal form.
+
+* Improvements
+  * Implemented decoding of netlink descriptor attributes as file descriptors.
+  * Implemented decoding of hugetlb page size selection flags.
+  * Implemented decoding of BPF_PROG_TEST_RUN, BPF_PROG_GET_NEXT_ID,
+    BPF_MAP_GET_NEXT_ID, BPF_PROG_GET_FD_BY_ID, BPF_MAP_GET_FD_BY_ID,
+    and BPF_OBJ_GET_INFO_BY_FD commands of bpf syscall.
+  * Enhanced decoding of get_thread_area, memfd_create, modify_ldt,
+    perf_event_open, reboot, s390_guarded_storage, s390_pcio_mmio_read,
+    s390_pci_mmio_write, s390_runtime_instr, s390_sthyi, set_thread_area,
+    and shmget syscalls.
+  * Implemented decoding of KVM_* and DM_LIST_DEVICES ioctl commands.
+  * Implemented decoding of riscv_flush_icache syscall.
+  * Enhanced decoding of getsockopt and setsockopt syscalls for SOL_NETLINK
+    level.
+  * Enhanced decoding of BPF_MAP_CREATE command of bpf syscall.
+  * Print values returned by mq_open syscall and first arguments
+    of mq_getsetattr, mq_notify, mq_timedreceive, and mq_timedsend syscalls
+    as file descriptors.
+  * Added decoding of get_tls syscall on arm.
+  * Added -e trace=%pure option for tracing system calls with no arguments that
+    never fail.
+  * Updated lists of IPV6_*, MAP_*, MEMBARRIER_CMD_*, MSG_*, NT_*, PKEY_*,
+    SHM_*, and TCP_* constants.
+  * Added manual page for the strace-log-merge command.
+  * Updated lists of ioctl commands from Linux 4.15.
+  * Implemented biarch support for s390x.
+  * Implemented an optional support for symbol demangling in strace -k output
+    (activated by --with-libiberty configure option).
+  * Information about availability of demangling and reliable personality
+    decoding (on architectures with multiple personalities) is now available
+    in strace -V output.
+  * Added decoding of pkey_alloc, pkey_free, and pkey_mprotect syscalls on
+    powerpc and powerpc64.
+  * Enhanced manual page.
+
+* Bug fixes
+  * Fixed multi-personality support in cross builds.
+  * Added mq_getsetattr, mq_notify, mq_open, mq_timedreceive, and mq_timedsend
+    syscalls to %desc tracing set.
+  * Fixed path tracing support for mmap syscalls with indirect arguments and
+    for old select syscall.
+  * Fixed decoding of arm-specific (__ARM_NR_*) syscalls.
+  * Fixed open mode flags decoding.
+  * Fixed corner cases in handling of strace -ff -ttt logs by strace-log-merge.
+  * Error counts that exceed one billion are now printed correctly in call
+    summary output.
+  * Fixed call summary header for x32 personality.
+  * Changes of tracee personalities are reported more reliably.
+  * Fixed the case when strace attaches to a tracee being inside exec and its
+    first syscall stop is syscall-exit-stop instead of syscall-enter-stop,
+    which messed up all the syscall state tracking.
+  * Fixed printing of higher 32 bits of the return value for x32 personality.
+
+* Portability
+  * A C compiler that supports "for" loop initial declarations is now required.
+  * Inability to configure multiple personality support on architectures where
+    multiple personalities are supported leads to configuration failure during
+    build now.  Use --enable-mpers=check to revert to the old behaviour.
+  * Build-time requirement for the mpers support has been lowered from gawk 4
+    to gawk 3.
+  * Removed incomplete and non-functional support for the CRIS architecture.
+  * Removed incomplete and unused support for IA-32 mode on the IA-64
+    architecture.
+
 Noteworthy changes in release 4.20 (2017-11-13)
 ===============================================
 
diff --git a/aclocal.m4 b/aclocal.m4
index 1d14520..cca8cf2 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1204,7 +1204,6 @@
 m4_include([m4/ax_prog_cc_for_build.m4])
 m4_include([m4/ax_valgrind_check.m4])
 m4_include([m4/mpers.m4])
-m4_include([m4/st_bpf.m4])
 m4_include([m4/st_save_restore_var.m4])
 m4_include([m4/st_warn_cflags.m4])
 m4_include([m4/warnings.m4])
diff --git a/alpha.c b/alpha.c
index 70d4ca5..376ec0f 100644
--- a/alpha.c
+++ b/alpha.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,6 +30,8 @@
 
 #ifdef ALPHA
 
+# include "xstring.h"
+
 static int
 decode_getxxid(struct tcb *tcp, const char *what)
 {
@@ -40,7 +43,7 @@
 		return 0;
 	static const char const fmt[] = "%s %ld";
 	static char outstr[sizeof(fmt) + 3 * sizeof(rval)];
-	snprintf(outstr, sizeof(outstr), fmt, what, rval);
+	xsprintf(outstr, fmt, what, rval);
 	tcp->auxstr = outstr;
 	return RVAL_STR;
 }
diff --git a/arch_defs.h b/arch_defs.h
new file mode 100644
index 0000000..8844151
--- /dev/null
+++ b/arch_defs.h
@@ -0,0 +1,8 @@
+/* Aarch-specific definitions.  */
+#ifndef STRACE_ARCH_DEFS_H
+#define STRACE_ARCH_DEFS_H
+
+#include "arch_defs_.h"
+#include "linux/arch_defs_.h"
+
+#endif /* !STRACE_ARCH_DEFS_H */
diff --git a/basic_filters.c b/basic_filters.c
index 7b7f0a5..4ea23b5 100644
--- a/basic_filters.c
+++ b/basic_filters.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,13 +38,11 @@
 	if (n < 0)
 		return false;
 
-	unsigned int p;
 	bool done = false;
 
-	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
-		if ((unsigned) n >= nsyscall_vec[p]) {
+	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+		if ((unsigned) n >= nsyscall_vec[p])
 			continue;
-		}
 		add_number_to_set_array(n, set, p);
 		done = true;
 	}
@@ -71,12 +69,10 @@
 	if ((rc = regcomp(&preg, s, REG_EXTENDED | REG_NOSUB)) != 0)
 		regerror_msg_and_die(rc, &preg, "regcomp", s);
 
-	unsigned int p;
 	bool found = false;
-	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
-		unsigned int i;
 
-		for (i = 0; i < nsyscall_vec[p]; ++i) {
+	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+		for (unsigned int i = 0; i < nsyscall_vec[p]; ++i) {
 			if (!sysent_vec[p][i].sys_name)
 				continue;
 			rc = regexec(&preg, sysent_vec[p][i].sys_name,
@@ -101,13 +97,6 @@
 		const char *name;
 		unsigned int value;
 	} syscall_class[] = {
-		{ "desc",	TRACE_DESC	},
-		{ "file",	TRACE_FILE	},
-		{ "memory",	TRACE_MEMORY	},
-		{ "process",	TRACE_PROCESS	},
-		{ "signal",	TRACE_SIGNAL	},
-		{ "ipc",	TRACE_IPC	},
-		{ "network",	TRACE_NETWORK	},
 		{ "%desc",	TRACE_DESC	},
 		{ "%file",	TRACE_FILE	},
 		{ "%memory",	TRACE_MEMORY	},
@@ -122,13 +111,20 @@
 		{ "%statfs",	TRACE_STATFS	},
 		{ "%fstatfs",	TRACE_FSTATFS	},
 		{ "%%statfs",	TRACE_STATFS_LIKE	},
+		{ "%pure",	TRACE_PURE	},
+		/* legacy class names */
+		{ "desc",	TRACE_DESC	},
+		{ "file",	TRACE_FILE	},
+		{ "memory",	TRACE_MEMORY	},
+		{ "process",	TRACE_PROCESS	},
+		{ "signal",	TRACE_SIGNAL	},
+		{ "ipc",	TRACE_IPC	},
+		{ "network",	TRACE_NETWORK	},
 	};
 
-	unsigned int i;
-	for (i = 0; i < ARRAY_SIZE(syscall_class); ++i) {
-		if (strcmp(s, syscall_class[i].name) == 0) {
+	for (unsigned int i = 0; i < ARRAY_SIZE(syscall_class); ++i) {
+		if (strcmp(s, syscall_class[i].name) == 0)
 			return syscall_class[i].value;
-		}
 	}
 
 	return 0;
@@ -141,37 +137,42 @@
 	if (!n)
 		return false;
 
-	unsigned int p;
-	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
-		unsigned int i;
-
-		for (i = 0; i < nsyscall_vec[p]; ++i) {
-			if (!sysent_vec[p][i].sys_name
-			    || (sysent_vec[p][i].sys_flags & n) != n) {
-				continue;
-			}
-			add_number_to_set_array(i, set, p);
+	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+		for (unsigned int i = 0; i < nsyscall_vec[p]; ++i) {
+			if (sysent_vec[p][i].sys_name &&
+			    (sysent_vec[p][i].sys_flags & n) == n)
+				add_number_to_set_array(i, set, p);
 		}
 	}
 
 	return true;
 }
 
+kernel_long_t
+scno_by_name(const char *s, unsigned int p, kernel_long_t start)
+{
+	if (p >= SUPPORTED_PERSONALITIES)
+		return -1;
+
+	for (kernel_ulong_t i = start; i < nsyscall_vec[p]; ++i) {
+		if (sysent_vec[p][i].sys_name &&
+		    strcmp(s, sysent_vec[p][i].sys_name) == 0)
+			return i;
+	}
+
+	return -1;
+}
+
 static bool
 qualify_syscall_name(const char *s, struct number_set *set)
 {
-	unsigned int p;
 	bool found = false;
 
-	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
-		unsigned int i;
-
-		for (i = 0; i < nsyscall_vec[p]; ++i) {
-			if (!sysent_vec[p][i].sys_name
-			    || strcmp(s, sysent_vec[p][i].sys_name)) {
-				continue;
-			}
-			add_number_to_set_array(i, set, p);
+	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+		for (kernel_long_t scno = 0;
+		     (scno = scno_by_name(s, p, scno)) >= 0;
+		     ++scno) {
+			add_number_to_set_array(scno, set, p);
 			found = true;
 		}
 	}
@@ -202,8 +203,7 @@
  * according to STR specification.
  */
 void
-qualify_syscall_tokens(const char *const str, struct number_set *const set,
-		       const char *const name)
+qualify_syscall_tokens(const char *const str, struct number_set *const set)
 {
 	/* Clear all sets. */
 	clear_number_set_array(set, SUPPORTED_PERSONALITIES);
@@ -213,7 +213,6 @@
 	 * of the remaining specification.
 	 */
 	const char *s = str;
-handle_inversion:
 	while (*s == '!') {
 		invert_number_set_array(set, SUPPORTED_PERSONALITIES);
 		++s;
@@ -227,8 +226,9 @@
 		 */
 		return;
 	} else if (strcmp(s, "all") == 0) {
-		s = "!none";
-		goto handle_inversion;
+		/* "all" == "!none" */
+		invert_number_set_array(set, SUPPORTED_PERSONALITIES);
+		return;
 	}
 
 	/*
@@ -240,22 +240,19 @@
 	 */
 	char *copy = xstrdup(s);
 	char *saveptr = NULL;
-	const char *token;
 	bool done = false;
 
-	for (token = strtok_r(copy, ",", &saveptr); token;
-	     token = strtok_r(NULL, ",", &saveptr)) {
+	for (const char *token = strtok_r(copy, ",", &saveptr);
+	     token; token = strtok_r(NULL, ",", &saveptr)) {
 		done = qualify_syscall(token, set);
-		if (!done) {
-			error_msg_and_die("invalid %s '%s'", name, token);
-		}
+		if (!done)
+			error_msg_and_die("invalid system call '%s'", token);
 	}
 
 	free(copy);
 
-	if (!done) {
-		error_msg_and_die("invalid %s '%s'", name, str);
-	}
+	if (!done)
+		error_msg_and_die("invalid system call '%s'", str);
 }
 
 /*
@@ -273,7 +270,6 @@
 	 * of the remaining specification.
 	 */
 	const char *s = str;
-handle_inversion:
 	while (*s == '!') {
 		invert_number_set_array(set, 1);
 		++s;
@@ -287,8 +283,9 @@
 		 */
 		return;
 	} else if (strcmp(s, "all") == 0) {
-		s = "!none";
-		goto handle_inversion;
+		/* "all" == "!none" */
+		invert_number_set_array(set, 1);
+		return;
 	}
 
 	/*
@@ -300,22 +297,19 @@
 	 */
 	char *copy = xstrdup(s);
 	char *saveptr = NULL;
-	const char *token;
 	int number = -1;
 
-	for (token = strtok_r(copy, ",", &saveptr); token;
-	     token = strtok_r(NULL, ",", &saveptr)) {
+	for (const char *token = strtok_r(copy, ",", &saveptr);
+	     token; token = strtok_r(NULL, ",", &saveptr)) {
 		number = func(token);
-		if (number < 0) {
+		if (number < 0)
 			error_msg_and_die("invalid %s '%s'", name, token);
-		}
 
 		add_number_to_set(number, set);
 	}
 
 	free(copy);
 
-	if (number < 0) {
+	if (number < 0)
 		error_msg_and_die("invalid %s '%s'", name, str);
-	}
 }
diff --git a/bpf.c b/bpf.c
index 7734b07..59d1e74 100644
--- a/bpf.c
+++ b/bpf.c
@@ -90,7 +90,7 @@
 {
 	struct {
 		uint32_t map_type, key_size, value_size, max_entries,
-			 map_flags, inner_map_fd;
+			 map_flags, inner_map_fd, numa_node;
 	} attr = {};
 	const unsigned int len = size < sizeof(attr) ? size : sizeof(attr);
 
@@ -103,6 +103,8 @@
 	PRINT_FIELD_U(", ", attr, max_entries);
 	PRINT_FIELD_FLAGS(", ", attr, map_flags, bpf_map_flags, "BPF_F_???");
 	PRINT_FIELD_FD(", ", attr, inner_map_fd, tcp);
+	if (attr.map_flags & BPF_F_NUMA_NODE)
+		PRINT_FIELD_U(", ", attr, numa_node);
 	decode_attr_extra_data(tcp, data, size, sizeof(attr));
 	tprints("}");
 
@@ -278,6 +280,105 @@
 	return RVAL_DECODED;
 }
 
+DEF_BPF_CMD_DECODER(BPF_PROG_TEST_RUN)
+{
+	struct {
+		uint32_t prog_fd, retval, data_size_in, data_size_out;
+		uint64_t ATTRIBUTE_ALIGNED(8) data_in, data_out;
+		uint32_t repeat, duration;
+	} attr = {};
+	const unsigned int len = size < sizeof(attr) ? size : sizeof(attr);
+
+	memcpy(&attr, data, len);
+
+	PRINT_FIELD_FD("{test={", attr, prog_fd, tcp);
+	PRINT_FIELD_U(", ", attr, retval);
+	PRINT_FIELD_U(", ", attr, data_size_in);
+	PRINT_FIELD_U(", ", attr, data_size_out);
+	PRINT_FIELD_X(", ", attr, data_in);
+	PRINT_FIELD_X(", ", attr, data_out);
+	PRINT_FIELD_U(", ", attr, repeat);
+	PRINT_FIELD_U(", ", attr, duration);
+	tprints("}");
+	decode_attr_extra_data(tcp, data, size, sizeof(attr));
+	tprints("}");
+
+	return RVAL_DECODED;
+}
+
+DEF_BPF_CMD_DECODER(BPF_PROG_GET_NEXT_ID)
+{
+	struct {
+		uint32_t start_id, next_id;
+	} attr = {};
+	const unsigned int len = size < sizeof(attr) ? size : sizeof(attr);
+
+	memcpy(&attr, data, len);
+
+	PRINT_FIELD_U("{", attr, start_id);
+	PRINT_FIELD_U(", ", attr, next_id);
+	decode_attr_extra_data(tcp, data, size, sizeof(attr));
+	tprints("}");
+
+	return RVAL_DECODED;
+}
+
+#define decode_BPF_MAP_GET_NEXT_ID decode_BPF_PROG_GET_NEXT_ID
+
+DEF_BPF_CMD_DECODER(BPF_PROG_GET_FD_BY_ID)
+{
+	struct {
+		uint32_t prog_id, next_id;
+	} attr = {};
+	const unsigned int len = size < sizeof(attr) ? size : sizeof(attr);
+
+	memcpy(&attr, data, len);
+
+	PRINT_FIELD_U("{", attr, prog_id);
+	PRINT_FIELD_U(", ", attr, next_id);
+	decode_attr_extra_data(tcp, data, size, sizeof(attr));
+	tprints("}");
+
+	return RVAL_DECODED;
+}
+
+DEF_BPF_CMD_DECODER(BPF_MAP_GET_FD_BY_ID)
+{
+	struct {
+		uint32_t map_id, next_id;
+	} attr = {};
+	const unsigned int len = size < sizeof(attr) ? size : sizeof(attr);
+
+	memcpy(&attr, data, len);
+
+	PRINT_FIELD_U("{", attr, map_id);
+	PRINT_FIELD_U(", ", attr, next_id);
+	decode_attr_extra_data(tcp, data, size, sizeof(attr));
+	tprints("}");
+
+	return RVAL_DECODED;
+}
+
+DEF_BPF_CMD_DECODER(BPF_OBJ_GET_INFO_BY_FD)
+{
+	struct {
+		uint32_t bpf_fd, info_len;
+		uint64_t ATTRIBUTE_ALIGNED(8) info;
+	} attr = {};
+	const unsigned int len = size < sizeof(attr) ? size : sizeof(attr);
+
+	memcpy(&attr, data, len);
+
+	PRINT_FIELD_FD("{info={", attr, bpf_fd, tcp);
+	PRINT_FIELD_U(", ", attr, info_len);
+	PRINT_FIELD_X(", ", attr, info);
+	tprints("}");
+	decode_attr_extra_data(tcp, data, size, sizeof(attr));
+	tprints("}");
+
+	return RVAL_DECODED | RVAL_FD;
+}
+
 SYS_FUNC(bpf)
 {
 	static const bpf_cmd_decoder_t bpf_cmd_decoders[] = {
@@ -291,6 +392,12 @@
 		BPF_CMD_ENTRY(BPF_OBJ_GET),
 		BPF_CMD_ENTRY(BPF_PROG_ATTACH),
 		BPF_CMD_ENTRY(BPF_PROG_DETACH),
+		BPF_CMD_ENTRY(BPF_PROG_TEST_RUN),
+		BPF_CMD_ENTRY(BPF_PROG_GET_NEXT_ID),
+		BPF_CMD_ENTRY(BPF_MAP_GET_NEXT_ID),
+		BPF_CMD_ENTRY(BPF_PROG_GET_FD_BY_ID),
+		BPF_CMD_ENTRY(BPF_MAP_GET_FD_BY_ID),
+		BPF_CMD_ENTRY(BPF_OBJ_GET_INFO_BY_FD),
 	};
 
 	const unsigned int cmd = tcp->u_arg[0];
diff --git a/btrfs.c b/btrfs.c
index 543acd7..ed3120a 100644
--- a/btrfs.c
+++ b/btrfs.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -787,7 +787,7 @@
 		char uuid[UUID_STRING_SIZE+1];
 		uint32_t nodesize, sectorsize, clone_alignment;
 #ifndef HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE
-		__u32 *reserved32;
+		uint32_t *reserved32;
 #endif
 
 		if (entering(tcp))
@@ -802,7 +802,7 @@
 		sectorsize = args.sectorsize,
 		clone_alignment = args.clone_alignment;
 #else
-		reserved32 = (__u32 *) (void *) args.reserved;
+		reserved32 = (void *) args.reserved;
 		nodesize = reserved32[0];
 		sectorsize = reserved32[1];
 		clone_alignment = reserved32[2];
diff --git a/clone.c b/clone.c
index a5f2b24..e1dcd71 100644
--- a/clone.c
+++ b/clone.c
@@ -4,7 +4,7 @@
  * Copyright (c) 2008 Jan Kratochvil <jan.kratochvil@redhat.com>
  * Copyright (c) 2009-2013 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,7 +49,7 @@
 # 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
+#elif defined S390 || defined S390X
 # define ARG_STACK	0
 # define ARG_FLAGS	1
 # define ARG_PTID	2
@@ -84,7 +84,7 @@
 	if (current_personality == 1)
 # endif
 	{
-		print_user_desc(tcp, tcp->u_arg[ARG_TLS]);
+		print_user_desc(tcp, tcp->u_arg[ARG_TLS], USER_DESC_BOTH);
 	}
 # if SUPPORTED_PERSONALITIES > 1
 	else
diff --git a/config.h b/config.h
index a1709ad..0f71839 100644
--- a/config.h
+++ b/config.h
@@ -26,13 +26,7 @@
 /* #undef BFIN */
 
 /* Current copyright year. */
-#define COPYRIGHT_YEAR "2017"
-
-/* Define for the CRISv10 architecture. */
-/* #undef CRISV10 */
-
-/* Define for the CRISv32 architecture. */
-/* #undef CRISV32 */
+#define COPYRIGHT_YEAR "2018"
 
 /* Define to 1 if you want OABI support on ARM EABI. */
 #define ENABLE_ARM_OABI 0
@@ -43,6 +37,9 @@
 /* Define to 1 if you have the <asm/cachectl.h> header file. */
 /* #undef HAVE_ASM_CACHECTL_H */
 
+/* Define to 1 if you have the <asm/guarded_storage.h> header file. */
+/* #undef HAVE_ASM_GUARDED_STORAGE_H */
+
 /* Define to 1 if you have the <asm/sigcontext.h> header file. */
 #define HAVE_ASM_SIGCONTEXT_H 1
 
@@ -646,6 +643,9 @@
    0 if you don't. */
 #define HAVE_DECL_VM_VFS_CACHE_PRESSURE 1
 
+/* Define to 1 if you have the <demangle.h> header file. */
+/* #undef HAVE_DEMANGLE_H */
+
 /* Define to 1 if the system provides dladdr */
 #define HAVE_DLADDR 1
 
@@ -685,12 +685,21 @@
 /* Define to 1 if you have the <gnu/stubs-x32.h> header file. */
 /* #undef HAVE_GNU_STUBS_X32_H */
 
+/* Define to 1 if you have the <iconv.h> header file. */
+/* #undef HAVE_ICONV_H */
+
+/* Define to 1 if you have the `iconv_open' function. */
+/* #undef HAVE_ICONV_OPEN */
+
 /* Define to 1 if you have the `if_indextoname' function. */
 #define HAVE_IF_INDEXTONAME 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #define HAVE_INTTYPES_H 1
 
+/* Define to 1 if you have the <libiberty/demangle.h> header file. */
+/* #undef HAVE_LIBIBERTY_DEMANGLE_H */
+
 /* Define to 1 if you have the <libunwind-ptrace.h> header file. */
 /* #undef HAVE_LIBUNWIND_PTRACE_H */
 
@@ -745,6 +754,12 @@
 /* Define to 1 if you have the <linux/kcmp.h> header file. */
 #define HAVE_LINUX_KCMP_H 1
 
+/* Define to 1 if you have the <linux/kvm.h> header file. */
+#define HAVE_LINUX_KVM_H 1
+
+/* Define to 1 if you have the <linux/memfd.h> header file. */
+#define HAVE_LINUX_MEMFD_H 1
+
 /* Define to 1 if you have the <linux/mmtimer.h> header file. */
 #define HAVE_LINUX_MMTIMER_H 1
 
@@ -841,7 +856,7 @@
 /* Define to 1 if you have the <linux/utsname.h> header file. */
 #define HAVE_LINUX_UTSNAME_H 1
 
-/* Define to 1 if you have CFLAG mpers support */
+/* Define to 1 if you have mpers_name mpers support */
 /* #undef HAVE_M32_MPERS */
 
 /* Define to 1 if MPERS_NAME has the type 'struct stat'. */
@@ -863,7 +878,7 @@
 /* Define to 1 if you have the <mqueue.h> header file. */
 /* #undef HAVE_MQUEUE_H */
 
-/* Define to 1 if you have CFLAG mpers support */
+/* Define to 1 if you have mpers_name mpers support */
 /* #undef HAVE_MX32_MPERS */
 
 /* Define to 1 if MPERS_NAME has the type 'struct stat'. */
@@ -894,6 +909,9 @@
 /* Define to 1 if you have the `open64' function. */
 #define HAVE_OPEN64 1
 
+/* Define to 1 if you have the <paths.h> header file. */
+#define HAVE_PATHS_H 1
+
 /* Define to 1 if you have the `prctl' function. */
 #define HAVE_PRCTL 1
 
@@ -1048,9 +1066,22 @@
 /* Define to 1 if the system has the type `struct keyctl_kdf_params'. */
 #define HAVE_STRUCT_KEYCTL_KDF_PARAMS 1
 
+/* Define to 1 if the system has the type `struct kvm_regs'. */
+#define HAVE_STRUCT_KVM_REGS 1
+
+/* Define to 1 if the system has the type `struct kvm_sregs'. */
+#define HAVE_STRUCT_KVM_SREGS 1
+
+/* Define to 1 if the system has the type `struct
+   kvm_userspace_memory_region'. */
+#define HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION 1
+
 /* Define to 1 if the system has the type `struct mmsghdr'. */
 #define HAVE_STRUCT_MMSGHDR 1
 
+/* Define to 1 if the system has the type `struct mtd_write_req'. */
+#define HAVE_STRUCT_MTD_WRITE_REQ 1
+
 /* Define to 1 if the system has the type `struct ndt_config'. */
 #define HAVE_STRUCT_NDT_CONFIG 1
 
@@ -1105,6 +1136,9 @@
 /* Define to 1 if `mmap_data' is a member of `struct perf_event_attr'. */
 #define HAVE_STRUCT_PERF_EVENT_ATTR_MMAP_DATA 1
 
+/* Define to 1 if `namespaces' is a member of `struct perf_event_attr'. */
+#define HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES 1
+
 /* Define to 1 if `precise_ip' is a member of `struct perf_event_attr'. */
 #define HAVE_STRUCT_PERF_EVENT_ATTR_PRECISE_IP 1
 
@@ -1133,6 +1167,9 @@
 /* Define to 1 if `write_backward' is a member of `struct perf_event_attr'. */
 #define HAVE_STRUCT_PERF_EVENT_ATTR_WRITE_BACKWARD 1
 
+/* Define to 1 if the system has the type `struct ptp_sys_offset'. */
+#define HAVE_STRUCT_PTP_SYS_OFFSET 1
+
 /* Define to 1 if the system has the type `struct ptrace_peeksiginfo_args'. */
 #define HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS 1
 
@@ -1202,9 +1239,15 @@
 /* Define to 1 if `tai' is a member of `struct timex'. */
 #define HAVE_STRUCT_TIMEX_TAI 1
 
+/* Define to 1 if `max_beb_per1024' is a member of `struct ubi_attach_req'. */
+/* #undef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024 */
+
 /* Define to 1 if the system has the type `struct user_desc'. */
 /* #undef HAVE_STRUCT_USER_DESC */
 
+/* Define to 1 if `lm' is a member of `struct user_desc'. */
+/* #undef HAVE_STRUCT_USER_DESC_LM */
+
 /* Define to 1 if `domainname' is a member of `struct utsname'. */
 #define HAVE_STRUCT_UTSNAME_DOMAINNAME 1
 
@@ -1268,21 +1311,30 @@
 /* Define to 1 if typeof works with your compiler. */
 #define HAVE_TYPEOF 1
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `attach_flags' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_ATTACH_FLAGS 1
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `bpf_fd' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_BPF_FD 1
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `flags' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_FLAGS 1
 
-/* Define to 1 if attr_text initialization works */
-#define HAVE_UNION_BPF_ATTR_INNER_MAP_FD 1
+/* Define to 1 if `info.info' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_INFO_INFO */
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `next_id' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_NEXT_ID */
+
+/* Define to 1 if `numa_node' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_NUMA_NODE */
+
+/* Define to 1 if `prog_flags' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_PROG_FLAGS 1
 
+/* Define to 1 if `test.duration' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_TEST_DURATION 1
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H 1
 
@@ -1329,7 +1381,7 @@
 /* #undef M68K */
 
 /* Date */
-#define MANPAGE_DATE "2017-08-28"
+#define MANPAGE_DATE "2018-02-11"
 
 /* Define for the Meta architecture. */
 /* #undef METAG */
@@ -1362,7 +1414,7 @@
 #define PACKAGE_NAME "strace"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "strace 4.20"
+#define PACKAGE_STRING "strace 4.21"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "strace"
@@ -1371,7 +1423,7 @@
 #define PACKAGE_URL "https://strace.io"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "4.20"
+#define PACKAGE_VERSION "4.21"
 
 /* Define for the PowerPC architecture. */
 /* #undef POWERPC */
@@ -1417,6 +1469,9 @@
 /* Define for the Tile architecture */
 /* #undef TILE */
 
+/* Do demangling symbols in stack trace */
+/* #undef USE_DEMANGLE */
+
 /* Compile stack tracing functionality */
 /* #undef USE_LIBUNWIND */
 
@@ -1443,7 +1498,7 @@
 
 
 /* Version number of package */
-#define VERSION "4.20"
+#define VERSION "4.21"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/config.h.in b/config.h.in
index 77a7335..1fd4ab8 100644
--- a/config.h.in
+++ b/config.h.in
@@ -30,12 +30,6 @@
 /* Current copyright year. */
 #undef COPYRIGHT_YEAR
 
-/* Define for the CRISv10 architecture. */
-#undef CRISV10
-
-/* Define for the CRISv32 architecture. */
-#undef CRISV32
-
 /* Define to 1 if you want OABI support on ARM EABI. */
 #undef ENABLE_ARM_OABI
 
@@ -45,6 +39,9 @@
 /* Define to 1 if you have the <asm/cachectl.h> header file. */
 #undef HAVE_ASM_CACHECTL_H
 
+/* Define to 1 if you have the <asm/guarded_storage.h> header file. */
+#undef HAVE_ASM_GUARDED_STORAGE_H
+
 /* Define to 1 if you have the <asm/sigcontext.h> header file. */
 #undef HAVE_ASM_SIGCONTEXT_H
 
@@ -648,6 +645,9 @@
    0 if you don't. */
 #undef HAVE_DECL_VM_VFS_CACHE_PRESSURE
 
+/* Define to 1 if you have the <demangle.h> header file. */
+#undef HAVE_DEMANGLE_H
+
 /* Define to 1 if the system provides dladdr */
 #undef HAVE_DLADDR
 
@@ -687,12 +687,21 @@
 /* Define to 1 if you have the <gnu/stubs-x32.h> header file. */
 #undef HAVE_GNU_STUBS_X32_H
 
+/* Define to 1 if you have the <iconv.h> header file. */
+#undef HAVE_ICONV_H
+
+/* Define to 1 if you have the `iconv_open' function. */
+#undef HAVE_ICONV_OPEN
+
 /* Define to 1 if you have the `if_indextoname' function. */
 #undef HAVE_IF_INDEXTONAME
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if you have the <libiberty/demangle.h> header file. */
+#undef HAVE_LIBIBERTY_DEMANGLE_H
+
 /* Define to 1 if you have the <libunwind-ptrace.h> header file. */
 #undef HAVE_LIBUNWIND_PTRACE_H
 
@@ -747,6 +756,12 @@
 /* Define to 1 if you have the <linux/kcmp.h> header file. */
 #undef HAVE_LINUX_KCMP_H
 
+/* Define to 1 if you have the <linux/kvm.h> header file. */
+#undef HAVE_LINUX_KVM_H
+
+/* Define to 1 if you have the <linux/memfd.h> header file. */
+#undef HAVE_LINUX_MEMFD_H
+
 /* Define to 1 if you have the <linux/mmtimer.h> header file. */
 #undef HAVE_LINUX_MMTIMER_H
 
@@ -843,7 +858,7 @@
 /* Define to 1 if you have the <linux/utsname.h> header file. */
 #undef HAVE_LINUX_UTSNAME_H
 
-/* Define to 1 if you have CFLAG mpers support */
+/* Define to 1 if you have mpers_name mpers support */
 #undef HAVE_M32_MPERS
 
 /* Define to 1 if MPERS_NAME has the type 'struct stat'. */
@@ -865,7 +880,7 @@
 /* Define to 1 if you have the <mqueue.h> header file. */
 #undef HAVE_MQUEUE_H
 
-/* Define to 1 if you have CFLAG mpers support */
+/* Define to 1 if you have mpers_name mpers support */
 #undef HAVE_MX32_MPERS
 
 /* Define to 1 if MPERS_NAME has the type 'struct stat'. */
@@ -896,6 +911,9 @@
 /* Define to 1 if you have the `open64' function. */
 #undef HAVE_OPEN64
 
+/* Define to 1 if you have the <paths.h> header file. */
+#undef HAVE_PATHS_H
+
 /* Define to 1 if you have the `prctl' function. */
 #undef HAVE_PRCTL
 
@@ -1050,9 +1068,22 @@
 /* Define to 1 if the system has the type `struct keyctl_kdf_params'. */
 #undef HAVE_STRUCT_KEYCTL_KDF_PARAMS
 
+/* Define to 1 if the system has the type `struct kvm_regs'. */
+#undef HAVE_STRUCT_KVM_REGS
+
+/* Define to 1 if the system has the type `struct kvm_sregs'. */
+#undef HAVE_STRUCT_KVM_SREGS
+
+/* Define to 1 if the system has the type `struct
+   kvm_userspace_memory_region'. */
+#undef HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION
+
 /* Define to 1 if the system has the type `struct mmsghdr'. */
 #undef HAVE_STRUCT_MMSGHDR
 
+/* Define to 1 if the system has the type `struct mtd_write_req'. */
+#undef HAVE_STRUCT_MTD_WRITE_REQ
+
 /* Define to 1 if the system has the type `struct ndt_config'. */
 #undef HAVE_STRUCT_NDT_CONFIG
 
@@ -1107,6 +1138,9 @@
 /* Define to 1 if `mmap_data' is a member of `struct perf_event_attr'. */
 #undef HAVE_STRUCT_PERF_EVENT_ATTR_MMAP_DATA
 
+/* Define to 1 if `namespaces' is a member of `struct perf_event_attr'. */
+#undef HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES
+
 /* Define to 1 if `precise_ip' is a member of `struct perf_event_attr'. */
 #undef HAVE_STRUCT_PERF_EVENT_ATTR_PRECISE_IP
 
@@ -1135,6 +1169,9 @@
 /* Define to 1 if `write_backward' is a member of `struct perf_event_attr'. */
 #undef HAVE_STRUCT_PERF_EVENT_ATTR_WRITE_BACKWARD
 
+/* Define to 1 if the system has the type `struct ptp_sys_offset'. */
+#undef HAVE_STRUCT_PTP_SYS_OFFSET
+
 /* Define to 1 if the system has the type `struct ptrace_peeksiginfo_args'. */
 #undef HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS
 
@@ -1204,9 +1241,15 @@
 /* Define to 1 if `tai' is a member of `struct timex'. */
 #undef HAVE_STRUCT_TIMEX_TAI
 
+/* Define to 1 if `max_beb_per1024' is a member of `struct ubi_attach_req'. */
+#undef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024
+
 /* Define to 1 if the system has the type `struct user_desc'. */
 #undef HAVE_STRUCT_USER_DESC
 
+/* Define to 1 if `lm' is a member of `struct user_desc'. */
+#undef HAVE_STRUCT_USER_DESC_LM
+
 /* Define to 1 if `domainname' is a member of `struct utsname'. */
 #undef HAVE_STRUCT_UTSNAME_DOMAINNAME
 
@@ -1270,21 +1313,30 @@
 /* Define to 1 if typeof works with your compiler. */
 #undef HAVE_TYPEOF
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `attach_flags' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `bpf_fd' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_BPF_FD
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `flags' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_FLAGS
 
-/* Define to 1 if attr_text initialization works */
-#undef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+/* Define to 1 if `info.info' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_INFO_INFO
 
-/* Define to 1 if attr_text initialization works */
+/* Define to 1 if `next_id' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_NEXT_ID
+
+/* Define to 1 if `numa_node' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_NUMA_NODE
+
+/* Define to 1 if `prog_flags' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_PROG_FLAGS
 
+/* Define to 1 if `test.duration' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_TEST_DURATION
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
@@ -1423,6 +1475,9 @@
 /* Define for the Tile architecture */
 #undef TILE
 
+/* Do demangling symbols in stack trace */
+#undef USE_DEMANGLE
+
 /* Compile stack tracing functionality */
 #undef USE_LIBUNWIND
 
diff --git a/configure b/configure
index c971736..42f5130 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for strace 4.20.
+# Generated by GNU Autoconf 2.69 for strace 4.21.
 #
 # Report bugs to <strace-devel@lists.sourceforge.net>.
 #
@@ -11,7 +11,7 @@
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 #
-# Copyright (c) 1999-2017 The strace developers.
+# Copyright (c) 1999-2018 The strace developers.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -582,8 +582,8 @@
 # Identity of this package.
 PACKAGE_NAME='strace'
 PACKAGE_TARNAME='strace'
-PACKAGE_VERSION='4.20'
-PACKAGE_STRING='strace 4.20'
+PACKAGE_VERSION='4.21'
+PACKAGE_STRING='strace 4.21'
 PACKAGE_BUGREPORT='strace-devel@lists.sourceforge.net'
 PACKAGE_URL='https://strace.io'
 
@@ -647,14 +647,25 @@
 HAVE_M32_MPERS_TRUE
 HAVE_M32_RUNTIME_FALSE
 HAVE_M32_RUNTIME_TRUE
+USE_DEMANGLE_FALSE
+USE_DEMANGLE_TRUE
+libiberty_CPPFLAGS
+libiberty_LDFLAGS
+libiberty_LIBS
 USE_LIBUNWIND_FALSE
 USE_LIBUNWIND_TRUE
 libunwind_CPPFLAGS
 libunwind_LDFLAGS
 libunwind_LIBS
+READELF
 PERL
 dl_LIBS
+SIZEOF_KERNEL_LONG_T
+SIZEOF_LONG
 MIPS_ABI
+arch_native
+cc_flags_mx32
+cc_flags_m32
 arch_mx32
 arch_m32
 arch
@@ -793,6 +804,8 @@
 enable_code_coverage
 enable_arm_oabi
 with_libunwind
+with_libiberty
+enable_mpers
 enable_valgrind
 enable_valgrind_memcheck
 enable_valgrind_helgrind
@@ -1348,7 +1361,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures strace 4.20 to adapt to many kinds of systems.
+\`configure' configures strace 4.21 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1418,7 +1431,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of strace 4.20:";;
+     short | recursive ) echo "Configuration of strace 4.21:";;
    esac
   cat <<\_ACEOF
 
@@ -1438,6 +1451,11 @@
   --enable-gcc-Werror     turn on gcc's -Werror option
   --enable-code-coverage  Whether to enable code coverage support
   --enable-arm-oabi       enable OABI support on ARM EABI
+  --enable-mpers=yes|no|check|m32|mx32
+                          whether to enable multiple personalities support
+                          required for proper decoding of structures used by
+                          tracees with personalities that differ from the
+                          personality of strace, default is yes.
   --enable-valgrind       Whether to enable Valgrind on the unit tests
   --disable-valgrind-memcheck
                           Whether to skip memcheck during the Valgrind tests
@@ -1452,6 +1470,7 @@
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-gcov=GCOV        use given GCOV for coverage (GCOV=gcov).
   --with-libunwind        use libunwind to implement stack tracing support
+  --with-libiberty        use libiberty to demangle symbols in stack trace
 
 Some influential environment variables:
   CC          C compiler command
@@ -1530,14 +1549,14 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-strace configure 4.20
+strace configure 4.21
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-Copyright (c) 1999-2017 The strace developers.
+Copyright (c) 1999-2018 The strace developers.
 _ACEOF
   exit
 fi
@@ -2270,7 +2289,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by strace $as_me 4.20, which was
+It was created by strace $as_me 4.21, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3141,7 +3160,7 @@
 
 # Define the identity of the package.
  PACKAGE='strace'
- VERSION='4.20'
+ VERSION='4.21'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4372,6 +4391,298 @@
 fi
 
 
+   case $ac_cv_prog_cc_stdc in #(
+  no) :
+    ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+	{
+	case 's': // string
+	  str = va_arg (args_copy, const char *);
+	  break;
+	case 'd': // int
+	  number = va_arg (args_copy, int);
+	  break;
+	case 'f': // float
+	  fnumber = va_arg (args_copy, double);
+	  break;
+	default:
+	  break;
+	}
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+	  || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+  ac_cv_prog_cc_stdc=no
+fi
+
+fi
+ ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+  if ${ac_cv_prog_cc_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+
+  case $ac_cv_prog_cc_stdc in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;; #(
+  '') :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -8510,28 +8821,67 @@
 
 
 
-$as_echo "#define COPYRIGHT_YEAR \"2017\"" >>confdefs.h
+$as_echo "#define COPYRIGHT_YEAR \"2018\"" >>confdefs.h
 
-COPYRIGHT_YEAR=2017
+COPYRIGHT_YEAR=2018
 
 
 
-$as_echo "#define MANPAGE_DATE \"2017-08-28\"" >>confdefs.h
+$as_echo "#define MANPAGE_DATE \"2018-02-11\"" >>confdefs.h
 
-MANPAGE_DATE=2017-08-28
+MANPAGE_DATE=2018-02-11
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported architecture" >&5
 $as_echo_n "checking for supported architecture... " >&6; }
 arch_m32=
 arch_mx32=
+cc_flags_m32=-m32
+cc_flags_mx32=-mx32
 case "$host_cpu" in
+aarch64*)
+	arch=aarch64
+	arch_m32=arm
+
+$as_echo "#define AARCH64 1" >>confdefs.h
+
+	;;
+alpha*)
+	arch=alpha
+
+$as_echo "#define ALPHA 1" >>confdefs.h
+
+	;;
+arc*)
+	arch=arc
+
+$as_echo "#define ARC 1" >>confdefs.h
+
+	;;
+arm*)
+	arch=arm
+
+$as_echo "#define ARM 1" >>confdefs.h
+
+	;;
+avr32*)
+	arch=avr32
+
+$as_echo "#define AVR32 1" >>confdefs.h
+
+	;;
 bfin)
 	arch=bfin
 
 $as_echo "#define BFIN 1" >>confdefs.h
 
 	;;
+hppa*|parisc*)
+	arch=hppa
+
+$as_echo "#define HPPA 1" >>confdefs.h
+
+	;;
 i[3456]86|pentium)
 	arch=i386
 
@@ -8550,35 +8900,34 @@
 $as_echo "#define M68K 1" >>confdefs.h
 
 	;;
-sparc64*)
-	arch=sparc64
-	arch_m32=sparc
-
-$as_echo "#define SPARC64 1" >>confdefs.h
-
-	;;
-sparc*)
-	arch=sparc
-
-$as_echo "#define SPARC 1" >>confdefs.h
-
-	;;
 metag*)
 	arch=metag
 
 $as_echo "#define METAG 1" >>confdefs.h
 
 	;;
+microblaze*)
+	arch=microblaze
+
+$as_echo "#define MICROBLAZE 1" >>confdefs.h
+
+	;;
 mips*)
 	arch=mips
 
 $as_echo "#define MIPS 1" >>confdefs.h
 
 	;;
-alpha*)
-	arch=alpha
+nios2*)
+	arch=nios2
 
-$as_echo "#define ALPHA 1" >>confdefs.h
+$as_echo "#define NIOS2 1" >>confdefs.h
+
+	;;
+or1k*)
+	arch=or1k
+
+$as_echo "#define OR1K 1" >>confdefs.h
 
 	;;
 powerpc*)
@@ -8611,29 +8960,10 @@
 
 	fi
 	;;
-arm*)
-	arch=arm
+riscv*)
+	arch=riscv
 
-$as_echo "#define ARM 1" >>confdefs.h
-
-	;;
-aarch64*)
-	arch=aarch64
-	arch_m32=arm
-
-$as_echo "#define AARCH64 1" >>confdefs.h
-
-	;;
-avr32*)
-	arch=avr32
-
-$as_echo "#define AVR32 1" >>confdefs.h
-
-	;;
-arc*)
-	arch=arc
-
-$as_echo "#define ARC 1" >>confdefs.h
+$as_echo "#define RISCV 1" >>confdefs.h
 
 	;;
 s390)
@@ -8644,16 +8974,12 @@
 	;;
 s390x)
 	arch=s390x
+	arch_m32=s390
+	cc_flags_m32=-m31
 
 $as_echo "#define S390X 1" >>confdefs.h
 
 	;;
-hppa*|parisc*)
-	arch=hppa
-
-$as_echo "#define HPPA 1" >>confdefs.h
-
-	;;
 sh64*)
 	arch=sh64
 
@@ -8666,6 +8992,25 @@
 $as_echo "#define SH 1" >>confdefs.h
 
 	;;
+sparc64*)
+	arch=sparc64
+	arch_m32=sparc
+
+$as_echo "#define SPARC64 1" >>confdefs.h
+
+	;;
+sparc*)
+	arch=sparc
+
+$as_echo "#define SPARC 1" >>confdefs.h
+
+	;;
+tile*)
+	arch=tile
+
+$as_echo "#define TILE 1" >>confdefs.h
+
+	;;
 x86?64*)
 	arch_m32=i386
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8698,58 +9043,12 @@
 
 	fi
 	;;
-cris|crisv10)
-	arch=crisv10
-
-$as_echo "#define CRISV10 1" >>confdefs.h
-
-	;;
-crisv32)
-	arch=crisv32
-
-$as_echo "#define CRISV32 1" >>confdefs.h
-
-	;;
-tile*)
-	arch=tile
-
-$as_echo "#define TILE 1" >>confdefs.h
-
-	;;
-microblaze*)
-	arch=microblaze
-
-$as_echo "#define MICROBLAZE 1" >>confdefs.h
-
-	;;
-nios2*)
-	arch=nios2
-
-$as_echo "#define NIOS2 1" >>confdefs.h
-
-	;;
-
-or1k*)
-	arch=or1k
-
-$as_echo "#define OR1K 1" >>confdefs.h
-
-	;;
-
 xtensa*)
 	arch=xtensa
 
 $as_echo "#define XTENSA 1" >>confdefs.h
 
 	;;
-
-riscv*)
-	arch=riscv
-
-$as_echo "#define RISCV 1" >>confdefs.h
-
-	;;
-
 *)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: NO!" >&5
 $as_echo "NO!" >&6; }
@@ -8759,6 +9058,8 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $arch" >&5
 $as_echo "$arch" >&6; }
 
+arch_native=$arch
+
 test -n "$arch_m32" ||
 	arch_m32=$arch
 test -n "$arch_mx32" ||
@@ -8767,6 +9068,9 @@
 
 
 
+
+
+
 MIPS_ABI=
 if test "$arch" = mips; then
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _MIPS_SIM" >&5
@@ -8777,7 +9081,10 @@
   if ac_fn_c_compute_int "$LINENO" "_MIPS_SIM" "st_cv__MIPS_SIM"        ""; then :
 
 else
-  as_fn_error $? "_MIPS_SIM cannot be determined" "$LINENO" 5
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_MIPS_SIM cannot be determined
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 fi
@@ -9187,7 +9494,7 @@
 fi
 
 
-for ac_func in accept4 be64toh fallocate fanotify_mark fopen64 fork fputs_unlocked fstatat ftruncate futimens if_indextoname open64 prctl preadv process_vm_readv pwritev readahead signalfd stpcpy strerror strndup strsignal sync_file_range utimensat
+for ac_func in accept4 be64toh fallocate fanotify_mark fopen64 fork fputs_unlocked fstatat ftruncate futimens iconv_open if_indextoname open64 prctl preadv process_vm_readv pwritev readahead signalfd stpcpy strerror strndup strsignal sync_file_range utimensat
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -9288,6 +9595,16 @@
 #define HAVE_STRUCT_USER_DESC 1
 _ACEOF
 
+ac_fn_c_check_member "$LINENO" "struct user_desc" "lm" "ac_cv_member_struct_user_desc_lm" "#include <asm/ldt.h>
+"
+if test "x$ac_cv_member_struct_user_desc_lm" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_USER_DESC_LM 1
+_ACEOF
+
+
+fi
 
 fi
 
@@ -9646,6 +9963,16 @@
 
 
 fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "namespaces" "ac_cv_member_struct_perf_event_attr_namespaces" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_namespaces" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES 1
+_ACEOF
+
+
+fi
 ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "bp_type" "ac_cv_member_struct_perf_event_attr_bp_type" "#include <linux/perf_event.h>
 "
 if test "x$ac_cv_member_struct_perf_event_attr_bp_type" = xyes; then :
@@ -9738,7 +10065,7 @@
 fi
 
 
-for ac_header in asm/cachectl.h asm/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/reg.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h
+for ac_header in asm/cachectl.h asm/guarded_storage.h asm/sysmips.h bluetooth/bluetooth.h elf.h iconv.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/kvm.h linux/memfd.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h paths.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/reg.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -9859,215 +10186,86 @@
 #define HAVE_LINUX_BPF_H 1
 _ACEOF
 
+	ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_flags" "ac_cv_member_union_bpf_attr_attach_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_attach_flags" = xyes; then :
 
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether union bpf_attr.attach_flags initialization works" >&5
-$as_echo_n "checking whether union bpf_attr.attach_flags initialization works... " >&6; }
-if ${st_cv_member_union_bpf_attr_attach_flags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <linux/bpf.h>
-int
-main ()
-{
-union bpf_attr a = { .attach_flags = 0 };
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_ATTACH_FLAGS 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_member_union_bpf_attr_attach_flags=yes
-else
-  st_cv_member_union_bpf_attr_attach_flags=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_member_union_bpf_attr_attach_flags" >&5
-$as_echo "$st_cv_member_union_bpf_attr_attach_flags" >&6; }
 
-if test $st_cv_member_union_bpf_attr_attach_flags = yes; then
-
-$as_echo "#define HAVE_UNION_BPF_ATTR_ATTACH_FLAGS 1" >>confdefs.h
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "bpf_fd" "ac_cv_member_union_bpf_attr_bpf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_bpf_fd" = xyes; then :
 
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether union bpf_attr.bpf_fd initialization works" >&5
-$as_echo_n "checking whether union bpf_attr.bpf_fd initialization works... " >&6; }
-if ${st_cv_member_union_bpf_attr_bpf_fd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <linux/bpf.h>
-int
-main ()
-{
-union bpf_attr a = { .bpf_fd = 0 };
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BPF_FD 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_member_union_bpf_attr_bpf_fd=yes
-else
-  st_cv_member_union_bpf_attr_bpf_fd=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_member_union_bpf_attr_bpf_fd" >&5
-$as_echo "$st_cv_member_union_bpf_attr_bpf_fd" >&6; }
 
-if test $st_cv_member_union_bpf_attr_bpf_fd = yes; then
-
-$as_echo "#define HAVE_UNION_BPF_ATTR_BPF_FD 1" >>confdefs.h
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "flags" "ac_cv_member_union_bpf_attr_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_flags" = xyes; then :
 
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether union bpf_attr.flags initialization works" >&5
-$as_echo_n "checking whether union bpf_attr.flags initialization works... " >&6; }
-if ${st_cv_member_union_bpf_attr_flags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <linux/bpf.h>
-int
-main ()
-{
-union bpf_attr a = { .flags = 0 };
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_FLAGS 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_member_union_bpf_attr_flags=yes
-else
-  st_cv_member_union_bpf_attr_flags=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_member_union_bpf_attr_flags" >&5
-$as_echo "$st_cv_member_union_bpf_attr_flags" >&6; }
 
-if test $st_cv_member_union_bpf_attr_flags = yes; then
-
-$as_echo "#define HAVE_UNION_BPF_ATTR_FLAGS 1" >>confdefs.h
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info" "ac_cv_member_union_bpf_attr_info_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_info" = xyes; then :
 
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether union bpf_attr.inner_map_fd initialization works" >&5
-$as_echo_n "checking whether union bpf_attr.inner_map_fd initialization works... " >&6; }
-if ${st_cv_member_union_bpf_attr_inner_map_fd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <linux/bpf.h>
-int
-main ()
-{
-union bpf_attr a = { .inner_map_fd = 0 };
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_INFO 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_member_union_bpf_attr_inner_map_fd=yes
-else
-  st_cv_member_union_bpf_attr_inner_map_fd=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_member_union_bpf_attr_inner_map_fd" >&5
-$as_echo "$st_cv_member_union_bpf_attr_inner_map_fd" >&6; }
 
-if test $st_cv_member_union_bpf_attr_inner_map_fd = yes; then
-
-$as_echo "#define HAVE_UNION_BPF_ATTR_INNER_MAP_FD 1" >>confdefs.h
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "next_id" "ac_cv_member_union_bpf_attr_next_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_next_id" = xyes; then :
 
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether union bpf_attr.prog_flags initialization works" >&5
-$as_echo_n "checking whether union bpf_attr.prog_flags initialization works... " >&6; }
-if ${st_cv_member_union_bpf_attr_prog_flags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <linux/bpf.h>
-int
-main ()
-{
-union bpf_attr a = { .prog_flags = 0 };
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_NEXT_ID 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_member_union_bpf_attr_prog_flags=yes
-else
-  st_cv_member_union_bpf_attr_prog_flags=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_member_union_bpf_attr_prog_flags" >&5
-$as_echo "$st_cv_member_union_bpf_attr_prog_flags" >&6; }
 
-if test $st_cv_member_union_bpf_attr_prog_flags = yes; then
-
-$as_echo "#define HAVE_UNION_BPF_ATTR_PROG_FLAGS 1" >>confdefs.h
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "numa_node" "ac_cv_member_union_bpf_attr_numa_node" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_numa_node" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_NUMA_NODE 1
+_ACEOF
 
 
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_flags" "ac_cv_member_union_bpf_attr_prog_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_FLAGS 1
+_ACEOF
 
 
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.duration" "ac_cv_member_union_bpf_attr_test_duration" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_duration" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_DURATION 1
+_ACEOF
+
+
+fi
 
 
 fi
@@ -10456,6 +10654,74 @@
 fi
 
 
+ac_fn_c_check_type "$LINENO" "struct mtd_write_req" "ac_cv_type_struct_mtd_write_req" "#include <mtd/mtd-abi.h>
+"
+if test "x$ac_cv_type_struct_mtd_write_req" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_MTD_WRITE_REQ 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct ubi_attach_req" "max_beb_per1024" "ac_cv_member_struct_ubi_attach_req_max_beb_per1024" "#include <mtd/ubi-user.h>
+"
+if test "x$ac_cv_member_struct_ubi_attach_req_max_beb_per1024" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct ptp_sys_offset" "ac_cv_type_struct_ptp_sys_offset" "#include <linux/ptp_clock.h>
+"
+if test "x$ac_cv_type_struct_ptp_sys_offset" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PTP_SYS_OFFSET 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct kvm_regs" "ac_cv_type_struct_kvm_regs" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_regs" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_REGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct kvm_sregs" "ac_cv_type_struct_kvm_sregs" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_sregs" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_SREGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct kvm_userspace_memory_region" "ac_cv_type_struct_kvm_userspace_memory_region" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_userspace_memory_region" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION 1
+_ACEOF
+
+
+fi
+
+
 for ac_header in linux/btrfs.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "linux/btrfs.h" "ac_cv_header_linux_btrfs_h" "$ac_includes_default"
@@ -12478,6 +12744,8 @@
 _ACEOF
 
 
+SIZEOF_LONG="$ac_cv_sizeof_long"
+
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -12579,6 +12847,8 @@
 _ACEOF
 
 
+SIZEOF_KERNEL_LONG_T="$ac_cv_sizeof_kernel_long_t"
+
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -12614,6 +12884,7 @@
 
 
 
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGRTMIN" >&5
 $as_echo_n "checking for SIGRTMIN... " >&6; }
 if ${st_cv_SIGRTMIN+:} false; then :
@@ -12807,6 +13078,99 @@
 
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args.
+set dummy ${ac_tool_prefix}readelf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_READELF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$READELF"; then
+  ac_cv_prog_READELF="$READELF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_READELF="${ac_tool_prefix}readelf"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+READELF=$ac_cv_prog_READELF
+if test -n "$READELF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_READELF"; then
+  ac_ct_READELF=$READELF
+  # Extract the first word of "readelf", so it can be a program name with args.
+set dummy readelf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_READELF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_READELF"; then
+  ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_READELF="readelf"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
+if test -n "$ac_ct_READELF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5
+$as_echo "$ac_ct_READELF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_READELF" = x; then
+    READELF=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    READELF=$ac_ct_READELF
+  fi
+else
+  READELF="$ac_cv_prog_READELF"
+fi
+
+
 libunwind_CPPFLAGS=
 libunwind_LDFLAGS=
 libunwind_LIBS=
@@ -13024,19 +13388,152 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_libunwind" >&5
 $as_echo "$use_libunwind" >&6; }
 
+libiberty_CPPFLAGS=
+libiberty_LDFLAGS=
+libiberty_LIBS=
+
+# Check whether --with-libiberty was given.
+if test "${with_libiberty+set}" = set; then :
+  withval=$with_libiberty; case "${withval}" in
+	     yes|no|check) ;;
+	     *) with_libiberty=yes
+		libiberty_CPPFLAGS="-I${withval}/include"
+		libiberty_LDFLAGS="-L${withval}/lib" ;;
+	     esac
+else
+  with_libiberty=check
+
+fi
+
+
+use_libiberty=no
+if test "x$use_libunwind" = xyes && test "x$with_libiberty" != xno; then :
+  saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS $libiberty_CPPFLAGS"
+       for ac_header in demangle.h libiberty/demangle.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ saved_LDFLAGS="$LDFLAGS"
+	  LDFLAGS="$LDFLAGS $libiberty_LDFLAGS"
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cplus_demangle in -liberty" >&5
+$as_echo_n "checking for cplus_demangle in -liberty... " >&6; }
+if ${ac_cv_lib_iberty_cplus_demangle+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-liberty  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cplus_demangle ();
+int
+main ()
+{
+return cplus_demangle ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_iberty_cplus_demangle=yes
+else
+  ac_cv_lib_iberty_cplus_demangle=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iberty_cplus_demangle" >&5
+$as_echo "$ac_cv_lib_iberty_cplus_demangle" >&6; }
+if test "x$ac_cv_lib_iberty_cplus_demangle" = xyes; then :
+  libiberty_LIBS="-liberty"
+	     use_libiberty=yes
+
+else
+  if test "x$with_libiberty" != xcheck; then
+	       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find cplus_demangle in libiberty
+See \`config.log' for more details" "$LINENO" 5; }
+	     fi
+
+
+fi
+
+	  LDFLAGS="$saved_LDFLAGS"
+
+else
+  if test "x$with_libiberty" != xcheck; then
+	      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find demangle.h
+See \`config.log' for more details" "$LINENO" 5; }
+	  fi
+
+
+fi
+
+done
+
+       CPPFLAGS="$saved_CPPFLAGS"
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable demangling symbols in stack trace" >&5
+$as_echo_n "checking whether to enable demangling symbols in stack trace... " >&6; }
+if test "x$use_libiberty" = xyes; then
+
+$as_echo "#define USE_DEMANGLE 1" >>confdefs.h
+
+
+
+
+fi
+ if test "x$use_libiberty" = xyes; then
+  USE_DEMANGLE_TRUE=
+  USE_DEMANGLE_FALSE='#'
+else
+  USE_DEMANGLE_TRUE='#'
+  USE_DEMANGLE_FALSE=
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_libiberty" >&5
+$as_echo "$use_libiberty" >&6; }
+
 if test "$arch" = mips && test "$no_create" != yes; then
 	mkdir -p linux/mips
 	if $srcdir/linux/mips/genstub.sh linux/mips; then
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Generated MIPS syscallent stubs" >&5
 $as_echo "Generated MIPS syscallent stubs" >&6; }
 	else
-		{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "Failed to generate syscallent stubs
-See \`config.log' for more details" "$LINENO" 5; }
+		as_fn_error $? "Failed to generate syscallent stubs" "$LINENO" 5
 	fi
 fi
 
+# Check whether --enable-mpers was given.
+if test "${enable_mpers+set}" = set; then :
+  enableval=$enable_mpers; case "$enableval" in
+		yes|no|check|m32|mx32) enable_mpers="$enableval" ;;
+		*) as_fn_error $? "bad value $enableval for enable-mpers option.
+				 Valid options are: yes, no, check, m32, mx32." "$LINENO" 5
+		;;
+	 esac
+else
+  enable_mpers=yes
+fi
+
 
 
 
@@ -13048,8 +13545,12 @@
 
 
 
+
 case "$arch" in
-	aarch64|powerpc64|sparc64|tile|x32|x86_64)
+	aarch64|powerpc64|riscv|s390x|sparc64|tile|x32|x86_64)
+	case "$enable_mpers" in
+	yes|check|m32)
+
 
 
 
@@ -13073,9 +13574,9 @@
 
 
 	saved_CFLAGS="$CFLAGS"
-	CFLAGS="$CFLAGS -m32 $IFLAG"
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -m32 compile support" >&5
-$as_echo_n "checking for -m32 compile support... " >&6; }
+	CFLAGS="$CFLAGS $cc_flags_m32 $IFLAG"
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for m32 personality compile support" >&5
+$as_echo_n "checking for m32 personality compile support... " >&6; }
 if ${st_cv_m32_cc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
@@ -13094,8 +13595,8 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_cc" >&5
 $as_echo "$st_cv_m32_cc" >&6; }
 	if test $st_cv_m32_cc = yes; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -m32 runtime support" >&5
-$as_echo_n "checking for -m32 runtime support... " >&6; }
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for m32 personality runtime support" >&5
+$as_echo_n "checking for m32 personality runtime support... " >&6; }
 if ${st_cv_m32_runtime+:} false; then :
   $as_echo_n "(cached) " >&6
 else
@@ -13119,13 +13620,14 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_runtime" >&5
 $as_echo "$st_cv_m32_runtime" >&6; }
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpers.sh -m32 works" >&5
-$as_echo_n "checking whether mpers.sh -m32 works... " >&6; }
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpers.sh m32 $cc_flags_m32 works" >&5
+$as_echo_n "checking whether mpers.sh m32 $cc_flags_m32 works... " >&6; }
 if ${st_cv_m32_mpers+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
-			    $srcdir/mpers_test.sh m32; then
+  if READELF="$READELF" \
+			    CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
+			    $srcdir/mpers_test.sh m32 $cc_flags_m32; then
 				st_cv_m32_mpers=yes
 			 else
 				st_cv_m32_mpers=no
@@ -13479,7 +13981,27 @@
 	CFLAGS="$saved_CFLAGS"
 	;;
 
-	*)
+	*) # case "$enable_mpers"
+	st_cv_m32_runtime=no
+	st_cv_m32_mpers=no
+	;;
+	esac
+
+	test "$st_cv_m32_mpers" = yes ||
+		st_cv_m32_mpers=no
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable m32 personality support" >&5
+$as_echo_n "checking whether to enable m32 personality support... " >&6; }
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_mpers" >&5
+$as_echo "$st_cv_m32_mpers" >&6; }
+
+	case "$enable_mpers,$st_cv_m32_mpers" in
+	yes,no|m32,no)
+		as_fn_error $? "Cannot enable m32 personality support" "$LINENO" 5
+		;;
+	esac
+	;;
+
+	*) # case "$arch"
 	st_cv_m32_runtime=no
 	st_cv_m32_mpers=no
 	;;
@@ -13525,6 +14047,9 @@
 
 case "$arch" in
 	x86_64)
+	case "$enable_mpers" in
+	yes|check|mx32)
+
 
 
 
@@ -13548,9 +14073,9 @@
 
 
 	saved_CFLAGS="$CFLAGS"
-	CFLAGS="$CFLAGS -mx32 $IFLAG"
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mx32 compile support" >&5
-$as_echo_n "checking for -mx32 compile support... " >&6; }
+	CFLAGS="$CFLAGS $cc_flags_mx32 $IFLAG"
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mx32 personality compile support" >&5
+$as_echo_n "checking for mx32 personality compile support... " >&6; }
 if ${st_cv_mx32_cc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
@@ -13569,8 +14094,8 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_cc" >&5
 $as_echo "$st_cv_mx32_cc" >&6; }
 	if test $st_cv_mx32_cc = yes; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mx32 runtime support" >&5
-$as_echo_n "checking for -mx32 runtime support... " >&6; }
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mx32 personality runtime support" >&5
+$as_echo_n "checking for mx32 personality runtime support... " >&6; }
 if ${st_cv_mx32_runtime+:} false; then :
   $as_echo_n "(cached) " >&6
 else
@@ -13594,13 +14119,14 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_runtime" >&5
 $as_echo "$st_cv_mx32_runtime" >&6; }
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpers.sh -mx32 works" >&5
-$as_echo_n "checking whether mpers.sh -mx32 works... " >&6; }
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mpers.sh mx32 $cc_flags_mx32 works" >&5
+$as_echo_n "checking whether mpers.sh mx32 $cc_flags_mx32 works... " >&6; }
 if ${st_cv_mx32_mpers+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
-			    $srcdir/mpers_test.sh mx32; then
+  if READELF="$READELF" \
+			    CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
+			    $srcdir/mpers_test.sh mx32 $cc_flags_mx32; then
 				st_cv_mx32_mpers=yes
 			 else
 				st_cv_mx32_mpers=no
@@ -13954,7 +14480,27 @@
 	CFLAGS="$saved_CFLAGS"
 	;;
 
-	*)
+	*) # case "$enable_mpers"
+	st_cv_mx32_runtime=no
+	st_cv_mx32_mpers=no
+	;;
+	esac
+
+	test "$st_cv_mx32_mpers" = yes ||
+		st_cv_mx32_mpers=no
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable mx32 personality support" >&5
+$as_echo_n "checking whether to enable mx32 personality support... " >&6; }
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_mpers" >&5
+$as_echo "$st_cv_mx32_mpers" >&6; }
+
+	case "$enable_mpers,$st_cv_mx32_mpers" in
+	yes,no|mx32,no)
+		as_fn_error $? "Cannot enable mx32 personality support" "$LINENO" 5
+		;;
+	esac
+	;;
+
+	*) # case "$arch"
 	st_cv_mx32_runtime=no
 	st_cv_mx32_mpers=no
 	;;
@@ -14399,7 +14945,7 @@
 
 
 
-ac_config_files="$ac_config_files Makefile tests/Makefile tests-m32/Makefile tests-mx32/Makefile strace.1 strace.spec debian/changelog"
+ac_config_files="$ac_config_files Makefile tests/Makefile tests-m32/Makefile tests-mx32/Makefile strace.1 strace-log-merge.1 strace.spec debian/changelog"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -14551,6 +15097,10 @@
   as_fn_error $? "conditional \"USE_LIBUNWIND\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_DEMANGLE_TRUE}" && test -z "${USE_DEMANGLE_FALSE}"; then
+  as_fn_error $? "conditional \"USE_DEMANGLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${HAVE_M32_RUNTIME_TRUE}" && test -z "${HAVE_M32_RUNTIME_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_M32_RUNTIME\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -14968,7 +15518,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by strace $as_me 4.20, which was
+This file was extended by strace $as_me 4.21, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15035,7 +15585,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-strace config.status 4.20
+strace config.status 4.21
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -15171,6 +15721,7 @@
     "tests-m32/Makefile") CONFIG_FILES="$CONFIG_FILES tests-m32/Makefile" ;;
     "tests-mx32/Makefile") CONFIG_FILES="$CONFIG_FILES tests-mx32/Makefile" ;;
     "strace.1") CONFIG_FILES="$CONFIG_FILES strace.1" ;;
+    "strace-log-merge.1") CONFIG_FILES="$CONFIG_FILES strace-log-merge.1" ;;
     "strace.spec") CONFIG_FILES="$CONFIG_FILES strace.spec" ;;
     "debian/changelog") CONFIG_FILES="$CONFIG_FILES debian/changelog" ;;
 
diff --git a/configure.ac b/configure.ac
index 29285db..86b8a8e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 # Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2002-2017 The strace developers.
+# Copyright (c) 2002-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -52,6 +52,7 @@
 AC_SUBST(DEB_CHANGELOGTIME)
 
 AC_PROG_CC
+AC_PROG_CC_STDC
 AC_PROG_CPP
 st_WARN_CFLAGS
 AX_PROG_CC_FOR_BUILD
@@ -70,11 +71,38 @@
 AC_MSG_CHECKING([for supported architecture])
 arch_m32=
 arch_mx32=
+cc_flags_m32=-m32
+cc_flags_mx32=-mx32
 case "$host_cpu" in
+aarch64*)
+	arch=aarch64
+	arch_m32=arm
+	AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.])
+	;;
+alpha*)
+	arch=alpha
+	AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.])
+	;;
+arc*)
+	arch=arc
+	AC_DEFINE([ARC], 1, [Define for the ARC architecture.])
+	;;
+arm*)
+	arch=arm
+	AC_DEFINE([ARM], 1, [Define for the ARM architecture.])
+	;;
+avr32*)
+	arch=avr32
+	AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.])
+	;;
 bfin)
 	arch=bfin
 	AC_DEFINE([BFIN], 1, [Define for the Blackfin architecture.])
 	;;
+hppa*|parisc*)
+	arch=hppa
+	AC_DEFINE([HPPA], 1, [Define for the HPPA architecture.])
+	;;
 i[[3456]]86|pentium)
 	arch=i386
 	AC_DEFINE([I386], 1, [Define for the i386 architecture.])
@@ -87,26 +115,25 @@
 	arch=m68k
 	AC_DEFINE([M68K], 1, [Define for the m68k architecture.])
 	;;
-sparc64*)
-	arch=sparc64
-	arch_m32=sparc
-	AC_DEFINE([SPARC64], 1, [Define for the SPARC64 architecture.])
-	;;
-sparc*)
-	arch=sparc
-	AC_DEFINE([SPARC], 1, [Define for the SPARC architecture.])
-	;;
 metag*)
 	arch=metag
 	AC_DEFINE([METAG], 1, [Define for the Meta architecture.])
 	;;
+microblaze*)
+	arch=microblaze
+	AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.])
+	;;
 mips*)
 	arch=mips
 	AC_DEFINE([MIPS], 1, [Define for the MIPS architecture.])
 	;;
-alpha*)
-	arch=alpha
-	AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.])
+nios2*)
+	arch=nios2
+	AC_DEFINE([NIOS2], 1, [Define for the Nios-II architecture.])
+	;;
+or1k*)
+	arch=or1k
+	AC_DEFINE([OR1K], 1, [Define for the OpenRISC 1000 architecture.])
 	;;
 powerpc*)
 	AC_DEFINE([POWERPC], 1, [Define for the PowerPC architecture.])
@@ -119,22 +146,9 @@
 		AC_DEFINE([POWERPC64], 1, [Define for the PowerPC64 architecture.])
 	fi
 	;;
-arm*)
-	arch=arm
-	AC_DEFINE([ARM], 1, [Define for the ARM architecture.])
-	;;
-aarch64*)
-	arch=aarch64
-	arch_m32=arm
-	AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.])
-	;;
-avr32*)
-	arch=avr32
-	AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.])
-	;;
-arc*)
-	arch=arc
-	AC_DEFINE([ARC], 1, [Define for the ARC architecture.])
+riscv*)
+	arch=riscv
+	AC_DEFINE([RISCV], 1, [Define for the RISC-V architecture])
 	;;
 s390)
 	arch=s390
@@ -142,12 +156,10 @@
 	;;
 s390x)
 	arch=s390x
+	arch_m32=s390
+	cc_flags_m32=-m31
 	AC_DEFINE([S390X], 1, [Define for the S390x architecture.])
 	;;
-hppa*|parisc*)
-	arch=hppa
-	AC_DEFINE([HPPA], 1, [Define for the HPPA architecture.])
-	;;
 sh64*)
 	arch=sh64
 	AC_DEFINE([SH64], 1, [Define for the SH64 architecture.])
@@ -156,6 +168,19 @@
 	arch=sh
 	AC_DEFINE([SH], 1, [Define for the SH architecture.])
 	;;
+sparc64*)
+	arch=sparc64
+	arch_m32=sparc
+	AC_DEFINE([SPARC64], 1, [Define for the SPARC64 architecture.])
+	;;
+sparc*)
+	arch=sparc
+	AC_DEFINE([SPARC], 1, [Define for the SPARC architecture.])
+	;;
+tile*)
+	arch=tile
+	AC_DEFINE([TILE], 1, [Define for the Tile architecture])
+	;;
 x86?64*)
 	arch_m32=i386
 	AC_TRY_COMPILE(
@@ -169,42 +194,10 @@
 		AC_DEFINE([X32], 1, [Define for the 32bit AMD x86-64 architecture.])
 	fi
 	;;
-cris|crisv10)
-	arch=crisv10
-	AC_DEFINE([CRISV10], 1, [Define for the CRISv10 architecture.])
-	;;
-crisv32)
-	arch=crisv32
-	AC_DEFINE([CRISV32], 1, [Define for the CRISv32 architecture.])
-	;;
-tile*)
-	arch=tile
-	AC_DEFINE([TILE], 1, [Define for the Tile architecture])
-	;;
-microblaze*)
-	arch=microblaze
-	AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.])
-	;;
-nios2*)
-	arch=nios2
-	AC_DEFINE([NIOS2], 1, [Define for the Nios-II architecture.])
-	;;
-
-or1k*)
-	arch=or1k
-	AC_DEFINE([OR1K], 1, [Define for the OpenRISC 1000 architecture.])
-	;;
-
 xtensa*)
 	arch=xtensa
 	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])
@@ -212,6 +205,8 @@
 esac
 AC_MSG_RESULT($arch)
 
+arch_native=$arch
+
 test -n "$arch_m32" ||
 	arch_m32=$arch
 test -n "$arch_mx32" ||
@@ -219,12 +214,15 @@
 AC_SUBST(arch)
 AC_SUBST(arch_m32)
 AC_SUBST(arch_mx32)
+AC_SUBST(cc_flags_m32)
+AC_SUBST(cc_flags_mx32)
+AC_SUBST(arch_native)
 
 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], ,
-				       [AC_MSG_ERROR([_MIPS_SIM cannot be determined])])])
+				       [AC_MSG_FAILURE([_MIPS_SIM cannot be determined])])])
 
 	# requires GCC >= 3.4
 	AC_CACHE_CHECK([for MIPS ABI], [st_cv_mips_abi],
@@ -277,6 +275,7 @@
 	fstatat
 	ftruncate
 	futimens
+	iconv_open
 	if_indextoname
 	open64
 	prctl
@@ -304,7 +303,10 @@
 [#include <sys/types.h>
 #include <asm/stat.h>])
 
-AC_CHECK_TYPES([struct user_desc],,, [#include <asm/ldt.h>])
+AC_CHECK_TYPES([struct user_desc],
+	       [AC_CHECK_MEMBERS([struct user_desc.lm],,,
+				 [#include <asm/ldt.h>])],,
+	       [#include <asm/ldt.h>])
 
 AC_CHECK_MEMBERS([struct stat.st_mtime_nsec, struct stat64.st_mtime_nsec],,,
 [#include <sys/types.h>
@@ -364,6 +366,7 @@
 	struct perf_event_attr.use_clockid,
 	struct perf_event_attr.context_switch,
 	struct perf_event_attr.write_backward,
+	struct perf_event_attr.namespaces,
 	struct perf_event_attr.bp_type,
 	struct perf_event_attr.config1,
 	struct perf_event_attr.config2,
@@ -377,9 +380,11 @@
 
 AC_CHECK_HEADERS(m4_normalize([
 	asm/cachectl.h
+	asm/guarded_storage.h
 	asm/sysmips.h
 	bluetooth/bluetooth.h
 	elf.h
+	iconv.h
 	inttypes.h
 	linux/bsg.h
 	linux/cryptouser.h
@@ -395,6 +400,8 @@
 	linux/ip_vs.h
 	linux/ipc.h
 	linux/kcmp.h
+	linux/kvm.h
+	linux/memfd.h
 	linux/mmtimer.h
 	linux/msg.h
 	linux/neighbour.h
@@ -420,6 +427,7 @@
 	mqueue.h
 	netinet/sctp.h
 	netipx/ipx.h
+	paths.h
 	scsi/sg.h
 	stropts.h
 	sys/conf.h
@@ -458,11 +466,16 @@
 ])
 
 AC_CHECK_HEADERS([linux/bpf.h], [
-	st_CHECK_UNION_BPF_ATTR([attach_flags])
-	st_CHECK_UNION_BPF_ATTR([bpf_fd])
-	st_CHECK_UNION_BPF_ATTR([flags])
-	st_CHECK_UNION_BPF_ATTR([inner_map_fd])
-	st_CHECK_UNION_BPF_ATTR([prog_flags])
+	AC_CHECK_MEMBERS(m4_normalize([
+		union bpf_attr.attach_flags,
+		union bpf_attr.bpf_fd,
+		union bpf_attr.flags,
+		union bpf_attr.info.info,
+		union bpf_attr.next_id,
+		union bpf_attr.numa_node,
+		union bpf_attr.prog_flags,
+		union bpf_attr.test.duration
+	]),,, [#include <linux/bpf.h>])
 ])
 
 AC_CHECK_TYPES(m4_normalize([
@@ -534,6 +547,20 @@
 
 AC_CHECK_TYPES([struct blk_user_trace_setup],,, [#include <linux/blktrace_api.h>])
 
+AC_CHECK_TYPES([struct mtd_write_req],,, [#include <mtd/mtd-abi.h>])
+
+AC_CHECK_MEMBERS([struct ubi_attach_req.max_beb_per1024],,, [#include <mtd/ubi-user.h>])
+
+AC_CHECK_TYPES(m4_normalize([
+	struct ptp_sys_offset
+]),,, [#include <linux/ptp_clock.h>])
+
+AC_CHECK_TYPES(m4_normalize([
+	struct kvm_regs,
+	struct kvm_sregs,
+	struct kvm_userspace_memory_region
+]),,, [#include <linux/kvm.h>])
+
 AC_CHECK_HEADERS([linux/btrfs.h], [
 	AC_CHECK_MEMBERS(m4_normalize([
 		struct btrfs_ioctl_feature_flags.compat_flags,
@@ -728,11 +755,16 @@
 	fi)
 
 AC_CHECK_SIZEOF([long])
+SIZEOF_LONG="$ac_cv_sizeof_long"
+AC_SUBST(SIZEOF_LONG)
 AC_CHECK_SIZEOF([long long])
 AC_CHECK_SIZEOF([off_t],,[#include <sys/types.h>])
 AC_CHECK_SIZEOF([kernel_long_t],,[#include "$srcdir/kernel_types.h"])
+SIZEOF_KERNEL_LONG_T="$ac_cv_sizeof_kernel_long_t"
+AC_SUBST(SIZEOF_KERNEL_LONG_T)
 AC_CHECK_SIZEOF([struct i64_i32],,[struct i64_i32 {long long i64; int i32;};])
 
+
 AC_CACHE_CHECK([for SIGRTMIN], [st_cv_SIGRTMIN],
 	       [[st_cv_SIGRTMIN="$(echo SIGRTMIN |
 			$CPP $CPPFLAGS -P -imacros asm/signal.h - |
@@ -779,6 +811,8 @@
 
 AC_PATH_PROG([PERL], [perl])
 
+AC_CHECK_TOOL([READELF], [readelf])
+
 dnl stack trace with libunwind
 libunwind_CPPFLAGS=
 libunwind_LDFLAGS=
@@ -868,16 +902,84 @@
 AM_CONDITIONAL([USE_LIBUNWIND], [test "x$use_libunwind" = xyes])
 AC_MSG_RESULT([$use_libunwind])
 
+dnl demangling symbols in the stack trace
+libiberty_CPPFLAGS=
+libiberty_LDFLAGS=
+libiberty_LIBS=
+AC_ARG_WITH([libiberty],
+	    [AS_HELP_STRING([--with-libiberty],
+			    [use libiberty to demangle symbols in stack trace])],
+	    [case "${withval}" in
+	     yes|no|check) ;;
+	     *) with_libiberty=yes
+		libiberty_CPPFLAGS="-I${withval}/include"
+		libiberty_LDFLAGS="-L${withval}/lib" ;;
+	     esac],
+	    [with_libiberty=check]
+)
+
+use_libiberty=no
+AS_IF([test "x$use_libunwind" = xyes && test "x$with_libiberty" != xno],
+      [saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS $libiberty_CPPFLAGS"
+       AC_CHECK_HEADERS([demangle.h libiberty/demangle.h],
+	 [saved_LDFLAGS="$LDFLAGS"
+	  LDFLAGS="$LDFLAGS $libiberty_LDFLAGS"
+	  AC_CHECK_LIB([iberty],[cplus_demangle],
+	    [libiberty_LIBS="-liberty"
+	     use_libiberty=yes
+	    ],
+	    [if test "x$with_libiberty" != xcheck; then
+	       AC_MSG_FAILURE([failed to find cplus_demangle in libiberty])
+	     fi
+	    ]
+	  )
+	  LDFLAGS="$saved_LDFLAGS"
+	 ],
+	 [if test "x$with_libiberty" != xcheck; then
+	      AC_MSG_FAILURE([failed to find demangle.h])
+	  fi
+	 ]
+       )
+       CPPFLAGS="$saved_CPPFLAGS"
+      ]
+)
+
+dnl enable libiberty
+AC_MSG_CHECKING([whether to enable demangling symbols in stack trace])
+if test "x$use_libiberty" = xyes; then
+	AC_DEFINE([USE_DEMANGLE], 1, [Do demangling symbols in stack trace])
+	AC_SUBST(libiberty_LIBS)
+	AC_SUBST(libiberty_LDFLAGS)
+	AC_SUBST(libiberty_CPPFLAGS)
+fi
+AM_CONDITIONAL([USE_DEMANGLE], [test "x$use_libiberty" = xyes])
+AC_MSG_RESULT([$use_libiberty])
+
 if test "$arch" = mips && test "$no_create" != yes; then
 	mkdir -p linux/mips
 	if $srcdir/linux/mips/genstub.sh linux/mips; then
 		AC_MSG_RESULT([Generated MIPS syscallent stubs])
 	else
-		AC_MSG_FAILURE([Failed to generate syscallent stubs])
+		AC_MSG_ERROR([Failed to generate syscallent stubs])
 	fi
 fi
 
-st_MPERS([m32], [aarch64|powerpc64|sparc64|tile|x32|x86_64])
+AC_ARG_ENABLE([mpers],
+	[AS_HELP_STRING([--enable-mpers=yes|no|check|m32|mx32],
+		[whether to enable multiple personalities support required
+		 for proper decoding of structures used by tracees with
+		 personalities that differ from the personality of strace,
+		 default is yes.])],
+	[case "$enableval" in
+		yes|no|check|m32|mx32) enable_mpers="$enableval" ;;
+		*) AC_MSG_ERROR([bad value $enableval for enable-mpers option.
+				 Valid options are: yes, no, check, m32, mx32.])
+		;;
+	 esac],
+	[enable_mpers=yes])
+
+st_MPERS([m32], [aarch64|powerpc64|riscv|s390x|sparc64|tile|x32|x86_64])
 st_MPERS([mx32], [x86_64])
 
 AX_VALGRIND_DFLT([sgcheck], [off])
@@ -888,6 +990,7 @@
 		 tests-m32/Makefile
 		 tests-mx32/Makefile
 		 strace.1
+		 strace-log-merge.1
 		 strace.spec
 		 debian/changelog])
 AC_OUTPUT
diff --git a/count.c b/count.c
index f5e4f12..2065e71 100644
--- a/count.c
+++ b/count.c
@@ -8,7 +8,7 @@
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * Copyright (c) 2004 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2006-2017 The strace developers.
+ * Copyright (c) 2006-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,7 +40,7 @@
 struct call_counts {
 	/* time may be total latency or system time */
 	struct timeval time;
-	int calls, errors;
+	unsigned int calls, errors;
 };
 
 static struct call_counts *countv[SUPPORTED_PERSONALITIES];
@@ -154,22 +154,24 @@
 static void
 call_summary_pers(FILE *outf)
 {
+	static const char dashes[]  = "----------------";
+	static const char header[]  = "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n";
+	static const char data[]    = "%6.2f %11.6f %11lu %9u %9.u %s\n";
+	static const char summary[] = "%6.6s %11.6f %11.11s %9u %9.u %s\n";
+
 	unsigned int i;
-	int     call_cum, error_cum;
+	unsigned int call_cum, error_cum;
 	struct timeval tv_cum, dtv;
 	double  float_tv_cum;
 	double  percent;
-	const char *dashes = "----------------";
-	char    error_str[sizeof(int)*3];
-	int    *sorted_count;
+	unsigned int *sorted_count;
 
-	fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n",
+	fprintf(outf, header,
 		"% time", "seconds", "usecs/call",
 		"calls", "errors", "syscall");
-	fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n",
-		dashes, dashes, dashes, dashes, dashes, dashes);
+	fprintf(outf, header, dashes, dashes, dashes, dashes, dashes, dashes);
 
-	sorted_count = xcalloc(sizeof(int), nsyscalls);
+	sorted_count = xcalloc(sizeof(sorted_count[0]), nsyscalls);
 	call_cum = error_cum = tv_cum.tv_sec = tv_cum.tv_usec = 0;
 	if (overhead.tv_sec == -1) {
 		tv_mul(&overhead, &shortest, 8);
@@ -188,39 +190,32 @@
 	float_tv_cum = tv_float(&tv_cum);
 	if (counts) {
 		if (sortfun)
-			qsort((void *) sorted_count, nsyscalls, sizeof(int), sortfun);
+			qsort((void *) sorted_count, nsyscalls,
+			      sizeof(sorted_count[0]), sortfun);
 		for (i = 0; i < nsyscalls; i++) {
 			double float_syscall_time;
-			int idx = sorted_count[i];
+			unsigned int idx = sorted_count[i];
 			struct call_counts *cc = &counts[idx];
 			if (cc->calls == 0)
 				continue;
 			tv_div(&dtv, &cc->time, cc->calls);
-			error_str[0] = '\0';
-			if (cc->errors)
-				sprintf(error_str, "%u", cc->errors);
 			float_syscall_time = tv_float(&cc->time);
 			percent = (100.0 * float_syscall_time);
 			if (percent != 0.0)
 				   percent /= float_tv_cum;
 			/* else: float_tv_cum can be 0.0 too and we get 0/0 = NAN */
-			fprintf(outf, "%6.2f %11.6f %11lu %9u %9.9s %s\n",
+			fprintf(outf, data,
 				percent, float_syscall_time,
 				(long) (1000000 * dtv.tv_sec + dtv.tv_usec),
-				cc->calls,
-				error_str, sysent[idx].sys_name);
+				cc->calls, cc->errors, sysent[idx].sys_name);
 		}
 	}
 	free(sorted_count);
 
-	fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n",
-		dashes, dashes, dashes, dashes, dashes, dashes);
-	error_str[0] = '\0';
-	if (error_cum)
-		sprintf(error_str, "%u", error_cum);
-	fprintf(outf, "%6.6s %11.6f %11.11s %9u %9.9s %s\n",
+	fprintf(outf, header, dashes, dashes, dashes, dashes, dashes, dashes);
+	fprintf(outf, summary,
 		"100.00", float_tv_cum, "",
-		call_cum, error_str, "total");
+		call_cum, error_cum, "total");
 }
 
 void
@@ -236,8 +231,8 @@
 			set_personality(i);
 		if (i)
 			fprintf(outf,
-				"System call usage summary for %d bit mode:\n",
-				current_wordsize * 8);
+				"System call usage summary for %s mode:\n",
+				personality_names[i]);
 		call_summary_pers(outf);
 	}
 
diff --git a/debian/changelog b/debian/changelog
index 2579044..19574cf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
-strace (4.20-1) experimental; urgency=low
+strace (4.21-1) experimental; urgency=low
 
-  * strace 4.20 snapshot.
+  * strace 4.21 snapshot.
 
- -- Strace <strace-devel@lists.sourceforge.net>  Mon, 13 Nov 2017 21:49:34 +0000
+ -- Strace <strace-devel@lists.sourceforge.net>  Tue, 13 Feb 2018 23:10:19 +0000
+
+strace (4.20-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 13 Nov 2017 20:21:22 +0000
 
 strace (4.19-1) unstable; urgency=medium
 
diff --git a/debian/changelog.in b/debian/changelog.in
index 16f34d8..02bf4b8 100644
--- a/debian/changelog.in
+++ b/debian/changelog.in
@@ -4,6 +4,12 @@
 
  -- Strace <@PACKAGE_BUGREPORT@>  @DEB_CHANGELOGTIME@
 
+strace (4.20-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 13 Nov 2017 20:21:22 +0000
+
 strace (4.19-1) unstable; urgency=medium
 
   * New upstream version.
diff --git a/debian/control b/debian/control
index 92cdc20..477b9d9 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@
 Maintainer: Steve McIntyre <93sam@debian.org>
 Section: utils
 Priority: optional
-Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc sparc64 x32], debhelper (>= 7.0.0), gawk
+Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc sparc64 x32], debhelper (>= 7.0.0), gawk, libunwind-dev [amd64], libiberty-dev [amd64]
 Standards-Version: 3.9.8
 Homepage: https://strace.io
 Vcs-Git: https://anonscm.debian.org/git/collab-maint/strace.git
diff --git a/debian/rules b/debian/rules
index d03cd5c..2ba864b 100755
--- a/debian/rules
+++ b/debian/rules
@@ -23,6 +23,8 @@
 DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
 
+extra_build_targets += build-udeb-stamp
+
 arch64_map = i386=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x
 ifneq (,$(filter $(DEB_HOST_ARCH)=%, $(arch64_map)))
   HOST64 = $(strip $(patsubst $(DEB_HOST_ARCH)=%, %, \
@@ -47,22 +49,28 @@
 %-stamp: %/Makefile
 	$(MAKE) -C $*
 ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
+	$*/strace -V
 	$(MAKE) -C $* check VERBOSE=1
 endif
 	touch $@
 
 build/Makefile:
 	mkdir -p $(@D)
-	cd $(@D); sh ../configure --prefix=/usr $(CONFIG_OPTS)
+	cd $(@D); sh ../configure --enable-mpers=check --prefix=/usr $(CONFIG_OPTS)
+
+build-udeb/Makefile:
+	mkdir -p $(@D)
+	cd $(@D); sh ../configure --enable-mpers=check --prefix=/usr \
+		--without-libunwind --without-libiberty $(CONFIG_OPTS)
 
 build64/Makefile:
 	mkdir -p $(@D)
-	cd $(@D); CC="$(CC64)" sh ../configure --prefix=/usr --build=$(DEB_BUILD_GNU_TYPE) --host=$(HOST64)
+	cd $(@D); CC="$(CC64)" sh ../configure --enable-mpers=check --prefix=/usr --build=$(DEB_BUILD_GNU_TYPE) --host=$(HOST64)
 
 clean:
 	dh_testdir
 	dh_testroot
-	rm -rf build build64 strace64.1 debian/strace64.substvars
+	rm -rf build build-udeb build64 strace64.1 debian/strace64.substvars
 	dh_clean
 
 binary: binary-indep binary-arch
diff --git a/debian/strace-udeb.install b/debian/strace-udeb.install
index 1f41928..d823419 100644
--- a/debian/strace-udeb.install
+++ b/debian/strace-udeb.install
@@ -1 +1 @@
-build/strace usr/bin
+build-udeb/strace usr/bin
diff --git a/debian/strace.install b/debian/strace.install
index 1f41928..30b0a6b 100644
--- a/debian/strace.install
+++ b/debian/strace.install
@@ -1 +1,2 @@
 build/strace usr/bin
+strace-log-merge usr/bin
diff --git a/debian/strace.manpages b/debian/strace.manpages
index 5e74dd7..d3b9448 100644
--- a/debian/strace.manpages
+++ b/debian/strace.manpages
@@ -1 +1,2 @@
 strace.1
+strace-log-merge.1
diff --git a/defs.h b/defs.h
index b1a6b95..de55d3b 100644
--- a/defs.h
+++ b/defs.h
@@ -2,7 +2,7 @@
  * 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) 2001-2017 The strace developers.
+ * Copyright (c) 2001-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -53,13 +53,13 @@
 #include <time.h>
 #include <sys/time.h>
 
+#include "arch_defs.h"
 #include "error_prints.h"
 #include "gcc_compat.h"
 #include "kernel_types.h"
 #include "macros.h"
 #include "mpers_type.h"
 #include "string_to_uint.h"
-#include "supported_personalities.h"
 #include "sysent.h"
 #include "xmalloc.h"
 
@@ -149,10 +149,12 @@
 # define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
 # define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
 # define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
+# define HAVE_PERSONALITY_1_MPERS 1
 #else
 # define PERSONALITY1_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
 # define PERSONALITY1_INCLUDE_PRINTERS_DEFS "native_printer_defs.h"
 # define PERSONALITY1_INCLUDE_FUNCS "empty.h"
+# define HAVE_PERSONALITY_1_MPERS 0
 #endif
 
 #if SUPPORTED_PERSONALITIES > 2 && defined HAVE_MX32_MPERS
@@ -160,10 +162,12 @@
 # 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"
+# define HAVE_PERSONALITY_2_MPERS 1
 #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"
+# define HAVE_PERSONALITY_2_MPERS 0
 #endif
 
 typedef struct ioctlent {
@@ -177,7 +181,7 @@
 struct inject_data {
 	uint16_t flags;
 	uint16_t signo;
-	int rval;
+	kernel_long_t rval;
 };
 
 struct inject_opts {
@@ -244,6 +248,10 @@
 #define TCB_TAMPERED	0x40	/* A syscall has been tampered with */
 #define TCB_HIDE_LOG	0x80	/* We should hide everything (until execve) */
 #define TCB_SKIP_DETACH_ON_FIRST_EXEC	0x100	/* -b execve should skip detach on first execve */
+#define TCB_GRABBED	0x200	/* We grab the process and can catch it
+				 * in the middle of a syscall */
+#define TCB_RECOVERING	0x400	/* We try to recover after detecting incorrect
+				 * syscall entering/exiting state */
 
 /* qualifier flags */
 #define QUAL_TRACE	0x001	/* this system call should be traced */
@@ -264,6 +272,8 @@
 #define inject(tcp)	((tcp)->qual_flg & QUAL_INJECT)
 #define filtered(tcp)	((tcp)->flags & TCB_FILTERED)
 #define hide_log(tcp)	((tcp)->flags & TCB_HIDE_LOG)
+#define syscall_tampered(tcp)	((tcp)->flags & TCB_TAMPERED)
+#define recovering(tcp)	((tcp)->flags & TCB_RECOVERING)
 
 #include "xlat.h"
 
@@ -309,6 +319,10 @@
 #define RVAL_DECODED	0100	/* syscall decoding finished */
 #define RVAL_IOCTL_DECODED 0200	/* ioctl sub-parser successfully decoded
 				   the argument */
+#define RVAL_PRINT_ERR_VAL 0400 /* Print decoded error code along with
+				   syscall return value.  Needed for modify_ldt
+				   that for some reason decides to return
+				   an error with higher bits set to 0.  */
 
 #define IOCTL_NUMBER_UNKNOWN 0
 #define IOCTL_NUMBER_HANDLED 1
@@ -316,22 +330,6 @@
 
 #define indirect_ipccall(tcp) (tcp->s_ent->sys_flags & TRACE_INDIRECT_SUBCALL)
 
-#if defined(ARM) || defined(AARCH64) \
- || defined(I386) || defined(X32) || defined(X86_64) \
- || defined(IA64) \
- || defined(BFIN) \
- || defined(M68K) \
- || defined(MICROBLAZE) \
- || defined(RISCV) \
- || defined(S390) \
- || defined(SH) || defined(SH64) \
- || defined(SPARC) || defined(SPARC64) \
- /**/
-# define NEED_UID16_PARSERS 1
-#else
-# define NEED_UID16_PARSERS 0
-#endif
-
 enum sock_proto {
 	SOCK_PROTO_UNKNOWN,
 	SOCK_PROTO_UNIX,
@@ -355,7 +353,6 @@
 	CFLAG_BOTH
 } cflag_t;
 extern cflag_t cflag;
-extern bool debug_flag;
 extern bool Tflag;
 extern bool iflag;
 extern bool count_wallclock;
@@ -365,7 +362,8 @@
 /* are we filtering traces based on paths? */
 extern struct path_set {
 	const char **paths_selected;
-	unsigned int num_selected;
+	size_t num_selected;
+	size_t size;
 } global_path_set;
 #define tracing_paths (global_path_set.num_selected != 0)
 extern unsigned xflag;
@@ -380,7 +378,7 @@
 #undef KERNEL_VERSION
 #define KERNEL_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c))
 
-extern int read_int_from_file(const char *, int *);
+extern int read_int_from_file(struct tcb *, const char *, int *);
 
 extern void set_sortby(const char *);
 extern void set_overhead(int);
@@ -397,18 +395,37 @@
 extern void count_syscall(struct tcb *, const struct timeval *);
 extern void call_summary(FILE *);
 
-extern void clear_regs(void);
+extern void clear_regs(struct tcb *tcp);
 extern int get_scno(struct tcb *);
 extern kernel_ulong_t get_rt_sigframe_addr(struct tcb *);
 
 /**
- * Convert syscall number to syscall name.
+ * Convert a (shuffled) syscall number to the corresponding syscall name.
  *
  * @param scno Syscall number.
  * @return     String literal corresponding to the syscall number in case latter
  *             is valid; NULL otherwise.
  */
 extern const char *syscall_name(kernel_ulong_t scno);
+/**
+ * Convert a syscall name to the corresponding (shuffled) syscall number.
+ *
+ * @param s     Syscall name.
+ * @param p     Personality.
+ * @param start From which position in syscall entry table resume the search.
+ * @return      Shuffled syscall number (ready to use against sysent_vec)
+ *              if syscall name is found; -1 otherwise.
+ */
+extern kernel_long_t scno_by_name(const char *s, unsigned p,
+				  kernel_long_t start);
+/**
+ * Shuffle syscall numbers so that we don't have huge gaps in syscall table.
+ * The shuffling should be an involution: shuffle_scno(shuffle_scno(n)) == n.
+ *
+ * @param scno Raw or shuffled syscall number.
+ * @return     Shuffled or raw syscall number, respectively.
+ */
+extern kernel_ulong_t shuffle_scno(kernel_ulong_t scno);
 extern const char *err_name(unsigned long err);
 
 extern bool is_erestart(struct tcb *);
@@ -448,8 +465,8 @@
 extern int
 umovestr(struct tcb *, kernel_ulong_t addr, unsigned int len, char *laddr);
 
-extern int upeek(int pid, unsigned long, kernel_ulong_t *);
-extern int upoke(int pid, unsigned long, kernel_ulong_t);
+extern int upeek(struct tcb *tcp, unsigned long, kernel_ulong_t *);
+extern int upoke(struct tcb *tcp, unsigned long, kernel_ulong_t);
 
 extern bool
 print_array(struct tcb *,
@@ -467,12 +484,8 @@
 				     void *opaque_data),
 	    void *opaque_data);
 
-#if defined ALPHA || defined IA64 || defined MIPS \
- || defined SH || defined SPARC || defined SPARC64
-# define HAVE_GETRVAL2
+#if HAVE_ARCH_GETRVAL2
 extern long getrval2(struct tcb *);
-#else
-# undef HAVE_GETRVAL2
 #endif
 
 extern const char *signame(const int);
@@ -495,7 +508,7 @@
 const struct xlat *dyxlat_get(const struct dyxlat *);
 void dyxlat_add_pair(struct dyxlat *, uint64_t val, const char *str, size_t len);
 
-const struct xlat *genl_families_xlat(void);
+const struct xlat *genl_families_xlat(struct tcb *tcp);
 
 extern unsigned long get_pagesize(void);
 extern int next_set_bit(const void *bit_array, unsigned cur_bit, unsigned size_bits);
@@ -518,6 +531,7 @@
 #define QUOTE_OMIT_LEADING_TRAILING_QUOTES	0x02
 #define QUOTE_OMIT_TRAILING_0			0x08
 #define QUOTE_FORCE_HEX				0x10
+#define QUOTE_EMIT_COMMENT			0x20
 
 extern int string_quote(const char *, char *, unsigned int, unsigned int);
 extern int print_quoted_string(const char *, unsigned int, unsigned int);
@@ -544,6 +558,8 @@
 	uint64_t val, const char *dflt);
 #define printxval_search(xlat__, val__, dflt__) \
 	printxval_searchn(xlat__, ARRAY_SIZE(xlat__), val__, dflt__)
+extern int sprintxval(char *buf, size_t size, const struct xlat *,
+	unsigned int val, const char *dflt);
 extern int printargs(struct tcb *);
 extern int printargs_u(struct tcb *);
 extern int printargs_d(struct tcb *);
@@ -561,6 +577,9 @@
 extern void print_dev_t(unsigned long long dev);
 extern void print_abnormal_hi(kernel_ulong_t);
 
+extern kernel_ulong_t *
+fetch_indirect_syscall_args(struct tcb *, kernel_ulong_t addr, unsigned int n_args);
+
 extern void
 dumpiov_in_msghdr(struct tcb *, kernel_ulong_t addr, kernel_ulong_t data_size);
 
@@ -573,14 +592,14 @@
 extern void
 dumpstr(struct tcb *, kernel_ulong_t addr, int len);
 
-extern void
+extern int
 printstr_ex(struct tcb *, kernel_ulong_t addr, kernel_ulong_t len,
 	    unsigned int user_style);
 
-extern void
+extern int
 printpathn(struct tcb *, kernel_ulong_t addr, unsigned int n);
 
-extern void
+extern int
 printpath(struct tcb *, kernel_ulong_t addr);
 
 #define TIMESPEC_TEXT_BUFSIZE \
@@ -658,6 +677,7 @@
 DECL_IOCTL(dm);
 DECL_IOCTL(file);
 DECL_IOCTL(fs_x);
+DECL_IOCTL(kvm);
 DECL_IOCTL(nsfs);
 DECL_IOCTL(ptp);
 DECL_IOCTL(scsi);
@@ -701,16 +721,16 @@
 extern void unwind_capture_stacktrace(struct tcb *);
 #endif
 
-static inline void
+static inline int
 printstrn(struct tcb *tcp, kernel_ulong_t addr, kernel_ulong_t len)
 {
-	printstr_ex(tcp, addr, len, 0);
+	return printstr_ex(tcp, addr, len, 0);
 }
 
-static inline void
+static inline int
 printstr(struct tcb *tcp, kernel_ulong_t addr)
 {
-	printstr_ex(tcp, addr, -1, QUOTE_0_TERMINATED);
+	return printstr_ex(tcp, addr, -1, QUOTE_0_TERMINATED);
 }
 
 static inline int
@@ -758,7 +778,21 @@
 #endif
 
 #ifdef HAVE_STRUCT_USER_DESC
-extern void print_user_desc(struct tcb *, kernel_ulong_t addr);
+/**
+ * Filter what to print from the point of view of the get_thread_area syscall.
+ * Kernel copies only entry_number field at first and then tries to write the
+ * whole structure.
+ */
+enum user_desc_print_filter {
+	/* Print the "entering" part of struct user_desc - entry_number.  */
+	USER_DESC_ENTERING = 1,
+	/* Print the "exiting" part of the structure.  */
+	USER_DESC_EXITING  = 2,
+	USER_DESC_BOTH     = USER_DESC_ENTERING | USER_DESC_EXITING,
+};
+
+extern void print_user_desc(struct tcb *, kernel_ulong_t addr,
+			    enum user_desc_print_filter filter);
 #endif
 
 /* Strace log generation machinery.
@@ -788,7 +822,7 @@
 extern void tprints_comment(const char *str);
 
 #if SUPPORTED_PERSONALITIES > 1
-extern void set_personality(int personality);
+extern void set_personality(unsigned int personality);
 extern unsigned current_personality;
 #else
 # define set_personality(personality) ((void)0)
@@ -811,9 +845,12 @@
 # endif
 #endif
 
-#define ANY_WORDSIZE_LESS_THAN_KERNEL_LONG	\
-	(SIZEOF_KERNEL_LONG_T > 4		\
-	 && (SIZEOF_LONG < SIZEOF_KERNEL_LONG_T || !defined(current_wordsize)))
+#if SIZEOF_KERNEL_LONG_T > 4		\
+ && (SIZEOF_LONG < SIZEOF_KERNEL_LONG_T || !defined(current_wordsize))
+# define ANY_WORDSIZE_LESS_THAN_KERNEL_LONG	1
+#else
+# define ANY_WORDSIZE_LESS_THAN_KERNEL_LONG	0
+#endif
 
 #define DECL_PRINTNUM(name)						\
 extern bool								\
@@ -942,6 +979,8 @@
 extern const char *const signalent0[];
 extern const struct_ioctlent ioctlent0[];
 
+extern const char *const personality_names[];
+
 #if SUPPORTED_PERSONALITIES > 1
 extern const struct_sysent *sysent;
 extern const char *const *errnoent;
diff --git a/desc.c b/desc.c
index 52e58c8..f99d25c 100644
--- a/desc.c
+++ b/desc.c
@@ -3,7 +3,7 @@
  * 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) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,6 +30,7 @@
  */
 
 #include "defs.h"
+#include "xstring.h"
 
 SYS_FUNC(close)
 {
@@ -157,7 +158,9 @@
 				/* +2 chars needed at the end: ']',NUL */
 				if (outptr < end_outstr - (sizeof(", except [") + sizeof(int)*3 + 2)) {
 					if (first) {
-						outptr += sprintf(outptr, "%s%s [%u",
+						outptr = xappendstr(outstr,
+							outptr,
+							"%s%s [%u",
 							sep,
 							i == 0 ? "in" : i == 1 ? "out" : "except",
 							j
@@ -165,7 +168,9 @@
 						first = 0;
 						sep = ", ";
 					} else {
-						outptr += sprintf(outptr, " %u", j);
+						outptr = xappendstr(outstr,
+							outptr,
+							" %u", j);
 					}
 				}
 				if (--ready_fds == 0)
@@ -179,7 +184,8 @@
 		if (args[4]) {
 			const char *str = sprint_tv_ts(tcp, args[4]);
 			if (outptr + sizeof("left ") + strlen(sep) + strlen(str) < end_outstr) {
-				outptr += sprintf(outptr, "%sleft %s", sep, str);
+				outptr = xappendstr(outstr, outptr,
+						    "%sleft %s", sep, str);
 			}
 		}
 		*outptr = '\0';
@@ -190,29 +196,21 @@
 	return 0;
 }
 
+#if HAVE_ARCH_OLD_SELECT
 SYS_FUNC(oldselect)
 {
-	kernel_ulong_t select_args[5];
-	unsigned int oldselect_args[5];
+	kernel_ulong_t *args =
+		fetch_indirect_syscall_args(tcp, tcp->u_arg[0], 5);
 
-	if (sizeof(*select_args) == sizeof(*oldselect_args)) {
-		if (umove_or_printaddr(tcp, tcp->u_arg[0], &select_args)) {
-			return 0;
-		}
+	if (args) {
+		return decode_select(tcp, args, print_timeval, sprint_timeval);
 	} else {
-		unsigned int i;
-
-		if (umove_or_printaddr(tcp, tcp->u_arg[0], &oldselect_args)) {
-			return 0;
-		}
-
-		for (i = 0; i < 5; ++i) {
-			select_args[i] = oldselect_args[i];
-		}
+		if (entering(tcp))
+			printaddr(tcp->u_arg[0]);
+		return RVAL_DECODED;
 	}
-
-	return decode_select(tcp, select_args, print_timeval, sprint_timeval);
 }
+#endif /* HAVE_ARCH_OLD_SELECT */
 
 #ifdef ALPHA
 SYS_FUNC(osf_select)
diff --git a/dm.c b/dm.c
index 28863a8..32b3310 100644
--- a/dm.c
+++ b/dm.c
@@ -258,6 +258,7 @@
 	uint32_t offset = ioc->data_start;
 	uint32_t offset_end = 0;
 	uint32_t count;
+	int rc;
 
 	if (ioc->data_start == ioc->data_size)
 		return;
@@ -288,8 +289,36 @@
 
 		PRINT_FIELD_DEV("{", s, dev);
 		tprints(", name=");
-		printstr_ex(tcp, addr + offset_end, ioc->data_size - offset_end,
-			    QUOTE_0_TERMINATED);
+		rc = printstr_ex(tcp, addr + offset_end,
+				 ioc->data_size - offset_end,
+				 QUOTE_0_TERMINATED);
+
+		/*
+		 * In Linux v4.13-rc1~137^2~13 it has been decided to cram in
+		 * one more undocumented field after the device name, as if the
+		 * format decoding was not twisted enough already. So, we have
+		 * to check "next" now, and if it _looks like_ that there is
+		 * a space for one additional integer, let's print it. As if the
+		 * perversity with "name string going further than pointer to
+		 * the next one" wasn't enough. Moreover, the calculation was
+		 * broken for m32 on 64-bit kernels until v4.14-rc4~20^2~3, and
+		 * we have no ability to detect kernel bit-ness (on x86, at
+		 * least), so refrain from printing it for the DM versions below
+		 * 4.37 (the original version was also aligned differently than
+		 * now even on 64 bit).
+		 */
+
+		if ((rc > 0) && ioc->version[1] >= 37) {
+			kernel_ulong_t event_addr =
+				(addr + offset_end + rc + 7) & ~7;
+			uint32_t event_nr;
+
+			if ((event_addr + sizeof(event_nr)) <=
+			    (addr + offset + s.next) &&
+			    !umove(tcp, event_addr, &event_nr))
+				tprintf(", event_nr=%" PRIu32, event_nr);
+		}
+
 		tprints("}");
 
 		if (!s.next)
diff --git a/dyxlat.c b/dyxlat.c
index ef6bef4..55d2cbc 100644
--- a/dyxlat.c
+++ b/dyxlat.c
@@ -44,8 +44,8 @@
 	struct dyxlat *const dyxlat = xmalloc(sizeof(*dyxlat));
 
 	dyxlat->used = 1;
-	dyxlat->allocated = nmemb ? nmemb : 16;
-	dyxlat->xlat = xcalloc(dyxlat->allocated, sizeof(struct xlat));
+	dyxlat->allocated = nmemb;
+	dyxlat->xlat = xgrowarray(NULL, &dyxlat->allocated, sizeof(struct xlat));
 	MARK_END(dyxlat->xlat[0]);
 
 	return dyxlat;
@@ -90,11 +90,9 @@
 		}
 	}
 
-	if (dyxlat->used >= dyxlat->allocated) {
-		dyxlat->allocated *= 2;
-		dyxlat->xlat = xreallocarray(dyxlat->xlat, dyxlat->allocated,
-					     sizeof(struct xlat));
-	}
+	if (dyxlat->used >= dyxlat->allocated)
+		dyxlat->xlat = xgrowarray(dyxlat->xlat, &dyxlat->allocated,
+					  sizeof(struct xlat));
 
 	dyxlat->xlat[dyxlat->used - 1].val = val;
 	dyxlat->xlat[dyxlat->used - 1].str = xstrndup(str, len);
diff --git a/error_prints.h b/error_prints.h
index 7ddcb50..99c8038 100644
--- a/error_prints.h
+++ b/error_prints.h
@@ -33,8 +33,12 @@
 #ifndef STRACE_ERROR_PRINTS_H
 #define STRACE_ERROR_PRINTS_H
 
+#include <stdbool.h>
+
 #include "gcc_compat.h"
 
+extern bool debug_flag;
+
 void die(void) ATTRIBUTE_NORETURN;
 
 void error_msg(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, 2));
@@ -46,4 +50,30 @@
 void error_msg_and_die(const char *fmt, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+/* Wrappers for if (debug_flag) error_msg(...) */
+#define debug_msg(...) \
+	do { \
+		if (debug_flag) \
+			error_msg(__VA_ARGS__); \
+	} while (0)
+#define debug_perror_msg(...) \
+	do { \
+		if (debug_flag) \
+			perror_msg(__VA_ARGS__); \
+	} while (0)
+
+/* Simple wrappers for providing function name in error messages */
+#define error_func_msg(fmt_, ...) \
+	error_msg("%s: " fmt_,  __func__, ##__VA_ARGS__)
+#define perror_func_msg(fmt_, ...) \
+	perror_msg("%s: " fmt_, __func__, ##__VA_ARGS__)
+#define debug_func_msg(fmt_, ...) \
+	debug_msg("%s: " fmt_, __func__, ##__VA_ARGS__)
+#define debug_func_perror_msg(fmt_, ...) \
+	debug_perror_msg("%s: " fmt_, __func__, ##__VA_ARGS__)
+#define error_func_msg_and_die(fmt_, ...) \
+	error_msg_and_die("%s: " fmt_, __func__, ##__VA_ARGS__)
+#define perror_func_msg_and_die(fmt_, ...) \
+	perror_msg_and_die("%s: " fmt_, __func__, ##__VA_ARGS__)
+
 #endif /* !STRACE_ERROR_PRINTS_H */
diff --git a/linux/crisv10/arch_rt_sigframe.c b/fetch_indirect_syscall_args.c
similarity index 64%
copy from linux/crisv10/arch_rt_sigframe.c
copy to fetch_indirect_syscall_args.c
index f3d5f10..72ee7c7 100644
--- a/linux/crisv10/arch_rt_sigframe.c
+++ b/fetch_indirect_syscall_args.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,9 +25,31 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-FUNC_GET_RT_SIGFRAME_ADDR
-{
-	unsigned long addr;
+#include "defs.h"
 
-	return upeek(tcp->pid, 4 * PT_USP, &addr) ? 0 : addr;
+/*
+ * Fetch indirect syscall arguments that are provided as an array.
+ * Return a pointer to a static array of kernel_ulong_t elements,
+ * or NULL in case of fetch failure.
+ */
+kernel_ulong_t *
+fetch_indirect_syscall_args(struct tcb *const tcp,
+			    const kernel_ulong_t addr,
+			    const unsigned int n_args)
+{
+	static kernel_ulong_t u_arg[MAX_ARGS];
+
+	if (current_wordsize == sizeof(*u_arg)) {
+		if (umoven(tcp, addr, sizeof(*u_arg) * n_args, u_arg))
+			return NULL;
+	} else {
+		uint32_t narrow_arg[ARRAY_SIZE(u_arg)];
+
+		if (umoven(tcp, addr, sizeof(*narrow_arg) * n_args, narrow_arg))
+			return NULL;
+		for (unsigned int i = 0; i < n_args; ++i)
+			u_arg[i] = narrow_arg[i];
+	}
+
+	return u_arg;
 }
diff --git a/filter.h b/filter.h
index fab1812..7b63b6d 100644
--- a/filter.h
+++ b/filter.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
- * Copyright (c) 2017 The strace developers.
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,7 +34,6 @@
 
 void qualify_tokens(const char *str, struct number_set *set,
 		    string_to_uint_func func, const char *name);
-void qualify_syscall_tokens(const char *str, struct number_set *set,
-			    const char *name);
+void qualify_syscall_tokens(const char *str, struct number_set *set);
 
 #endif /* !STRACE_FILTER_H */
diff --git a/filter_qualify.c b/filter_qualify.c
index 5b0ef28..49f0d61 100644
--- a/filter_qualify.c
+++ b/filter_qualify.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,15 +44,13 @@
 static int
 sigstr_to_uint(const char *s)
 {
-	int i;
-
 	if (*s >= '0' && *s <= '9')
 		return string_to_uint_upto(s, 255);
 
 	if (strncasecmp(s, "SIG", 3) == 0)
 		s += 3;
 
-	for (i = 0; i <= 255; ++i) {
+	for (int i = 0; i <= 255; ++i) {
 		const char *name = signame(i);
 
 		if (strncasecmp(name, "SIG", 3) != 0)
@@ -72,9 +70,7 @@
 static int
 find_errno_by_name(const char *name)
 {
-	unsigned int i;
-
-	for (i = 1; i < nerrnos; ++i) {
+	for (unsigned int i = 1; i < nerrnos; ++i) {
 		if (errnoent[i] && (strcasecmp(name, errnoent[i]) == 0))
 			return i;
 	}
@@ -87,7 +83,7 @@
 		   const bool fault_tokens_only)
 {
 	const char *val;
-	int intval;
+	kernel_long_t intval;
 
 	if ((val = STR_STRIP_PREFIX(token, "when=")) != token) {
 		/*
@@ -133,9 +129,23 @@
 		   && (val = STR_STRIP_PREFIX(token, "retval=")) != token) {
 		if (fopts->data.flags & INJECT_F_RETVAL)
 			return false;
-		intval = string_to_uint(val);
+		intval = string_to_kulong(val);
 		if (intval < 0)
 			return false;
+
+#if ANY_WORDSIZE_LESS_THAN_KERNEL_LONG && !HAVE_ARCH_DEDICATED_ERR_REG
+		if ((int) intval != intval)
+			error_msg("Injected return value %" PRI_kld " will be"
+				  " clipped to %d in compat personality",
+				  intval, (int) intval);
+
+		if ((int) intval < 0 && (int) intval >= -MAX_ERRNO_VALUE)
+			error_msg("Inadvertent injection of error %d is"
+				  " possible in compat personality for"
+				  " retval=%" PRI_kld,
+				  -(int) intval, intval);
+#endif
+
 		fopts->data.rval = intval;
 		fopts->data.flags |= INJECT_F_RETVAL;
 	} else if (!fault_tokens_only
@@ -154,30 +164,24 @@
 	return true;
 }
 
-static char *
-parse_inject_expression(const char *const s, char **buf,
+static const char *
+parse_inject_expression(char *const str,
 			struct inject_opts *const fopts,
 			const bool fault_tokens_only)
 {
-	char *saveptr = NULL;
-	char *name = NULL;
-	char *token;
+	if (str[0] == '\0' || str[0] == ':')
+		return "";
 
-	*buf = xstrdup(s);
-	for (token = strtok_r(*buf, ":", &saveptr); token;
-	     token = strtok_r(NULL, ":", &saveptr)) {
-		if (!name)
-			name = token;
-		else if (!parse_inject_token(token, fopts, fault_tokens_only))
-			goto parse_error;
+	char *saveptr = NULL;
+	const char *name = strtok_r(str, ":", &saveptr);
+
+	char *token;
+	while ((token = strtok_r(NULL, ":", &saveptr))) {
+		if (!parse_inject_token(token, fopts, fault_tokens_only))
+			return NULL;
 	}
 
-	if (name)
-		return name;
-
-parse_error:
-	free(*buf);
-	return *buf = NULL;
+	return name;
 }
 
 static void
@@ -209,7 +213,7 @@
 {
 	if (!trace_set)
 		trace_set = alloc_number_set_array(SUPPORTED_PERSONALITIES);
-	qualify_syscall_tokens(str, trace_set, "system call");
+	qualify_syscall_tokens(str, trace_set);
 }
 
 static void
@@ -217,7 +221,7 @@
 {
 	if (!abbrev_set)
 		abbrev_set = alloc_number_set_array(SUPPORTED_PERSONALITIES);
-	qualify_syscall_tokens(str, abbrev_set, "system call");
+	qualify_syscall_tokens(str, abbrev_set);
 }
 
 static void
@@ -225,7 +229,7 @@
 {
 	if (!verbose_set)
 		verbose_set = alloc_number_set_array(SUPPORTED_PERSONALITIES);
-	qualify_syscall_tokens(str, verbose_set, "system call");
+	qualify_syscall_tokens(str, verbose_set);
 }
 
 static void
@@ -233,7 +237,7 @@
 {
 	if (!raw_set)
 		raw_set = alloc_number_set_array(SUPPORTED_PERSONALITIES);
-	qualify_syscall_tokens(str, raw_set, "system call");
+	qualify_syscall_tokens(str, raw_set);
 }
 
 static void
@@ -245,11 +249,17 @@
 		.first = 1,
 		.step = 1
 	};
-	char *buf = NULL;
-	char *name = parse_inject_expression(str, &buf, &opts, fault_tokens_only);
-	if (!name) {
+	char *copy = xstrdup(str);
+	const char *name =
+		parse_inject_expression(copy, &opts, fault_tokens_only);
+	if (!name)
 		error_msg_and_die("invalid %s '%s'", description, str);
-	}
+
+	struct number_set *tmp_set =
+		alloc_number_set_array(SUPPORTED_PERSONALITIES);
+	qualify_syscall_tokens(name, tmp_set);
+
+	free(copy);
 
 	/* If neither of retval, error, or signal is specified, then ... */
 	if (!opts.data.flags) {
@@ -263,18 +273,11 @@
 		}
 	}
 
-	struct number_set *tmp_set =
-		alloc_number_set_array(SUPPORTED_PERSONALITIES);
-	qualify_syscall_tokens(name, tmp_set, description);
-
-	free(buf);
-
 	/*
-	 * Initialize inject_vec accourding to tmp_set.
+	 * Initialize inject_vec according to tmp_set.
 	 * Merge tmp_set into inject_set.
 	 */
-	unsigned int p;
-	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
 		if (number_set_array_is_empty(tmp_set, p))
 			continue;
 
@@ -284,11 +287,10 @@
 		}
 		if (!inject_vec[p]) {
 			inject_vec[p] = xcalloc(nsyscall_vec[p],
-					       sizeof(*inject_vec[p]));
+						sizeof(*inject_vec[p]));
 		}
 
-		unsigned int i;
-		for (i = 0; i < nsyscall_vec[p]; ++i) {
+		for (unsigned int i = 0; i < nsyscall_vec[p]; ++i) {
 			if (is_number_in_set_array(i, tmp_set, p)) {
 				add_number_to_set_array(i, inject_set, p);
 				inject_vec[p][i] = opts;
@@ -340,9 +342,8 @@
 qualify(const char *str)
 {
 	const struct qual_options *opt = qual_options;
-	unsigned int i;
 
-	for (i = 0; i < ARRAY_SIZE(qual_options); ++i) {
+	for (unsigned int i = 0; i < ARRAY_SIZE(qual_options); ++i) {
 		const char *name = qual_options[i].name;
 		const size_t len = strlen(name);
 		const char *val = str_strip_prefix_len(str, name, len);
diff --git a/getpagesize.c b/getpagesize.c
new file mode 100644
index 0000000..49c6234
--- /dev/null
+++ b/getpagesize.c
@@ -0,0 +1,6 @@
+#include "defs.h"
+
+SYS_FUNC(getpagesize)
+{
+	return RVAL_DECODED | RVAL_HEX;
+}
diff --git a/ioctl.c b/ioctl.c
index b61a5be..9fd7492 100644
--- a/ioctl.c
+++ b/ioctl.c
@@ -287,15 +287,21 @@
 		return scsi_ioctl(tcp, code, arg);
 	case 'L':
 		return loop_ioctl(tcp, code, arg);
+#ifdef HAVE_STRUCT_MTD_WRITE_REQ
 	case 'M':
 		return mtd_ioctl(tcp, code, arg);
+#endif
+#ifdef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024
 	case 'o':
 	case 'O':
 		return ubi_ioctl(tcp, code, arg);
+#endif
 	case 'V':
 		return v4l2_ioctl(tcp, code, arg);
+#ifdef HAVE_STRUCT_PTP_SYS_OFFSET
 	case '=':
 		return ptp_ioctl(tcp, code, arg);
+#endif
 #ifdef HAVE_LINUX_INPUT_H
 	case 'E':
 		return evdev_ioctl(tcp, code, arg);
@@ -314,6 +320,10 @@
 	case 0xfd:
 		return dm_ioctl(tcp, code, arg);
 #endif
+#ifdef HAVE_LINUX_KVM_H
+	case 0xae:
+		return kvm_ioctl(tcp, code, arg);
+#endif
 	default:
 		break;
 	}
diff --git a/ioctlent0.h b/ioctlent0.h
index 13c2165..7e542b1 100644
--- a/ioctlent0.h
+++ b/ioctlent0.h
@@ -1051,6 +1051,7 @@
 { "DRM_IOCTL_MSM_GEM_CPU_FINI", 0x40046445 },
 { "DRM_IOCTL_RADEON_FULLSCREEN", 0x40046446 },
 { "DRM_IOCTL_MGA_SET_FENCE", 0x4004644a },
+{ "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", 0x4004644b },
 { "DRM_IOCTL_I915_DESTROY_HEAP", 0x4004644c },
 { "DRM_IOCTL_I915_SET_VBLANK_PIPE", 0x4004644d },
 { "DRM_IOCTL_R128_FULLSCREEN", 0x40046450 },
@@ -1403,6 +1404,7 @@
 { "DRM_IOCTL_VIA_PCICMD", 0x4010644a },
 { "DRM_IOCTL_I915_HWS_ADDR", 0x40106451 },
 { "DRM_IOCTL_I915_GEM_INIT", 0x40106453 },
+{ "DRM_IOCTL_AMDGPU_SCHED", 0x40106455 },
 { "DRM_IOCTL_SIS_FB_INIT", 0x40106456 },
 { "DRM_IOCTL_RADEON_SETPARAM", 0x40106459 },
 { "TUNER_SET_CONFIG", 0x4010645c },
@@ -1458,7 +1460,6 @@
 { "DRM_IOCTL_QXL_UPDATE_AREA", 0x40186443 },
 { "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_GEM_CPU_PREP", 0x40186444 },
-{ "DRM_IOCTL_MSM_WAIT_FENCE", 0x40186447 },
 { "DRM_IOCTL_R128_BLIT", 0x4018644b },
 { "RIO_MPORT_MAINT_WRITE_LOCAL", 0x40186d06 },
 { "RIO_MPORT_MAINT_WRITE_REMOTE", 0x40186d08 },
@@ -1487,6 +1488,7 @@
 { "DRM_IOCTL_AMDGPU_INFO", 0x40206445 },
 { "DRM_IOCTL_SIS_FB_FREE", 0x40206445 },
 { "DRM_IOCTL_ETNAVIV_WAIT_FENCE", 0x40206447 },
+{ "DRM_IOCTL_MSM_WAIT_FENCE", 0x40206447 },
 { "DRM_IOCTL_RADEON_CLEAR", 0x40206448 },
 { "DRM_IOCTL_ETNAVIV_GEM_WAIT", 0x40206449 },
 { "DRM_IOCTL_I915_CMDBUFFER", 0x4020644b },
@@ -2187,6 +2189,7 @@
 { "DRM_IOCTL_MODE_RMFB", 0xc00464af },
 { "DRM_IOCTL_MODE_DESTROY_DUMB", 0xc00464b4 },
 { "DRM_IOCTL_MODE_DESTROYPROPBLOB", 0xc00464be },
+{ "DRM_IOCTL_MODE_REVOKE_LEASE", 0xc00464c9 },
 { "SNDCTL_MIDI_PRETIME", 0xc0046d00 },
 { "SNDCTL_MIDI_MPUMODE", 0xc0046d01 },
 { "MGSL_IOCWAITEVENT", 0xc0046d08 },
@@ -2274,6 +2277,7 @@
 { "DRM_IOCTL_PRIME_HANDLE_TO_FD", 0xc00c642d },
 { "DRM_IOCTL_PRIME_FD_TO_HANDLE", 0xc00c642e },
 { "DRM_IOCTL_MSM_GEM_MADVISE", 0xc00c6448 },
+{ "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", 0xc00c644a },
 { "DRM_IOCTL_VIA_CMDBUF_SIZE", 0xc00c644b },
 { "DRM_IOCTL_I915_VBLANK_SWAP", 0xc00c644f },
 { "DRM_IOCTL_RADEON_GEM_SET_DOMAIN", 0xc00c6463 },
@@ -2352,6 +2356,7 @@
 { "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a },
 { "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a },
 { "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b },
+{ "DRM_IOCTL_VC4_GEM_MADVISE", 0xc010644b },
 { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
 { "DRM_IOCTL_R128_INDIRECT", 0xc010644f },
 { "DRM_IOCTL_AMDGPU_GEM_OP", 0xc0106450 },
@@ -2375,6 +2380,8 @@
 { "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 },
 { "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 },
 { "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 },
+{ "DRM_IOCTL_MODE_LIST_LESSEES", 0xc01064c7 },
+{ "DRM_IOCTL_MODE_GET_LEASE", 0xc01064c8 },
 { "MGSL_IOCWAITGPIO", 0xc0106d12 },
 { "NCP_IOC_GETPRIVATEDATA", 0xc0106e0a },
 { "DMX_GET_STC", 0xc0106f32 },
@@ -2420,6 +2427,8 @@
 { "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b },
 { "DRM_IOCTL_MAP_BUFS", 0xc0186419 },
 { "DRM_IOCTL_WAIT_VBLANK", 0xc018643a },
+{ "DRM_IOCTL_CRTC_GET_SEQUENCE", 0xc018643b },
+{ "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", 0xc018643c },
 { "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 },
 { "DRM_IOCTL_AMDGPU_CS", 0xc0186444 },
 { "DRM_IOCTL_I810_GETBUF", 0xc0186445 },
@@ -2444,6 +2453,7 @@
 { "DRM_IOCTL_MODE_PAGE_FLIP", 0xc01864b0 },
 { "DRM_IOCTL_MODE_DIRTYFB", 0xc01864b1 },
 { "DRM_IOCTL_MODE_OBJ_SETPROPERTY", 0xc01864ba },
+{ "DRM_IOCTL_MODE_CREATE_LEASE", 0xc01864c6 },
 { "I2OHRTGET", 0xc0186901 },
 { "I2OLCTGET", 0xc0186902 },
 { "RIO_ALLOC_DMA", 0xc0186d13 },
@@ -2498,6 +2508,7 @@
 { "DRM_IOCTL_AMDGPU_WAIT_CS", 0xc0206449 },
 { "DRM_IOCTL_MGA_DMA_BOOTSTRAP", 0xc020644c },
 { "DRM_IOCTL_RADEON_TEXTURE", 0xc020644e },
+{ "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", 0xc0206454 },
 { "DRM_IOCTL_SIS_AGP_ALLOC", 0xc0206454 },
 { "DRM_IOCTL_RADEON_GEM_CREATE", 0xc020645d },
 { "DRM_IOCTL_RADEON_GEM_MMAP", 0xc020645e },
@@ -2589,6 +2600,7 @@
 { "VIDIOC_ENUMAUDIO", 0xc0345641 },
 { "VIDIOC_ENUMAUDOUT", 0xc0345642 },
 { "VIDIOC_ENUM_FRAMEINTERVALS", 0xc034564b },
+{ "DELL_WMI_SMBIOS_CMD", 0xc0345700 },
 { "MEDIA_IOC_SETUP_LINK", 0xc0347c03 },
 { "SYNC_IOC_FILE_INFO", 0xc0383e04 },
 { "HIDIOCGFIELDINFO", 0xc038480a },
@@ -2600,10 +2612,10 @@
 { "CEC_TRANSMIT", 0xc0386105 },
 { "CEC_RECEIVE", 0xc0386106 },
 { "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", 0xc0386444 },
-{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0386446 },
 { "DRM_IOCTL_MODE_ATOMIC", 0xc03864bc },
 { "BTRFS_IOC_INO_PATHS", 0xc0389423 },
 { "BTRFS_IOC_LOGICAL_INO", 0xc0389424 },
+{ "BTRFS_IOC_LOGICAL_INO_V2", 0xc038943b },
 { "GENWQE_SLU_UPDATE", 0xc038a550 },
 { "GENWQE_SLU_READ", 0xc038a551 },
 { "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
@@ -2638,6 +2650,8 @@
 { "VIDIOC_ENUMOUTPUT", 0xc0485630 },
 { "VIDIOC_DECODER_CMD", 0xc0485660 },
 { "VIDIOC_TRY_DECODER_CMD", 0xc0485661 },
+{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0486446 },
+{ "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", 0xc048644a },
 { "DRM_IOCTL_MODE_ATTACHMODE", 0xc04864a8 },
 { "DRM_IOCTL_MODE_DETACHMODE", 0xc04864a9 },
 { "VIDEO_COMMAND", 0xc0486f3b },
@@ -2648,6 +2662,7 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "CEC_ADAP_G_CAPS", 0xc04c6100 },
+{ "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", 0xc04c644b },
 { "NVME_NVM_IOCTL_ADMIN_VIO", 0xc0504c41 },
 { "NVME_NVM_IOCTL_IO_VIO", 0xc0504c43 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
diff --git a/ioctlent1.h b/ioctlent1.h
index f5301b8..6926aa3 100644
--- a/ioctlent1.h
+++ b/ioctlent1.h
@@ -1093,6 +1093,7 @@
 { "DRM_IOCTL_MSM_GEM_CPU_FINI", 0x40046445 },
 { "DRM_IOCTL_RADEON_FULLSCREEN", 0x40046446 },
 { "DRM_IOCTL_MGA_SET_FENCE", 0x4004644a },
+{ "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", 0x4004644b },
 { "DRM_IOCTL_I915_DESTROY_HEAP", 0x4004644c },
 { "DRM_IOCTL_RADEON_STIPPLE", 0x4004644c },
 { "DRM_IOCTL_I915_SET_VBLANK_PIPE", 0x4004644d },
@@ -1445,6 +1446,7 @@
 { "DRM_IOCTL_RADEON_CMDBUF", 0x40106450 },
 { "DRM_IOCTL_I915_HWS_ADDR", 0x40106451 },
 { "DRM_IOCTL_I915_GEM_INIT", 0x40106453 },
+{ "DRM_IOCTL_AMDGPU_SCHED", 0x40106455 },
 { "DRM_IOCTL_SIS_AGP_FREE", 0x40106455 },
 { "DRM_IOCTL_RADEON_SETPARAM", 0x40106459 },
 { "DRM_IOCTL_I915_PERF_OPEN", 0x40106476 },
@@ -1502,7 +1504,6 @@
 { "DRM_IOCTL_QXL_UPDATE_AREA", 0x40186443 },
 { "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", 0x40186444 },
 { "DRM_IOCTL_MSM_GEM_CPU_PREP", 0x40186444 },
-{ "DRM_IOCTL_MSM_WAIT_FENCE", 0x40186447 },
 { "DRM_IOCTL_RADEON_CLEAR", 0x40186448 },
 { "DRM_IOCTL_I915_CMDBUFFER", 0x4018644b },
 { "DRM_IOCTL_R128_BLIT", 0x4018644b },
@@ -1536,6 +1537,7 @@
 { "DRM_IOCTL_VIRTGPU_EXECBUFFER", 0x40206442 },
 { "DRM_IOCTL_AMDGPU_INFO", 0x40206445 },
 { "DRM_IOCTL_ETNAVIV_WAIT_FENCE", 0x40206447 },
+{ "DRM_IOCTL_MSM_WAIT_FENCE", 0x40206447 },
 { "DRM_IOCTL_ETNAVIV_GEM_WAIT", 0x40206449 },
 { "DRM_IOCTL_I915_GEM_PREAD", 0x4020645c },
 { "DRM_IOCTL_I915_GEM_PWRITE", 0x4020645d },
@@ -2251,6 +2253,7 @@
 { "DRM_IOCTL_MODE_RMFB", 0xc00464af },
 { "DRM_IOCTL_MODE_DESTROY_DUMB", 0xc00464b4 },
 { "DRM_IOCTL_MODE_DESTROYPROPBLOB", 0xc00464be },
+{ "DRM_IOCTL_MODE_REVOKE_LEASE", 0xc00464c9 },
 { "I8K_GET_SPEED", 0xc0046985 },
 { "I8K_GET_FAN", 0xc0046986 },
 { "I8K_SET_FAN", 0xc0046987 },
@@ -2350,6 +2353,7 @@
 { "DRM_IOCTL_PRIME_HANDLE_TO_FD", 0xc00c642d },
 { "DRM_IOCTL_PRIME_FD_TO_HANDLE", 0xc00c642e },
 { "DRM_IOCTL_MSM_GEM_MADVISE", 0xc00c6448 },
+{ "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", 0xc00c644a },
 { "DRM_IOCTL_VIA_CMDBUF_SIZE", 0xc00c644b },
 { "DRM_IOCTL_I915_VBLANK_SWAP", 0xc00c644f },
 { "DRM_IOCTL_RADEON_GEM_SET_DOMAIN", 0xc00c6463 },
@@ -2426,6 +2430,7 @@
 { "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a },
 { "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a },
 { "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b },
+{ "DRM_IOCTL_VC4_GEM_MADVISE", 0xc010644b },
 { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
 { "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d },
 { "DRM_IOCTL_R128_INDIRECT", 0xc010644f },
@@ -2449,6 +2454,8 @@
 { "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 },
 { "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 },
 { "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 },
+{ "DRM_IOCTL_MODE_LIST_LESSEES", 0xc01064c7 },
+{ "DRM_IOCTL_MODE_GET_LEASE", 0xc01064c8 },
 { "MGSL_IOCWAITGPIO", 0xc0106d12 },
 { "DMX_GET_STC", 0xc0106f32 },
 { "SCIF_ACCEPTREQ", 0xc0107304 },
@@ -2498,6 +2505,8 @@
 { "DRM_IOCTL_GET_CLIENT", 0xc0186405 },
 { "DRM_IOCTL_ADD_MAP", 0xc0186415 },
 { "DRM_IOCTL_ADD_BUFS", 0xc0186416 },
+{ "DRM_IOCTL_CRTC_GET_SEQUENCE", 0xc018643b },
+{ "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", 0xc018643c },
 { "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 },
 { "DRM_IOCTL_AMDGPU_CS", 0xc0186444 },
 { "DRM_IOCTL_VC4_CREATE_SHADER_BO", 0xc0186445 },
@@ -2519,6 +2528,7 @@
 { "DRM_IOCTL_MODE_PAGE_FLIP", 0xc01864b0 },
 { "DRM_IOCTL_MODE_DIRTYFB", 0xc01864b1 },
 { "DRM_IOCTL_MODE_OBJ_SETPROPERTY", 0xc01864ba },
+{ "DRM_IOCTL_MODE_CREATE_LEASE", 0xc01864c6 },
 { "I2OPARMSET", 0xc0186903 },
 { "I2OPARMGET", 0xc0186904 },
 { "IPMICTL_RECEIVE_MSG_TRUNC", 0xc018690b },
@@ -2573,6 +2583,7 @@
 { "SNDRV_RAWMIDI_IOCTL_PARAMS", 0xc0205710 },
 { "DRM_IOCTL_AMDGPU_GEM_CREATE", 0xc0206440 },
 { "DRM_IOCTL_AMDGPU_WAIT_CS", 0xc0206449 },
+{ "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", 0xc0206454 },
 { "DRM_IOCTL_RADEON_GEM_CREATE", 0xc020645d },
 { "DRM_IOCTL_RADEON_GEM_MMAP", 0xc020645e },
 { "DRM_IOCTL_RADEON_GEM_PREAD", 0xc0206461 },
@@ -2652,6 +2663,7 @@
 { "VIDIOC_ENUMAUDIO", 0xc0345641 },
 { "VIDIOC_ENUMAUDOUT", 0xc0345642 },
 { "VIDIOC_ENUM_FRAMEINTERVALS", 0xc034564b },
+{ "DELL_WMI_SMBIOS_CMD", 0xc0345700 },
 { "MEDIA_IOC_SETUP_LINK", 0xc0347c03 },
 { "SYNC_IOC_FILE_INFO", 0xc0383e04 },
 { "HIDIOCGFIELDINFO", 0xc038480a },
@@ -2661,10 +2673,10 @@
 { "CEC_TRANSMIT", 0xc0386105 },
 { "CEC_RECEIVE", 0xc0386106 },
 { "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", 0xc0386444 },
-{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0386446 },
 { "DRM_IOCTL_MODE_ATOMIC", 0xc03864bc },
 { "BTRFS_IOC_INO_PATHS", 0xc0389423 },
 { "BTRFS_IOC_LOGICAL_INO", 0xc0389424 },
+{ "BTRFS_IOC_LOGICAL_INO_V2", 0xc038943b },
 { "GENWQE_SLU_UPDATE", 0xc038a550 },
 { "GENWQE_SLU_READ", 0xc038a551 },
 { "VIDIOC_OMAP3ISP_PRV_CFG", 0xc03c56c2 },
@@ -2705,6 +2717,8 @@
 { "VIDIOC_ENUMOUTPUT", 0xc0485630 },
 { "VIDIOC_DECODER_CMD", 0xc0485660 },
 { "VIDIOC_TRY_DECODER_CMD", 0xc0485661 },
+{ "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", 0xc0486446 },
+{ "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", 0xc048644a },
 { "DRM_IOCTL_MODE_ATTACHMODE", 0xc04864a8 },
 { "DRM_IOCTL_MODE_DETACHMODE", 0xc04864a9 },
 { "VIDEO_COMMAND", 0xc0486f3b },
@@ -2715,6 +2729,7 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "CEC_ADAP_G_CAPS", 0xc04c6100 },
+{ "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", 0xc04c644b },
 { "NVME_NVM_IOCTL_ADMIN_VIO", 0xc0504c41 },
 { "NVME_NVM_IOCTL_IO_VIO", 0xc0504c43 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
diff --git a/ioprio.c b/ioprio.c
index 682a7b3..9ef2a32 100644
--- a/ioprio.c
+++ b/ioprio.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,6 +27,7 @@
  */
 
 #include "defs.h"
+#include "xstring.h"
 
 enum {
 	IOPRIO_WHO_PROCESS = 1,
@@ -62,10 +63,10 @@
 	data = IOPRIO_PRIO_DATA(ioprio);
 	str = xlookup(ioprio_class, class);
 	if (str)
-		sprintf(outstr, "IOPRIO_PRIO_VALUE(%s, %d)", str, data);
+		xsprintf(outstr, "IOPRIO_PRIO_VALUE(%s, %d)", str, data);
 	else
-		sprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */, %d)",
-			class, "IOPRIO_CLASS_???", data);
+		xsprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */, %d)",
+			 class, "IOPRIO_CLASS_???", data);
 
 	return outstr;
 }
diff --git a/ipc_shm.c b/ipc_shm.c
index 7284b18..b358fc6 100644
--- a/ipc_shm.c
+++ b/ipc_shm.c
@@ -39,6 +39,14 @@
 # include <linux/shm.h>
 #endif
 
+#ifndef SHM_HUGE_SHIFT
+# define SHM_HUGE_SHIFT 26
+#endif
+
+#ifndef SHM_HUGE_MASK
+# define SHM_HUGE_MASK 0x3f
+#endif
+
 #include "xlat/shm_resource_flags.h"
 #include "xlat/shm_flags.h"
 
@@ -50,9 +58,24 @@
 	else
 		tprints("IPC_PRIVATE");
 	tprintf(", %" PRI_klu ", ", tcp->u_arg[1]);
-	if (printflags(shm_resource_flags, tcp->u_arg[2] & ~0777, NULL) != 0)
+
+	unsigned int flags = tcp->u_arg[2] & ~0777;
+	const unsigned int mask = SHM_HUGE_MASK << SHM_HUGE_SHIFT;
+	const unsigned int hugetlb_value = flags & mask;
+
+	flags &= ~mask;
+	if (flags || !hugetlb_value)
+		printflags(shm_resource_flags, flags, NULL);
+
+	if (hugetlb_value)
+		tprintf("%s%u<<SHM_HUGE_SHIFT",
+			flags ? "|" : "",
+			hugetlb_value >> SHM_HUGE_SHIFT);
+
+	if (flags || hugetlb_value)
 		tprints("|");
 	print_numeric_umode_t(tcp->u_arg[2] & 0777);
+
 	return RVAL_DECODED;
 }
 
diff --git a/kvm.c b/kvm.c
new file mode 100644
index 0000000..86fd9e5
--- /dev/null
+++ b/kvm.c
@@ -0,0 +1,140 @@
+/*
+ * Support for decoding of KVM_* ioctl commands.
+ *
+ * Copyright (c) 2017 Masatake YAMATO <yamato@redhat.com>
+ * Copyright (c) 2017 Red Hat, Inc.
+ * 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"
+
+#ifdef HAVE_LINUX_KVM_H
+# include <linux/kvm.h>
+# include "print_fields.h"
+# include "arch_kvm.c"
+
+static int
+kvm_ioctl_create_vcpu(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+	uint32_t cpuid = arg;
+
+	tprintf(", %u", cpuid);
+	return RVAL_IOCTL_DECODED | RVAL_FD;
+}
+
+# ifdef HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION
+#  include "xlat/kvm_mem_flags.h"
+static int
+kvm_ioctl_set_user_memory_region(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+	struct kvm_userspace_memory_region u_memory_region;
+
+	tprints(", ");
+	if (umove_or_printaddr(tcp, arg, &u_memory_region))
+		return RVAL_IOCTL_DECODED;
+
+	PRINT_FIELD_U("{", u_memory_region, slot);
+	PRINT_FIELD_FLAGS(", ", u_memory_region, flags, kvm_mem_flags,
+			  "KVM_MEM_???");
+	PRINT_FIELD_X(", ", u_memory_region, guest_phys_addr);
+	PRINT_FIELD_U(", ", u_memory_region, memory_size);
+	PRINT_FIELD_X(", ", u_memory_region, userspace_addr);
+	tprints("}");
+
+	return RVAL_IOCTL_DECODED;
+}
+# endif /* HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION */
+
+# ifdef HAVE_STRUCT_KVM_REGS
+static int
+kvm_ioctl_decode_regs(struct tcb *const tcp, const unsigned int code,
+		      const kernel_ulong_t arg)
+{
+	struct kvm_regs regs;
+
+	if (code == KVM_GET_REGS && entering(tcp))
+		return 0;
+
+	tprints(", ");
+	if (!umove_or_printaddr(tcp, arg, &regs))
+		arch_print_kvm_regs(tcp, arg, &regs);
+
+	return RVAL_IOCTL_DECODED;
+}
+# endif /* HAVE_STRUCT_KVM_REGS */
+
+# ifdef HAVE_STRUCT_KVM_SREGS
+static int
+kvm_ioctl_decode_sregs(struct tcb *const tcp, const unsigned int code,
+		       const kernel_ulong_t arg)
+{
+	struct kvm_sregs sregs;
+
+	if (code == KVM_GET_SREGS && entering(tcp))
+		return 0;
+
+	tprints(", ");
+	if (!umove_or_printaddr(tcp, arg, &sregs))
+		arch_print_kvm_sregs(tcp, arg, &sregs);
+
+	return RVAL_IOCTL_DECODED;
+}
+# endif /* HAVE_STRUCT_KVM_SREGS */
+
+int
+kvm_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg)
+{
+	switch (code) {
+	case KVM_CREATE_VCPU:
+		return kvm_ioctl_create_vcpu(tcp, arg);
+
+# ifdef HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION
+	case KVM_SET_USER_MEMORY_REGION:
+		return kvm_ioctl_set_user_memory_region(tcp, arg);
+# endif
+
+# ifdef HAVE_STRUCT_KVM_REGS
+	case KVM_SET_REGS:
+	case KVM_GET_REGS:
+		return kvm_ioctl_decode_regs(tcp, code, arg);
+# endif
+
+# ifdef HAVE_STRUCT_KVM_SREGS
+	case KVM_SET_SREGS:
+	case KVM_GET_SREGS:
+		return kvm_ioctl_decode_sregs(tcp, code, arg);
+# endif
+
+	case KVM_CREATE_VM:
+		return RVAL_DECODED | RVAL_FD;
+	case KVM_RUN:
+	case KVM_GET_VCPU_MMAP_SIZE:
+	case KVM_GET_API_VERSION:
+	default:
+		return RVAL_DECODED;
+	}
+}
+
+#endif /* HAVE_LINUX_KVM_H */
diff --git a/linux/crisv10/arch_rt_sigframe.c b/largefile_wrappers.h
similarity index 61%
copy from linux/crisv10/arch_rt_sigframe.c
copy to largefile_wrappers.h
index f3d5f10..6bb11a3 100644
--- a/linux/crisv10/arch_rt_sigframe.c
+++ b/largefile_wrappers.h
@@ -1,5 +1,8 @@
 /*
- * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Wrappers for handling discrepancies in LF64-themed syscalls availability and
+ * necessity between verious architectures and kernel veriosns.
+ *
+ * Copyright (c) 2012-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,9 +28,31 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-FUNC_GET_RT_SIGFRAME_ADDR
-{
-	unsigned long addr;
+#ifndef STRACE_LARGEFILE_WRAPPERS_H
+#define STRACE_LARGEFILE_WRAPPERS_H
 
-	return upeek(tcp->pid, 4 * PT_USP, &addr) ? 0 : addr;
-}
+#include "defs.h"
+
+#ifdef _LARGEFILE64_SOURCE
+# ifdef HAVE_FOPEN64
+#  define fopen_for_output fopen64
+# else
+#  define fopen_for_output fopen
+# endif
+# define struct_stat struct stat64
+# define stat_file stat64
+# define struct_dirent struct dirent64
+# define read_dir readdir64
+# define struct_rlimit struct rlimit64
+# define set_rlimit setrlimit64
+#else
+# define fopen_for_output fopen
+# define struct_stat struct stat
+# define stat_file stat
+# define struct_dirent struct dirent
+# define read_dir readdir
+# define struct_rlimit struct rlimit
+# define set_rlimit setrlimit
+#endif
+
+#endif /* STRACE_LARGEFILE_WRAPPERS_H */
diff --git a/ldt.c b/ldt.c
index 81bc8ae..682847e 100644
--- a/ldt.c
+++ b/ldt.c
@@ -6,7 +6,7 @@
  * Copyright (c) 2002-2004 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2010 Andreas Schwab <schwab@linux-m68k.org>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,50 +38,130 @@
 
 # include <asm/ldt.h>
 
+# include "print_fields.h"
+# include "xstring.h"
+
 void
-print_user_desc(struct tcb *const tcp, const kernel_ulong_t addr)
+print_user_desc(struct tcb *const tcp, const kernel_ulong_t addr,
+		enum user_desc_print_filter filter)
 {
 	struct user_desc desc;
+	unsigned *entry_number = get_tcb_priv_data(tcp);
 
-	if (umove_or_printaddr(tcp, addr, &desc))
-		return;
+	switch (filter) {
+	case USER_DESC_ENTERING:
+		if (umove_or_printaddr(tcp, addr, &desc.entry_number))
+			return;
 
-	tprintf("{entry_number:%d, "
-		"base_addr:%#08x, "
-		"limit:%d, "
-		"seg_32bit:%d, "
-		"contents:%d, "
-		"read_exec_only:%d, "
-		"limit_in_pages:%d, "
-		"seg_not_present:%d, "
-		"useable:%d}",
-		desc.entry_number,
-		desc.base_addr,
-		desc.limit,
-		desc.seg_32bit,
-		desc.contents,
-		desc.read_exec_only,
-		desc.limit_in_pages,
-		desc.seg_not_present,
-		desc.useable);
+		break;
+
+	case USER_DESC_EXITING:
+		if (!addr || !verbose(tcp))
+			return;
+		if (syserror(tcp) || umove(tcp, addr, &desc)) {
+			if (entry_number)
+				tprints(", ...}");
+
+			return;
+		}
+
+		break;
+
+	case USER_DESC_BOTH:
+		if (umove_or_printaddr(tcp, addr, &desc))
+			return;
+
+		break;
+	}
+
+	if (filter & USER_DESC_ENTERING) {
+		PRINT_FIELD_ID("{", desc, entry_number);
+
+		/*
+		 * If we don't print the whole structure now, let's save it for
+		 * later.
+		 */
+		if (filter == USER_DESC_ENTERING) {
+			entry_number = xmalloc(sizeof(*entry_number));
+
+			*entry_number = desc.entry_number;
+			set_tcb_priv_data(tcp, entry_number, free);
+		}
+	}
+
+	if (filter & USER_DESC_EXITING) {
+		/*
+		 * It should be the same in case of get_thread_area, but we can
+		 * never be sure...
+		 */
+		if (filter == USER_DESC_EXITING) {
+			if (entry_number) {
+				if (*entry_number != desc.entry_number) {
+					if ((int) desc.entry_number == -1)
+						tprints(" => -1");
+					else
+						tprintf(" => %u",
+							desc.entry_number);
+				}
+			} else {
+				/*
+				 * This is really strange. If we are here, it
+				 * means that we failed on entering but somehow
+				 * succeeded on exiting.
+				 */
+				PRINT_FIELD_ID(" => {", desc, entry_number);
+			}
+		}
+
+		PRINT_FIELD_0X(", ", desc, base_addr);
+		PRINT_FIELD_0X(", ", desc, limit);
+		PRINT_FIELD_U_CAST(", ", desc, seg_32bit, unsigned int);
+		PRINT_FIELD_U_CAST(", ", desc, contents, unsigned int);
+		PRINT_FIELD_U_CAST(", ", desc, read_exec_only, unsigned int);
+		PRINT_FIELD_U_CAST(", ", desc, limit_in_pages, unsigned int);
+		PRINT_FIELD_U_CAST(", ", desc, seg_not_present, unsigned int);
+		PRINT_FIELD_U_CAST(", ", desc, useable, unsigned int);
+
+# ifdef HAVE_STRUCT_USER_DESC_LM
+		/* lm is totally ignored for 32-bit processes */
+		if (current_klongsize == 8)
+			PRINT_FIELD_U_CAST(", ", desc, lm, unsigned int);
+# endif /* HAVE_STRUCT_USER_DESC_LM */
+
+		tprints("}");
+	}
 }
 
 SYS_FUNC(modify_ldt)
 {
-	tprintf("%" PRI_kld ", ", tcp->u_arg[0]);
-	if (tcp->u_arg[2] != sizeof(struct user_desc))
-		printaddr(tcp->u_arg[1]);
-	else
-		print_user_desc(tcp, tcp->u_arg[1]);
-	tprintf(", %" PRI_klu, tcp->u_arg[2]);
+	if (entering(tcp)) {
+		tprintf("%d, ", (int) tcp->u_arg[0]);
+		if (tcp->u_arg[2] != sizeof(struct user_desc))
+			printaddr(tcp->u_arg[1]);
+		else
+			print_user_desc(tcp, tcp->u_arg[1], USER_DESC_BOTH);
+		tprintf(", %" PRI_klu, tcp->u_arg[2]);
 
-	return RVAL_DECODED;
+		return 0;
+	}
+
+	/*
+	 * For some reason ("tht ABI for sys_modify_ldt() expects
+	 * 'int'"), modify_ldt clips higher bits on x86_64.
+	 */
+
+	if (syserror(tcp) || (kernel_ulong_t) tcp->u_rval < 0xfffff000)
+		return 0;
+
+	tcp->u_error = -(unsigned int) tcp->u_rval;
+
+	return RVAL_PRINT_ERR_VAL;
 }
 
 SYS_FUNC(set_thread_area)
 {
 	if (entering(tcp)) {
-		print_user_desc(tcp, tcp->u_arg[0]);
+		print_user_desc(tcp, tcp->u_arg[0], USER_DESC_BOTH);
 	} else {
 		struct user_desc desc;
 
@@ -91,7 +171,7 @@
 		} else {
 			static char outstr[32];
 
-			sprintf(outstr, "entry_number:%d", desc.entry_number);
+			xsprintf(outstr, "entry_number=%u", desc.entry_number);
 			tcp->auxstr = outstr;
 			return RVAL_STR;
 		}
@@ -101,8 +181,8 @@
 
 SYS_FUNC(get_thread_area)
 {
-	if (exiting(tcp))
-		print_user_desc(tcp, tcp->u_arg[0]);
+	print_user_desc(tcp, tcp->u_arg[0],
+			entering(tcp) ? USER_DESC_ENTERING : USER_DESC_EXITING);
 	return 0;
 }
 
diff --git a/linux/32/ioctls_inc_align16.h b/linux/32/ioctls_inc_align16.h
index 175f85f..1994589 100644
--- a/linux/32/ioctls_inc_align16.h
+++ b/linux/32/ioctls_inc_align16.h
@@ -85,6 +85,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x6454, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x11c },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
@@ -93,6 +94,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_SCHED", _IOC_WRITE, 0x6455, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_VM", _IOC_READ|_IOC_WRITE, 0x6453, 0x08 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_FENCES", _IOC_READ|_IOC_WRITE, 0x6452, 0x18 },
@@ -111,6 +113,8 @@
 { "drm/drm.h", "DRM_IOCTL_AUTH_MAGIC", _IOC_WRITE, 0x6411, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_BLOCK", _IOC_READ|_IOC_WRITE, 0x6412, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_CONTROL", _IOC_WRITE, 0x6414, 0x08 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_GET_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643b, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643c, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_DMA", _IOC_READ|_IOC_WRITE, 0x6429, 0x28 },
 { "drm/drm.h", "DRM_IOCTL_DROP_MASTER", _IOC_NONE, 0x641f, 0x00 },
 { "drm/drm.h", "DRM_IOCTL_FINISH", _IOC_WRITE, 0x642c, 0x08 },
@@ -138,6 +142,7 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c6, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
@@ -154,10 +159,13 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64ac, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64aa, 0x40 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETRESOURCES", _IOC_READ|_IOC_WRITE, 0x64a0, 0x40 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GET_LEASE", _IOC_READ|_IOC_WRITE, 0x64c8, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_LIST_LESSEES", _IOC_READ|_IOC_WRITE, 0x64c7, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_MAP_DUMB", _IOC_READ|_IOC_WRITE, 0x64b3, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", _IOC_READ|_IOC_WRITE, 0x64b9, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_SETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64ba, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_PAGE_FLIP", _IOC_READ|_IOC_WRITE, 0x64b0, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_REVOKE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c9, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_RMFB", _IOC_READ|_IOC_WRITE, 0x64af, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETCRTC", _IOC_READ|_IOC_WRITE, 0x64a2, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a5, 0x20 },
@@ -195,10 +203,12 @@
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x38 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", _IOC_READ|_IOC_WRITE, 0x644a, 0x48 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", _IOC_READ|_IOC_WRITE, 0x644b, 0x4a },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
@@ -302,9 +312,11 @@
 { "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, 0x24 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x18 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x1c },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6484, 0x28 },
@@ -408,6 +420,7 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "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_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
 { "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_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
@@ -606,6 +619,7 @@
 { "linux/btrfs.h", "BTRFS_IOC_INO_LOOKUP", _IOC_READ|_IOC_WRITE, 0x9412, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_INO_PATHS", _IOC_READ|_IOC_WRITE, 0x9423, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO", _IOC_READ|_IOC_WRITE, 0x9424, 0x38 },
+{ "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO_V2", _IOC_READ|_IOC_WRITE, 0x943b, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_ASSIGN", _IOC_WRITE, 0x9429, 0x18 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_CREATE", _IOC_WRITE, 0x942a, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_LIMIT", _IOC_READ, 0x942b, 0x30 },
@@ -2400,6 +2414,7 @@
 { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
 { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
 { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
+{ "linux/wmi.h", "DELL_WMI_SMBIOS_CMD", _IOC_READ|_IOC_WRITE, 0x5700, 0x34 },
 { "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
 { "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
 { "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h
index 165912a..e8ee3f0 100644
--- a/linux/32/ioctls_inc_align32.h
+++ b/linux/32/ioctls_inc_align32.h
@@ -85,6 +85,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x6454, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x11c },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
@@ -93,6 +94,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_SCHED", _IOC_WRITE, 0x6455, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_VM", _IOC_READ|_IOC_WRITE, 0x6453, 0x08 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_FENCES", _IOC_READ|_IOC_WRITE, 0x6452, 0x18 },
@@ -111,6 +113,8 @@
 { "drm/drm.h", "DRM_IOCTL_AUTH_MAGIC", _IOC_WRITE, 0x6411, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_BLOCK", _IOC_READ|_IOC_WRITE, 0x6412, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_CONTROL", _IOC_WRITE, 0x6414, 0x08 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_GET_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643b, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643c, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_DMA", _IOC_READ|_IOC_WRITE, 0x6429, 0x28 },
 { "drm/drm.h", "DRM_IOCTL_DROP_MASTER", _IOC_NONE, 0x641f, 0x00 },
 { "drm/drm.h", "DRM_IOCTL_FINISH", _IOC_WRITE, 0x642c, 0x08 },
@@ -138,6 +142,7 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c6, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
@@ -154,10 +159,13 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64ac, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64aa, 0x40 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETRESOURCES", _IOC_READ|_IOC_WRITE, 0x64a0, 0x40 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GET_LEASE", _IOC_READ|_IOC_WRITE, 0x64c8, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_LIST_LESSEES", _IOC_READ|_IOC_WRITE, 0x64c7, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_MAP_DUMB", _IOC_READ|_IOC_WRITE, 0x64b3, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", _IOC_READ|_IOC_WRITE, 0x64b9, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_SETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64ba, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_PAGE_FLIP", _IOC_READ|_IOC_WRITE, 0x64b0, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_REVOKE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c9, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_RMFB", _IOC_READ|_IOC_WRITE, 0x64af, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETCRTC", _IOC_READ|_IOC_WRITE, 0x64a2, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a5, 0x20 },
@@ -195,10 +203,12 @@
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x38 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", _IOC_READ|_IOC_WRITE, 0x644a, 0x48 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", _IOC_READ|_IOC_WRITE, 0x644b, 0x4c },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
@@ -302,9 +312,11 @@
 { "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, 0x24 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x18 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x1c },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6484, 0x28 },
@@ -408,6 +420,7 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "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_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
 { "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_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
@@ -606,6 +619,7 @@
 { "linux/btrfs.h", "BTRFS_IOC_INO_LOOKUP", _IOC_READ|_IOC_WRITE, 0x9412, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_INO_PATHS", _IOC_READ|_IOC_WRITE, 0x9423, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO", _IOC_READ|_IOC_WRITE, 0x9424, 0x38 },
+{ "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO_V2", _IOC_READ|_IOC_WRITE, 0x943b, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_ASSIGN", _IOC_WRITE, 0x9429, 0x18 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_CREATE", _IOC_WRITE, 0x942a, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_LIMIT", _IOC_READ, 0x942b, 0x30 },
@@ -2400,6 +2414,7 @@
 { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
 { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
 { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
+{ "linux/wmi.h", "DELL_WMI_SMBIOS_CMD", _IOC_READ|_IOC_WRITE, 0x5700, 0x34 },
 { "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
 { "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
 { "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h
index 25de6ba..fd8f575 100644
--- a/linux/32/ioctls_inc_align64.h
+++ b/linux/32/ioctls_inc_align64.h
@@ -85,6 +85,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x6454, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
@@ -93,6 +94,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_SCHED", _IOC_WRITE, 0x6455, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_VM", _IOC_READ|_IOC_WRITE, 0x6453, 0x08 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_FENCES", _IOC_READ|_IOC_WRITE, 0x6452, 0x18 },
@@ -111,6 +113,8 @@
 { "drm/drm.h", "DRM_IOCTL_AUTH_MAGIC", _IOC_WRITE, 0x6411, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_BLOCK", _IOC_READ|_IOC_WRITE, 0x6412, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_CONTROL", _IOC_WRITE, 0x6414, 0x08 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_GET_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643b, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643c, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_DMA", _IOC_READ|_IOC_WRITE, 0x6429, 0x28 },
 { "drm/drm.h", "DRM_IOCTL_DROP_MASTER", _IOC_NONE, 0x641f, 0x00 },
 { "drm/drm.h", "DRM_IOCTL_FINISH", _IOC_WRITE, 0x642c, 0x08 },
@@ -138,6 +142,7 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c6, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
@@ -154,10 +159,13 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64ac, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64aa, 0x40 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETRESOURCES", _IOC_READ|_IOC_WRITE, 0x64a0, 0x40 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GET_LEASE", _IOC_READ|_IOC_WRITE, 0x64c8, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_LIST_LESSEES", _IOC_READ|_IOC_WRITE, 0x64c7, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_MAP_DUMB", _IOC_READ|_IOC_WRITE, 0x64b3, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", _IOC_READ|_IOC_WRITE, 0x64b9, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_SETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64ba, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_PAGE_FLIP", _IOC_READ|_IOC_WRITE, 0x64b0, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_REVOKE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c9, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_RMFB", _IOC_READ|_IOC_WRITE, 0x64af, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETCRTC", _IOC_READ|_IOC_WRITE, 0x64a2, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a5, 0x20 },
@@ -195,10 +203,12 @@
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x38 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", _IOC_READ|_IOC_WRITE, 0x644a, 0x48 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", _IOC_READ|_IOC_WRITE, 0x644b, 0x4c },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
@@ -304,7 +314,9 @@
 { "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, 0x28 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x18 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6484, 0x28 },
@@ -408,6 +420,7 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "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_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
 { "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_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
@@ -606,6 +619,7 @@
 { "linux/btrfs.h", "BTRFS_IOC_INO_LOOKUP", _IOC_READ|_IOC_WRITE, 0x9412, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_INO_PATHS", _IOC_READ|_IOC_WRITE, 0x9423, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO", _IOC_READ|_IOC_WRITE, 0x9424, 0x38 },
+{ "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO_V2", _IOC_READ|_IOC_WRITE, 0x943b, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_ASSIGN", _IOC_WRITE, 0x9429, 0x18 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_CREATE", _IOC_WRITE, 0x942a, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_LIMIT", _IOC_READ, 0x942b, 0x30 },
@@ -2400,6 +2414,7 @@
 { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
 { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
 { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
+{ "linux/wmi.h", "DELL_WMI_SMBIOS_CMD", _IOC_READ|_IOC_WRITE, 0x5700, 0x34 },
 { "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
 { "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
 { "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
index df25e89..b53bf88 100644
--- a/linux/32/syscallent.h
+++ b/linux/32/syscallent.h
@@ -177,20 +177,20 @@
 [169] = { 2,	0,		SEN(gettimeofday),		"gettimeofday"		},
 [170] = { 2,	0,		SEN(settimeofday),		"settimeofday"		},
 [171] = { 1,	0,		SEN(adjtimex),			"adjtimex"		},
-[172] = { 0,	NF,		SEN(getpid),			"getpid"		},
-[173] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[174] = { 0,	NF,		SEN(getuid),			"getuid"		},
-[175] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[176] = { 0,	NF,		SEN(getgid),			"getgid"		},
-[177] = { 0,	NF,		SEN(getegid),			"getegid"		},
-[178] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[172] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
+[173] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[174] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
+[175] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[176] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
+[177] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
+[178] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [179] = { 1,	0,		SEN(sysinfo),			"sysinfo"		},
-[180] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[180] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [181] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[182] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[183] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[184] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[185] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[182] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[183] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[184] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[185] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [186] = { 2,	TI,		SEN(msgget),			"msgget"		},
 [187] = { 3,	TI,		SEN(msgctl),			"msgctl"		},
 [188] = { 5,	TI,		SEN(msgrcv),			"msgrcv"		},
diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h
index 691b6ea..0bc1c76 100644
--- a/linux/64/ioctls_inc.h
+++ b/linux/64/ioctls_inc.h
@@ -85,6 +85,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x6454, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
@@ -93,6 +94,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_SCHED", _IOC_WRITE, 0x6455, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_VM", _IOC_READ|_IOC_WRITE, 0x6453, 0x08 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_FENCES", _IOC_READ|_IOC_WRITE, 0x6452, 0x18 },
@@ -111,6 +113,8 @@
 { "drm/drm.h", "DRM_IOCTL_AUTH_MAGIC", _IOC_WRITE, 0x6411, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_BLOCK", _IOC_READ|_IOC_WRITE, 0x6412, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_CONTROL", _IOC_WRITE, 0x6414, 0x08 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_GET_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643b, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643c, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_DMA", _IOC_READ|_IOC_WRITE, 0x6429, 0x40 },
 { "drm/drm.h", "DRM_IOCTL_DROP_MASTER", _IOC_NONE, 0x641f, 0x00 },
 { "drm/drm.h", "DRM_IOCTL_FINISH", _IOC_WRITE, 0x642c, 0x08 },
@@ -138,6 +142,7 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c6, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
@@ -154,10 +159,13 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64ac, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64aa, 0x40 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETRESOURCES", _IOC_READ|_IOC_WRITE, 0x64a0, 0x40 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GET_LEASE", _IOC_READ|_IOC_WRITE, 0x64c8, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_LIST_LESSEES", _IOC_READ|_IOC_WRITE, 0x64c7, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_MAP_DUMB", _IOC_READ|_IOC_WRITE, 0x64b3, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", _IOC_READ|_IOC_WRITE, 0x64b9, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_SETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64ba, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_PAGE_FLIP", _IOC_READ|_IOC_WRITE, 0x64b0, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_REVOKE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c9, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_RMFB", _IOC_READ|_IOC_WRITE, 0x64af, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETCRTC", _IOC_READ|_IOC_WRITE, 0x64a2, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a5, 0x20 },
@@ -195,10 +203,12 @@
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x38 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", _IOC_READ|_IOC_WRITE, 0x644a, 0x48 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", _IOC_READ|_IOC_WRITE, 0x644b, 0x4c },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
@@ -304,7 +314,9 @@
 { "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, 0x28 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x18 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6484, 0x28 },
@@ -408,6 +420,7 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "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_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
 { "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_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
@@ -606,6 +619,7 @@
 { "linux/btrfs.h", "BTRFS_IOC_INO_LOOKUP", _IOC_READ|_IOC_WRITE, 0x9412, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_INO_PATHS", _IOC_READ|_IOC_WRITE, 0x9423, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO", _IOC_READ|_IOC_WRITE, 0x9424, 0x38 },
+{ "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO_V2", _IOC_READ|_IOC_WRITE, 0x943b, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_ASSIGN", _IOC_WRITE, 0x9429, 0x18 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_CREATE", _IOC_WRITE, 0x942a, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_LIMIT", _IOC_READ, 0x942b, 0x30 },
@@ -2400,6 +2414,7 @@
 { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
 { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
 { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
+{ "linux/wmi.h", "DELL_WMI_SMBIOS_CMD", _IOC_READ|_IOC_WRITE, 0x5700, 0x34 },
 { "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
 { "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
 { "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h
index a5ab193..241d944 100644
--- a/linux/64/syscallent.h
+++ b/linux/64/syscallent.h
@@ -170,20 +170,20 @@
 [169] = { 2,	0,		SEN(gettimeofday),		"gettimeofday"		},
 [170] = { 2,	0,		SEN(settimeofday),		"settimeofday"		},
 [171] = { 1,	0,		SEN(adjtimex),			"adjtimex"		},
-[172] = { 0,	NF,		SEN(getpid),			"getpid"		},
-[173] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[174] = { 0,	NF,		SEN(getuid),			"getuid"		},
-[175] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[176] = { 0,	NF,		SEN(getgid),			"getgid"		},
-[177] = { 0,	NF,		SEN(getegid),			"getegid"		},
-[178] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[172] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
+[173] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[174] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
+[175] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[176] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
+[177] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
+[178] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [179] = { 1,	0,		SEN(sysinfo),			"sysinfo"		},
-[180] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[180] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [181] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[182] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[183] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[184] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[185] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[182] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[183] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[184] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[185] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [186] = { 2,	TI,		SEN(msgget),			"msgget"		},
 [187] = { 3,	TI,		SEN(msgctl),			"msgctl"		},
 [188] = { 5,	TI,		SEN(msgrcv),			"msgrcv"		},
diff --git a/linux/aarch64/arch_defs_.h b/linux/aarch64/arch_defs_.h
new file mode 100644
index 0000000..40232fd
--- /dev/null
+++ b/linux/aarch64/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define SUPPORTED_PERSONALITIES 2
diff --git a/linux/aarch64/arch_regs.c b/linux/aarch64/arch_regs.c
index 5d805fb..234d8c3 100644
--- a/linux/aarch64/arch_regs.c
+++ b/linux/aarch64/arch_regs.c
@@ -36,3 +36,6 @@
 #define ARCH_REGS_FOR_GETREGSET arm_regs_union
 #define ARCH_IOVEC_FOR_GETREGSET aarch64_io
 #define ARCH_PC_REG ((aarch64_io.iov_len == sizeof(arm_regs)) ? arm_regs.ARM_pc : aarch64_regs.pc)
+
+#define ARCH_PERSONALITY_0_IOV_SIZE sizeof(aarch64_regs)
+#define ARCH_PERSONALITY_1_IOV_SIZE sizeof(arm_regs)
diff --git a/linux/aarch64/get_scno.c b/linux/aarch64/get_scno.c
index 569aea0..350f32f 100644
--- a/linux/aarch64/get_scno.c
+++ b/linux/aarch64/get_scno.c
@@ -8,14 +8,11 @@
 		case sizeof(aarch64_regs):
 			/* We are in 64-bit mode */
 			scno = aarch64_regs.regs[8];
-			update_personality(tcp, 0);
 			break;
 		case sizeof(arm_regs):
 			/* We are in 32-bit mode */
 			/* Note: we don't support OABI, unlike 32-bit ARM build */
 			scno = arm_regs.ARM_r7;
-			scno = shuffle_scno(scno);
-			update_personality(tcp, 1);
 			break;
 	}
 
diff --git a/linux/aarch64/nr_prefix.c b/linux/aarch64/nr_prefix.c
new file mode 100644
index 0000000..49fe77a
--- /dev/null
+++ b/linux/aarch64/nr_prefix.c
@@ -0,0 +1 @@
+#include "../arm/nr_prefix.c"
diff --git a/linux/aarch64/shuffle_scno.c b/linux/aarch64/shuffle_scno.c
new file mode 100644
index 0000000..7d4de73
--- /dev/null
+++ b/linux/aarch64/shuffle_scno.c
@@ -0,0 +1,12 @@
+#define shuffle_scno arm_shuffle_scno
+#include "../arm/shuffle_scno.c"
+#undef shuffle_scno
+
+kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+	if (current_personality == 1)
+		return arm_shuffle_scno(scno);
+
+	return scno;
+}
diff --git a/linux/aarch64/syscallent.h b/linux/aarch64/syscallent.h
index 4ff6118..3220420 100644
--- a/linux/aarch64/syscallent.h
+++ b/linux/aarch64/syscallent.h
@@ -49,7 +49,7 @@
 [1057] = { 3,	TD,		SEN(lseek),		"lseek"		},
 [1058] = { 6,	TD|TM|SI,	SEN(mmap),		"mmap"		},
 [1059] = { 1,	0,		SEN(alarm),		"alarm"		},
-[1060] = { 0,	0,		SEN(getpgrp),		"getpgrp"	},
+[1060] = { 0,	PU|NF,		SEN(getpgrp),		"getpgrp"	},
 [1061] = { 0,	TS,		SEN(pause),		"pause"		},
 [1062] = { 1,	0,		SEN(time),		"time"		},
 [1063] = { 2,	TF,		SEN(utime),		"utime"		},
diff --git a/linux/alpha/arch_defs_.h b/linux/alpha/arch_defs_.h
new file mode 100644
index 0000000..f6fe59e
--- /dev/null
+++ b/linux/alpha/arch_defs_.h
@@ -0,0 +1,2 @@
+#define HAVE_ARCH_GETRVAL2 1
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/alpha/arch_getrval2.c b/linux/alpha/arch_getrval2.c
index f78a9f0..7953352 100644
--- a/linux/alpha/arch_getrval2.c
+++ b/linux/alpha/arch_getrval2.c
@@ -2,7 +2,7 @@
 getrval2(struct tcb *tcp)
 {
 	unsigned long r20;
-	if (upeek(tcp->pid, 20, &r20) < 0)
+	if (upeek(tcp, 20, &r20) < 0)
 		return -1;
 	return r20;
 }
diff --git a/linux/alpha/arch_rt_sigframe.c b/linux/alpha/arch_rt_sigframe.c
index 3343183..d341be1 100644
--- a/linux/alpha/arch_rt_sigframe.c
+++ b/linux/alpha/arch_rt_sigframe.c
@@ -29,5 +29,5 @@
 {
 	unsigned long addr;
 
-	return upeek(tcp->pid, REG_FP, &addr) ? 0 : addr;
+	return upeek(tcp, REG_FP, &addr) ? 0 : addr;
 }
diff --git a/linux/alpha/arch_sigreturn.c b/linux/alpha/arch_sigreturn.c
index d5f19c5..396187a 100644
--- a/linux/alpha/arch_sigreturn.c
+++ b/linux/alpha/arch_sigreturn.c
@@ -3,7 +3,7 @@
 {
 	unsigned long addr;
 
-	if (upeek(tcp->pid, REG_FP, &addr) < 0)
+	if (upeek(tcp, REG_FP, &addr) < 0)
 		return;
 	addr += offsetof(struct sigcontext, sc_mask);
 
diff --git a/linux/alpha/get_scno.c b/linux/alpha/get_scno.c
index 3ffd78a..3142da2 100644
--- a/linux/alpha/get_scno.c
+++ b/linux/alpha/get_scno.c
@@ -4,9 +4,9 @@
 {
 	kernel_ulong_t scno = 0;
 
-	if (upeek(tcp->pid, REG_A3, &alpha_a3) < 0)
+	if (upeek(tcp, REG_A3, &alpha_a3) < 0)
 		return -1;
-	if (upeek(tcp->pid, REG_R0, &scno) < 0)
+	if (upeek(tcp, REG_R0, &scno) < 0)
 		return -1;
 
 	/*
diff --git a/linux/alpha/get_syscall_args.c b/linux/alpha/get_syscall_args.c
index a385726..be61abf 100644
--- a/linux/alpha/get_syscall_args.c
+++ b/linux/alpha/get_syscall_args.c
@@ -5,7 +5,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, REG_A0+i, &tcp->u_arg[i]) < 0)
+		if (upeek(tcp, REG_A0+i, &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
 }
diff --git a/linux/alpha/get_syscall_result.c b/linux/alpha/get_syscall_result.c
index f4c504f..e49a825 100644
--- a/linux/alpha/get_syscall_result.c
+++ b/linux/alpha/get_syscall_result.c
@@ -1,6 +1,6 @@
 static int
 get_syscall_result_regs(struct tcb *tcp)
 {
-	return (upeek(tcp->pid, REG_A3, &alpha_a3) < 0 ||
-		upeek(tcp->pid, REG_R0, &alpha_r0) < 0) ? -1 : 0;
+	return (upeek(tcp, REG_A3, &alpha_a3) < 0 ||
+		upeek(tcp, REG_R0, &alpha_r0) < 0) ? -1 : 0;
 }
diff --git a/linux/alpha/set_error.c b/linux/alpha/set_error.c
index bcc5ff8..169277b 100644
--- a/linux/alpha/set_error.c
+++ b/linux/alpha/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	alpha_r0 = tcp->u_error;
-	return upoke(tcp->pid, REG_R0, alpha_r0);
+	return upoke(tcp, REG_R0, alpha_r0);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-	return upoke(tcp->pid, REG_A3, (alpha_a3 = 0))
-	       || upoke(tcp->pid, REG_R0, (alpha_r0 = tcp->u_rval));
+	return upoke(tcp, REG_A3, (alpha_a3 = 0))
+	       || upoke(tcp, REG_R0, (alpha_r0 = tcp->u_rval));
 }
diff --git a/linux/alpha/set_scno.c b/linux/alpha/set_scno.c
index d5bcfb6..e285c9a 100644
--- a/linux/alpha/set_scno.c
+++ b/linux/alpha/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, REG_R0, scno);
+	return upoke(tcp, REG_R0, scno);
 }
diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h
index 5a72bb2..700ae29 100644
--- a/linux/alpha/syscallent.h
+++ b/linux/alpha/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 18] = { 5,	TSFA,		SEN(printargs),			"osf_getfsstat"		}, /* not implemented */
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getxpid),			"getxpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getxpid),			"getxpid"		},
 [ 21] = { 4,	0,		SEN(printargs),			"osf_mount"		},
 [ 22] = { 2,	TF,		SEN(umount2),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getxuid),			"getxuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getxuid),			"getxuid"		},
 [ 25] = { 5,	0,		SEN(printargs),			"exec_with_loader"	}, /* not implemented */
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 5,	0,		SEN(printargs),			"osf_nrecvmsg"		}, /* not implemented */
@@ -74,7 +74,7 @@
 [ 44] = { 5,	0,		SEN(printargs),			"osf_profil"		}, /* not implemented */
 [ 45] = { 3,	TD|TF,		SEN(open),			"open"			},
 [ 46] = { 5,	0,		SEN(printargs),			"osf_old_sigaction"	}, /* not implemented */
-[ 47] = { 0,	NF,		SEN(getxgid),			"getxgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getxgid),			"getxgid"		},
 [ 48] = { 2,	TS,		SEN(osf_sigprocmask),		"osf_sigprocmask"	},
 [ 49] = { 5,	0,		SEN(printargs),			"osf_getlogin"		}, /* not implemented */
 [ 50] = { 5,	0,		SEN(printargs),			"osf_setlogin"		}, /* not implemented */
@@ -90,8 +90,8 @@
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 5,	TD|TFST|TSTA,	SEN(printargs),			"osf_old_fstat"		}, /* not implemented */
-[ 63] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
-[ 64] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
+[ 63] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getpagesize),		"getpagesize"		},
 [ 65] = { 5,	TM,		SEN(printargs),			"osf_mremap"		}, /* not implemented */
 [ 66] = { 0,	TP,		SEN(vfork),			"vfork"			},
 [ 67] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
@@ -116,7 +116,7 @@
 [ 86] = { 2,	0,		SEN(osf_getitimer),		"osf_getitimer"		},
 [ 87] = { 2,	0,		SEN(gethostname),		"gethostname"		},
 [ 88] = { 2,	0,		SEN(sethostname),		"sethostname"		},
-[ 89] = { 0,	0,		SEN(getdtablesize),		"getdtablesize"		},
+[ 89] = { 0,	PU|NF,		SEN(getdtablesize),		"getdtablesize"		},
 [ 90] = { 2,	TD,		SEN(dup2),			"dup2"			},
 [ 91] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [ 92] = { 3,	TD,		SEN(fcntl),			"fcntl"			},
@@ -342,7 +342,7 @@
 [375] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [376] = { 3,	0,		SEN(printargs),			"pciconfig_iobase"	},
 [377] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
-[378] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[378] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [379] = { 3,	TD,		SEN(readahead),			"readahead"		},
 [380] = { },
 [381] = { 2,	TS,		SEN(kill),			"tkill"			},
@@ -395,12 +395,12 @@
 [429] = { 6,	TM,		SEN(mbind),			"mbind"			}, /* not implemented */
 [430] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		}, /* not implemented */
 [431] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		}, /* not implemented */
-[432] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[432] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [433] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[434] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[435] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[436] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[437] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[434] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[435] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[436] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[437] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [438] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [439] = { 5,	0,		SEN(add_key),			"add_key"		},
 [440] = { 4,	0,		SEN(request_key),		"request_key"		},
diff --git a/linux/arc/syscallent.h b/linux/arc/syscallent.h
index edcdff2..1b7fd77 100644
--- a/linux/arc/syscallent.h
+++ b/linux/arc/syscallent.h
@@ -3,6 +3,6 @@
 /* [244 ... 259] are arch specific */
 [244] = { 3,	0,	SEN(printargs),	"cacheflush"	},
 [245] = { 1,	0,	SEN(printargs),	"arc_settls"	},
-[246] = { 0,	0,	SEN(printargs),	"arc_gettls"	},
+[246] = { 0,	PU|NF,	SEN(printargs),	"arc_gettls"	},
 [247] = { 3,	0,	SEN(sysfs),	"sysfs"		},
 [248] = { 3,	0,	SEN(printargs),	"arc_usr_cmpxchg"},
diff --git a/linux/arch_defs_.h b/linux/arch_defs_.h
new file mode 100644
index 0000000..a66be26
--- /dev/null
+++ b/linux/arch_defs_.h
@@ -0,0 +1,33 @@
+/* Fallback file for arch-specific definitions.  */
+
+#ifndef HAVE_ARCH_GETRVAL2
+# define HAVE_ARCH_GETRVAL2 0
+#endif
+
+#ifndef HAVE_ARCH_OLD_MMAP
+# define HAVE_ARCH_OLD_MMAP 0
+#endif
+
+#ifndef HAVE_ARCH_OLD_MMAP_PGOFF
+# define HAVE_ARCH_OLD_MMAP_PGOFF 0
+#endif
+
+#ifndef HAVE_ARCH_OLD_SELECT
+# define HAVE_ARCH_OLD_SELECT 0
+#endif
+
+#ifndef HAVE_ARCH_UID16_SYSCALLS
+# define HAVE_ARCH_UID16_SYSCALLS 0
+#endif
+
+#ifndef DEFAULT_PERSONALITY
+# define DEFAULT_PERSONALITY 0
+#endif
+
+#ifndef SUPPORTED_PERSONALITIES
+# define SUPPORTED_PERSONALITIES 1
+#endif
+
+#ifndef HAVE_ARCH_DEDICATED_ERR_REG
+# define HAVE_ARCH_DEDICATED_ERR_REG 0
+#endif
diff --git a/linux/arch_kvm.c b/linux/arch_kvm.c
new file mode 100644
index 0000000..f12f32a
--- /dev/null
+++ b/linux/arch_kvm.c
@@ -0,0 +1,19 @@
+#ifdef HAVE_STRUCT_KVM_REGS
+static void
+arch_print_kvm_regs(struct tcb *const tcp,
+		    const kernel_ulong_t addr,
+		    const struct kvm_regs *const regs)
+{
+	printaddr(addr);
+}
+#endif	/* HAVE_STRUCT_KVM_REGS */
+
+#ifdef HAVE_STRUCT_KVM_SREGS
+static void
+arch_print_kvm_sregs(struct tcb *const tcp,
+		    const kernel_ulong_t addr,
+		    const struct kvm_sregs *const sregs)
+{
+	printaddr(addr);
+}
+#endif	/* HAVE_STRUCT_KVM_SREGS */
diff --git a/linux/arm/arch_defs_.h b/linux/arm/arch_defs_.h
new file mode 100644
index 0000000..a8e961f
--- /dev/null
+++ b/linux/arm/arch_defs_.h
@@ -0,0 +1,3 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/arm/get_scno.c b/linux/arm/get_scno.c
index 5f68069..2cd5c71 100644
--- a/linux/arm/get_scno.c
+++ b/linux/arm/get_scno.c
@@ -2,7 +2,7 @@
  * Copyright (c) 2003 Russell King <rmk@arm.linux.org.uk>
  * Copyright (c) 2011-2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2011-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -67,18 +67,13 @@
 
 #endif
 
-	scno = shuffle_scno(scno);
-
 	/*
 	 * Do some sanity checks to figure out
 	 * whether it's really a syscall entry.
 	 */
 	if (arm_regs.ARM_ip && !scno_in_range(scno)) {
-		if (debug_flag)
-			error_msg("pid %d stray syscall exit:"
-				  " ARM_ip = %ld, scno = %ld",
-				  tcp->pid, arm_regs.ARM_ip,
-				  shuffle_scno(scno));
+		debug_msg("pid %d stray syscall exit: ARM_ip = %ld, scno = %ld",
+			  tcp->pid, arm_regs.ARM_ip, scno);
 		return 0;
 	}
 
diff --git a/linux/arm/nr_prefix.c b/linux/arm/nr_prefix.c
new file mode 100644
index 0000000..99f571f
--- /dev/null
+++ b/linux/arm/nr_prefix.c
@@ -0,0 +1,12 @@
+static inline const char *
+nr_prefix(kernel_ulong_t scno)
+{
+	/*
+	 * For now, the set of syscalls that are shuffled is equivalent to the
+	 * set of syscalls that have __ARM_NR_ prefix.
+	 */
+	if (shuffle_scno(scno) != scno)
+		return "__ARM_NR_";
+	else
+		return "__NR_";
+}
diff --git a/linux/arm/shuffle_scno.c b/linux/arm/shuffle_scno.c
new file mode 100644
index 0000000..17a40d6
--- /dev/null
+++ b/linux/arm/shuffle_scno.c
@@ -0,0 +1,28 @@
+kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+	if (scno < ARM_FIRST_SHUFFLED_SYSCALL)
+		return scno;
+
+	/* __ARM_NR_cmpxchg? Swap with LAST_ORDINARY+1 */
+	if (scno == ARM_FIRST_SHUFFLED_SYSCALL)
+		return 0x000ffff0;
+	if (scno == 0x000ffff0)
+		return ARM_FIRST_SHUFFLED_SYSCALL;
+
+#define ARM_SECOND_SHUFFLED_SYSCALL (ARM_FIRST_SHUFFLED_SYSCALL + 1)
+	/*
+	 * Is it ARM specific syscall?
+	 * Swap [0x000f0000, 0x000f0000 + LAST_SPECIAL] range
+	 * with [SECOND_SHUFFLED, SECOND_SHUFFLED + LAST_SPECIAL] range.
+	 */
+	if (scno >= 0x000f0000 &&
+	    scno <= 0x000f0000 + ARM_LAST_SPECIAL_SYSCALL) {
+		return scno - 0x000f0000 + ARM_SECOND_SHUFFLED_SYSCALL;
+	}
+	if (scno <= ARM_SECOND_SHUFFLED_SYSCALL + ARM_LAST_SPECIAL_SYSCALL) {
+		return scno + 0x000f0000 - ARM_SECOND_SHUFFLED_SYSCALL;
+	}
+
+	return scno;
+}
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index c5b9564..76edf99 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -226,10 +226,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(geteuid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(geteuid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -250,7 +250,7 @@
 [220] = { 3,	TM,		SEN(madvise),			"madvise"		},
 [221] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [222 ... 223] = { },
-[224] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[224] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [225] = { 5,	TD,		SEN(readahead),			"readahead"		},
 [226] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [227] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -299,12 +299,12 @@
 [271] = { 3,	0,		SEN(printargs),			"pciconfig_iobase"	},
 [272] = { 5,	0,		SEN(printargs),			"pciconfig_read"	},
 [273] = { 5,	0,		SEN(printargs),			"pciconfig_write"	},
-[274] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[274] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [275] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[276] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[277] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[278] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[279] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[276] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[277] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[278] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[279] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [280] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [281] = { 3,	TN,		SEN(socket),			"socket"		},
 [282] = { 3,	TN,		SEN(bind),			"bind"			},
@@ -444,9 +444,10 @@
  * Remapped by shuffle_scno() to be directly after __ARM_NR_cmpxchg.
  */
 [ARM_FIRST_SHUFFLED_SYSCALL+1+0] = { },
-[ARM_FIRST_SHUFFLED_SYSCALL+1+1] = { 5,	0,	SEN(printargs),	"breakpoint"		},
-[ARM_FIRST_SHUFFLED_SYSCALL+1+2] = { 5,	0,	SEN(printargs),	"cacheflush"		},
-[ARM_FIRST_SHUFFLED_SYSCALL+1+3] = { 5,	0,	SEN(printargs),	"usr26"			},
-[ARM_FIRST_SHUFFLED_SYSCALL+1+4] = { 5,	0,	SEN(printargs),	"usr32"			},
-[ARM_FIRST_SHUFFLED_SYSCALL+1+5] = { 5,	0,	SEN(printargs),	"set_tls"		},
-#define ARM_LAST_SPECIAL_SYSCALL 5
+[ARM_FIRST_SHUFFLED_SYSCALL+1+1] = { 0,	0,	SEN(printargs),	"breakpoint"		},
+[ARM_FIRST_SHUFFLED_SYSCALL+1+2] = { 3,	TM,	SEN(printargs),	"cacheflush"		},
+[ARM_FIRST_SHUFFLED_SYSCALL+1+3] = { 0,	0,	SEN(printargs),	"usr26"			},
+[ARM_FIRST_SHUFFLED_SYSCALL+1+4] = { 0,	0,	SEN(printargs),	"usr32"			},
+[ARM_FIRST_SHUFFLED_SYSCALL+1+5] = { 1,	0,	SEN(printargs),	"set_tls"		},
+[ARM_FIRST_SHUFFLED_SYSCALL+1+6] = { 0,	PU|NF,	SEN(printargs),	"get_tls"		},
+#define ARM_LAST_SPECIAL_SYSCALL 6
diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h
index d75e5df..c9dc52c 100644
--- a/linux/avr32/syscallent.h
+++ b/linux/avr32/syscallent.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004-2009 Atmel Corporation
- * Copyright (c) 2009-2017 The strace developers.
+ * Copyright (c) 2009-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -46,11 +46,11 @@
 [ 17] = { 3,	TF,		SEN(chown),			"lchown"		},
 [ 18] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [ 19] = { 5,	TD,		SEN(llseek),			"_llseek"		},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount2),			"umount2"		},
 [ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -73,10 +73,10 @@
 [ 44] = { 5,	TP,		SEN(clone),			"clone"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [ 48] = { 2,	TF,		SEN(getcwd),			"getcwd"		},
-[ 49] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 1,	NF,		SEN(setfsuid),			"setfsuid"		},
 [ 53] = { 1,	NF,		SEN(setfsgid),			"setfsgid"		},
@@ -90,8 +90,8 @@
 [ 61] = { 2,	0,		SEN(setregid),			"setregid"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 4,	TS,		SEN(rt_sigaction),		"rt_sigaction"		},
 [ 68] = { 0,	TS,		SEN(rt_sigreturn),		"rt_sigreturn"		},
@@ -202,7 +202,7 @@
 [173] = { 3,	TM,		SEN(madvise),			"madvise"		},
 [174] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [175] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
-[176] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[176] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [177] = { 4,	TD,		SEN(readahead),			"readahead"		},
 [178] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [179] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -253,12 +253,12 @@
 [224] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
 [225] = { 3,	0,		SEN(printargs),			"cacheflush"		},
 [226] = { 5,	0,		SEN(vserver),			"vserver"		},
-[227] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[227] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [228] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[229] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[230] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[231] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[232] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[229] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[230] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[231] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[232] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [233] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [234] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [235] = { 5,	0,		SEN(add_key),			"add_key"		},
diff --git a/linux/bfin/arch_defs_.h b/linux/bfin/arch_defs_.h
new file mode 100644
index 0000000..d642058
--- /dev/null
+++ b/linux/bfin/arch_defs_.h
@@ -0,0 +1,2 @@
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/bfin/arch_rt_sigframe.c b/linux/bfin/arch_rt_sigframe.c
index d84b834..1692685 100644
--- a/linux/bfin/arch_rt_sigframe.c
+++ b/linux/bfin/arch_rt_sigframe.c
@@ -29,5 +29,5 @@
 {
 	unsigned long addr;
 
-	return upeek(tcp->pid, PT_USP, &addr) ? 0 : addr;
+	return upeek(tcp, PT_USP, &addr) ? 0 : addr;
 }
diff --git a/linux/bfin/get_scno.c b/linux/bfin/get_scno.c
index 8c3a7d2..c394889 100644
--- a/linux/bfin/get_scno.c
+++ b/linux/bfin/get_scno.c
@@ -2,5 +2,5 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	return upeek(tcp->pid, PT_ORIG_P0, &tcp->scno) < 0 ? -1 : 1;
+	return upeek(tcp, PT_ORIG_P0, &tcp->scno) < 0 ? -1 : 1;
 }
diff --git a/linux/bfin/get_syscall_args.c b/linux/bfin/get_syscall_args.c
index 69613d4..506d3a9 100644
--- a/linux/bfin/get_syscall_args.c
+++ b/linux/bfin/get_syscall_args.c
@@ -8,7 +8,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, argreg[i], &tcp->u_arg[i]) < 0)
+		if (upeek(tcp, argreg[i], &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
 }
diff --git a/linux/bfin/get_syscall_result.c b/linux/bfin/get_syscall_result.c
index c189a5f..5c814b4 100644
--- a/linux/bfin/get_syscall_result.c
+++ b/linux/bfin/get_syscall_result.c
@@ -1,5 +1,5 @@
 static int
 get_syscall_result_regs(struct tcb *tcp)
 {
-	return upeek(tcp->pid, PT_R0, &bfin_r0) < 0 ? -1 : 0;
+	return upeek(tcp, PT_R0, &bfin_r0) < 0 ? -1 : 0;
 }
diff --git a/linux/bfin/set_error.c b/linux/bfin/set_error.c
index 2bfecda..002d904 100644
--- a/linux/bfin/set_error.c
+++ b/linux/bfin/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	bfin_r0 = -tcp->u_error;
-	return upoke(tcp->pid, PT_R0, bfin_r0);
+	return upoke(tcp, PT_R0, bfin_r0);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
 	bfin_r0 = tcp->u_rval;
-	return upoke(tcp->pid, PT_R0, bfin_r0);
+	return upoke(tcp, PT_R0, bfin_r0);
 }
diff --git a/linux/bfin/set_scno.c b/linux/bfin/set_scno.c
index 4508be1..d63230f 100644
--- a/linux/bfin/set_scno.c
+++ b/linux/bfin/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, PT_ORIG_P0, scno);
+	return upoke(tcp, PT_ORIG_P0, scno);
 }
diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h
index b68443e..1ce2ff3 100644
--- a/linux/bfin/syscallent.h
+++ b/linux/bfin/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -226,10 +226,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"chown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(geteuid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(geteuid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -250,7 +250,7 @@
 [220] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [221] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [222 ... 223] = { },
-[224] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[224] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [225] = { 4,	TD,		SEN(readahead),			"readahead"		},
 [226] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [227] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -304,12 +304,12 @@
 [275] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [276] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [277] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[278] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[278] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [279] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[280] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[281] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[282] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[283] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[280] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[281] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[282] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[283] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [284] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [285] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [286] = { 5,	0,		SEN(add_key),			"add_key"		},
diff --git a/linux/crisv10/arch_regs.c b/linux/crisv10/arch_regs.c
deleted file mode 100644
index 9c372a3..0000000
--- a/linux/crisv10/arch_regs.c
+++ /dev/null
@@ -1,2 +0,0 @@
-static unsigned long cris_r10;
-#define ARCH_PC_PEEK_ADDR (4 * PT_IRP)
diff --git a/linux/crisv10/arch_sigreturn.c b/linux/crisv10/arch_sigreturn.c
deleted file mode 100644
index 0458c8e..0000000
--- a/linux/crisv10/arch_sigreturn.c
+++ /dev/null
@@ -1,16 +0,0 @@
-static void
-arch_sigreturn(struct tcb *tcp)
-{
-	unsigned long regs[PT_MAX + 1];
-
-	if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, regs) < 0) {
-		perror_msg("sigreturn: PTRACE_GETREGS");
-		return;
-	}
-	const unsigned long addr =
-		regs[PT_USP] + offsetof(struct sigcontext, oldmask);
-
-	tprints("{mask=");
-	print_sigset_addr(tcp, addr);
-	tprints("}");
-}
diff --git a/linux/crisv10/get_error.c b/linux/crisv10/get_error.c
deleted file mode 100644
index 2c81f1b..0000000
--- a/linux/crisv10/get_error.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "negated_errno.h"
-
-static void
-get_error(struct tcb *tcp, const bool check_errno)
-{
-	if (check_errno && is_negated_errno(cris_r10)) {
-		tcp->u_rval = -1;
-		tcp->u_error = -cris_r10;
-	} else {
-		tcp->u_rval = cris_r10;
-	}
-}
diff --git a/linux/crisv10/get_scno.c b/linux/crisv10/get_scno.c
deleted file mode 100644
index 14ff338..0000000
--- a/linux/crisv10/get_scno.c
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Return codes: 1 - ok, 0 - ignore, other - error. */
-static int
-arch_get_scno(struct tcb *tcp)
-{
-	return upeek(tcp->pid, 4 * PT_R9, &tcp->scno) < 0 ? -1 : 1;
-}
diff --git a/linux/crisv10/get_syscall_args.c b/linux/crisv10/get_syscall_args.c
deleted file mode 100644
index bdd0574..0000000
--- a/linux/crisv10/get_syscall_args.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Return -1 on error or 1 on success (never 0!). */
-static int
-get_syscall_args(struct tcb *tcp)
-{
-	static const int crisregs[MAX_ARGS] = {
-		4*PT_ORIG_R10, 4*PT_R11, 4*PT_R12,
-		4*PT_R13     , 4*PT_MOF, 4*PT_SRP
-	};
-	unsigned int i;
-
-	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, crisregs[i], &tcp->u_arg[i]) < 0)
-			return -1;
-	return 1;
-}
diff --git a/linux/crisv10/get_syscall_result.c b/linux/crisv10/get_syscall_result.c
deleted file mode 100644
index 6b3679c..0000000
--- a/linux/crisv10/get_syscall_result.c
+++ /dev/null
@@ -1,5 +0,0 @@
-static int
-get_syscall_result_regs(struct tcb *tcp)
-{
-	return upeek(tcp->pid, 4 * PT_R10, &cris_r10) < 0 ? -1 : 0;
-}
diff --git a/linux/crisv10/rt_sigframe.h b/linux/crisv10/rt_sigframe.h
deleted file mode 100644
index 6080bae..0000000
--- a/linux/crisv10/rt_sigframe.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2017 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_RT_SIGFRAME_H
-#define STRACE_RT_SIGFRAME_H
-
-#include <signal.h>
-
-typedef struct {
-	siginfo_t	*pinfo;
-	void		*puc;
-	siginfo_t	info;
-	ucontext_t	uc;
-	/* more data follows */
-} struct_rt_sigframe;
-
-#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/crisv10/set_error.c b/linux/crisv10/set_error.c
deleted file mode 100644
index 3a14a87..0000000
--- a/linux/crisv10/set_error.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static int
-arch_set_error(struct tcb *tcp)
-{
-	cris_r10 = -tcp->u_error;
-	return upoke(tcp->pid, 4 * PT_R10, cris_r10);
-}
-
-static int
-arch_set_success(struct tcb *tcp)
-{
-	cris_r10 = tcp->u_rval;
-	return upoke(tcp->pid, 4 * PT_R10, cris_r10);
-}
diff --git a/linux/crisv10/set_scno.c b/linux/crisv10/set_scno.c
deleted file mode 100644
index 0de38fa..0000000
--- a/linux/crisv10/set_scno.c
+++ /dev/null
@@ -1,5 +0,0 @@
-static int
-arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
-{
-	return upoke(tcp->pid, 4 * PT_R9, scno);
-}
diff --git a/linux/crisv10/syscallent.h b/linux/crisv10/syscallent.h
deleted file mode 100644
index 0232d2f..0000000
--- a/linux/crisv10/syscallent.h
+++ /dev/null
@@ -1,358 +0,0 @@
-[  0] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
-[  1] = { 1,	TP|SE,		SEN(exit),			"exit"			},
-[  2] = { 0,	TP,		SEN(fork),			"fork"			},
-[  3] = { 3,	TD,		SEN(read),			"read"			},
-[  4] = { 3,	TD,		SEN(write),			"write"			},
-[  5] = { 3,	TD|TF,		SEN(open),			"open"			},
-[  6] = { 1,	TD,		SEN(close),			"close"			},
-[  7] = { 3,	TP,		SEN(waitpid),			"waitpid"		},
-[  8] = { 2,	TD|TF,		SEN(creat),			"creat"			},
-[  9] = { 2,	TF,		SEN(link),			"link"			},
-[ 10] = { 1,	TF,		SEN(unlink),			"unlink"		},
-[ 11] = { 3,	TF|TP|SE|SI,	SEN(execve),			"execve"		},
-[ 12] = { 1,	TF,		SEN(chdir),			"chdir"			},
-[ 13] = { 1,	0,		SEN(time),			"time"			},
-[ 14] = { 3,	TF,		SEN(mknod),			"mknod"			},
-[ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
-[ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
-[ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
-[ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
-[ 21] = { 5,	TF,		SEN(mount),			"mount"			},
-[ 22] = { 1,	TF,		SEN(umount),			"umount"		},
-[ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
-[ 25] = { 1,	0,		SEN(stime),			"stime"			},
-[ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
-[ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD|TFST|TSTA,	SEN(oldfstat),			"oldfstat"		},
-[ 29] = { 0,	TS,		SEN(pause),			"pause"			},
-[ 30] = { 2,	TF,		SEN(utime),			"utime"			},
-[ 31] = { 2,	0,		SEN(stty),			"stty"			},
-[ 32] = { 2,	0,		SEN(gtty),			"gtty"			},
-[ 33] = { 2,	TF,		SEN(access),			"access"		},
-[ 34] = { 1,	0,		SEN(nice),			"nice"			},
-[ 35] = { 0,	0,		SEN(ftime),			"ftime"			},
-[ 36] = { 0,	0,		SEN(sync),			"sync"			},
-[ 37] = { 2,	TS,		SEN(kill),			"kill"			},
-[ 38] = { 2,	TF,		SEN(rename),			"rename"		},
-[ 39] = { 2,	TF,		SEN(mkdir),			"mkdir"			},
-[ 40] = { 1,	TF,		SEN(rmdir),			"rmdir"			},
-[ 41] = { 1,	TD,		SEN(dup),			"dup"			},
-[ 42] = { 1,	TD,		SEN(pipe),			"pipe"			},
-[ 43] = { 1,	0,		SEN(times),			"times"			},
-[ 44] = { 0,	0,		SEN(prof),			"prof"			},
-[ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
-[ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
-[ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
-[ 51] = { 1,	TF,		SEN(acct),			"acct"			},
-[ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
-[ 53] = { 0,	0,		SEN(lock),			"lock"			},
-[ 54] = { 3,	TD,		SEN(ioctl),			"ioctl"			},
-[ 55] = { 3,	TD,		SEN(fcntl),			"fcntl"			},
-[ 56] = { 0,	0,		SEN(mpx),			"mpx"			},
-[ 57] = { 2,	0,		SEN(setpgid),			"setpgid"		},
-[ 58] = { 2,	0,		SEN(ulimit),			"ulimit"		},
-[ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
-[ 60] = { 1,	NF,		SEN(umask),			"umask"			},
-[ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
-[ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
-[ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
-[ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
-[ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
-[ 70] = { 2,	0,		SEN(setreuid16),		"setreuid"		},
-[ 71] = { 2,	0,		SEN(setregid16),		"setregid"		},
-[ 72] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
-[ 73] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
-[ 74] = { 2,	0,		SEN(sethostname),		"sethostname"		},
-[ 75] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
-[ 76] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
-[ 77] = { 2,	0,		SEN(getrusage),			"getrusage"		},
-[ 78] = { 2,	0,		SEN(gettimeofday),		"gettimeofday"		},
-[ 79] = { 2,	0,		SEN(settimeofday),		"settimeofday"		},
-[ 80] = { 2,	0,		SEN(getgroups16),		"getgroups"		},
-[ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
-[ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
-[ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF|TLST|TSTA,	SEN(oldlstat),			"oldlstat"		},
-[ 85] = { 3,	TF,		SEN(readlink),			"readlink"		},
-[ 86] = { 1,	TF,		SEN(uselib),			"uselib"		},
-[ 87] = { 2,	TF,		SEN(swapon),			"swapon"		},
-[ 88] = { 4,	0,		SEN(reboot),			"reboot"		},
-[ 89] = { 3,	TD,		SEN(readdir),			"readdir"		},
-[ 90] = { 1,	TD|TM|SI,	SEN(old_mmap),			"mmap"			},
-[ 91] = { 2,	TM|SI,		SEN(munmap),			"munmap"		},
-[ 92] = { 2,	TF,		SEN(truncate),			"truncate"		},
-[ 93] = { 2,	TD,		SEN(ftruncate),			"ftruncate"		},
-[ 94] = { 2,	TD,		SEN(fchmod),			"fchmod"		},
-[ 95] = { 3,	TD,		SEN(fchown16),			"fchown"		},
-[ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
-[ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
-[ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
-[100] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
-[101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
-[102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
-[103] = { 3,	0,		SEN(syslog),			"syslog"		},
-[104] = { 3,	0,		SEN(setitimer),			"setitimer"		},
-[105] = { 2,	0,		SEN(getitimer),			"getitimer"		},
-[106] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
-[107] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
-[108] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
-[109] = { 1,	0,		SEN(olduname),			"olduname"		},
-[110] = { 1,	0,		SEN(iopl),			"iopl"			},
-[111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
-[112] = { 0,	0,		SEN(idle),			"idle"			},
-[113] = { 5,	0,		SEN(vm86),			"vm86"			},
-[114] = { 4,	TP,		SEN(wait4),			"wait4"			},
-[115] = { 1,	TF,		SEN(swapoff),			"swapoff"		},
-[116] = { 1,	0,		SEN(sysinfo),			"sysinfo"		},
-[117] = { 6,	TI,		SEN(ipc),			"ipc"			},
-[118] = { 1,	TD,		SEN(fsync),			"fsync"			},
-[119] = { 0,	TS,		SEN(sigreturn),			"sigreturn"		},
-[120] = { 5,	TP,		SEN(clone),			"clone"			},
-[121] = { 2,	0,		SEN(setdomainname),		"setdomainname"		},
-[122] = { 1,	0,		SEN(uname),			"uname"			},
-[123] = { 3,	0,		SEN(modify_ldt),		"modify_ldt"		},
-[124] = { 1,	0,		SEN(adjtimex),			"adjtimex"		},
-[125] = { 3,	TM|SI,		SEN(mprotect),			"mprotect"		},
-[126] = { 3,	TS,		SEN(sigprocmask),		"sigprocmask"		},
-[127] = { 2,	0,		SEN(create_module),		"create_module"		},
-[128] = { 3,	0,		SEN(init_module),		"init_module"		},
-[129] = { 2,	0,		SEN(delete_module),		"delete_module"		},
-[130] = { 1,	0,		SEN(get_kernel_syms),		"get_kernel_syms"	},
-[131] = { 4,	TF,		SEN(quotactl),			"quotactl"		},
-[132] = { 1,	0,		SEN(getpgid),			"getpgid"		},
-[133] = { 1,	TD,		SEN(fchdir),			"fchdir"		},
-[134] = { 2,	0,		SEN(bdflush),			"bdflush"		},
-[135] = { 3,	0,		SEN(sysfs),			"sysfs"			},
-[136] = { 1,	NF,		SEN(personality),		"personality"		},
-[137] = { 5,	0,		SEN(afs_syscall),		"afs_syscall"		},
-[138] = { 1,	NF,		SEN(setfsuid16),		"setfsuid"		},
-[139] = { 1,	NF,		SEN(setfsgid16),		"setfsgid"		},
-[140] = { 5,	TD,		SEN(llseek),			"_llseek"		},
-[141] = { 3,	TD,		SEN(getdents),			"getdents"		},
-[142] = { 5,	TD,		SEN(select),			"_newselect"		},
-[143] = { 2,	TD,		SEN(flock),			"flock"			},
-[144] = { 3,	TM,		SEN(msync),			"msync"			},
-[145] = { 3,	TD,		SEN(readv),			"readv"			},
-[146] = { 3,	TD,		SEN(writev),			"writev"		},
-[147] = { 1,	0,		SEN(getsid),			"getsid"		},
-[148] = { 1,	TD,		SEN(fdatasync),			"fdatasync"		},
-[149] = { 1,	0,		SEN(sysctl),			"_sysctl"		},
-[150] = { 2,	TM,		SEN(mlock),			"mlock"			},
-[151] = { 2,	TM,		SEN(munlock),			"munlock"		},
-[152] = { 1,	TM,		SEN(mlockall),			"mlockall"		},
-[153] = { 0,	TM,		SEN(munlockall),		"munlockall"		},
-[154] = { 2,	0,		SEN(sched_setparam),		"sched_setparam"	},
-[155] = { 2,	0,		SEN(sched_getparam),		"sched_getparam"	},
-[156] = { 3,	0,		SEN(sched_setscheduler),	"sched_setscheduler"	},
-[157] = { 1,	0,		SEN(sched_getscheduler),	"sched_getscheduler"	},
-[158] = { 0,	0,		SEN(sched_yield),		"sched_yield"		},
-[159] = { 1,	0,		SEN(sched_get_priority_max),	"sched_get_priority_max"},
-[160] = { 1,	0,		SEN(sched_get_priority_min),	"sched_get_priority_min"},
-[161] = { 2,	0,		SEN(sched_rr_get_interval),	"sched_rr_get_interval"	},
-[162] = { 2,	0,		SEN(nanosleep),			"nanosleep"		},
-[163] = { 5,	TM|SI,		SEN(mremap),			"mremap"		},
-[164] = { 3,	0,		SEN(setresuid16),		"setresuid"		},
-[165] = { 3,	0,		SEN(getresuid16),		"getresuid"		},
-[167] = { 5,	0,		SEN(query_module),		"query_module"		},
-[168] = { 3,	TD,		SEN(poll),			"poll"			},
-[169] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
-[170] = { 3,	0,		SEN(setresgid16),		"setresgid"		},
-[171] = { 3,	0,		SEN(getresgid16),		"getresgid"		},
-[172] = { 5,	0,		SEN(prctl),			"prctl"			},
-[173] = { 0,	TS,		SEN(rt_sigreturn),		"rt_sigreturn"		},
-[174] = { 4,	TS,		SEN(rt_sigaction),		"rt_sigaction"		},
-[175] = { 4,	TS,		SEN(rt_sigprocmask),		"rt_sigprocmask"	},
-[176] = { 2,	TS,		SEN(rt_sigpending),		"rt_sigpending"		},
-[177] = { 4,	TS,		SEN(rt_sigtimedwait),		"rt_sigtimedwait"	},
-[178] = { 3,	TS,		SEN(rt_sigqueueinfo),		"rt_sigqueueinfo"	},
-[179] = { 2,	TS,		SEN(rt_sigsuspend),		"rt_sigsuspend"		},
-[180] = { 5,	TD,		SEN(pread),			"pread64"		},
-[181] = { 5,	TD,		SEN(pwrite),			"pwrite64"		},
-[182] = { 3,	TF,		SEN(chown16),			"chown"			},
-[183] = { 2,	TF,		SEN(getcwd),			"getcwd"		},
-[184] = { 2,	0,		SEN(capget),			"capget"		},
-[185] = { 2,	0,		SEN(capset),			"capset"		},
-[186] = { 2,	TS,		SEN(sigaltstack),		"sigaltstack"		},
-[187] = { 4,	TD|TN,		SEN(sendfile),			"sendfile"		},
-[188] = { 5,	TN,		SEN(getpmsg),			"getpmsg"		},
-[189] = { 5,	TN,		SEN(putpmsg),			"putpmsg"		},
-[190] = { 0,	TP,		SEN(vfork),			"vfork"			},
-[191] = { 2,	0,		SEN(getrlimit),			"ugetrlimit"		},
-[192] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
-[193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
-[194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
-[196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
-[198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(getegid),			"getegid32"		},
-[203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
-[204] = { 2,	0,		SEN(setregid),			"setregid32"		},
-[205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
-[206] = { 2,	0,		SEN(setgroups),			"setgroups32"		},
-[207] = { 3,	TD,		SEN(fchown),			"fchown32"		},
-[208] = { 3,	0,		SEN(setresuid),			"setresuid32"		},
-[209] = { 3,	0,		SEN(getresuid),			"getresuid32"		},
-[210] = { 3,	0,		SEN(setresgid),			"setresgid32"		},
-[211] = { 3,	0,		SEN(getresgid),			"getresgid32"		},
-[212] = { 3,	TF,		SEN(chown),			"chown32"		},
-[213] = { 1,	0,		SEN(setuid),			"setuid32"		},
-[214] = { 1,	0,		SEN(setgid),			"setgid32"		},
-[215] = { 1,	NF,		SEN(setfsuid),			"setfsuid32"		},
-[216] = { 1,	NF,		SEN(setfsgid),			"setfsgid32"		},
-[217] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
-[218] = { 3,	TM,		SEN(mincore),			"mincore"		},
-[219] = { 3,	TM,		SEN(madvise),			"madvise"		},
-[220] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
-[221] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
-[224] = { 0,	NF,		SEN(gettid),			"gettid"		},
-[225] = { 4,	TD,		SEN(readahead),			"readahead"		},
-[226] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
-[227] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
-[228] = { 5,	TD,		SEN(fsetxattr),			"fsetxattr"		},
-[229] = { 4,	TF,		SEN(getxattr),			"getxattr"		},
-[230] = { 4,	TF,		SEN(getxattr),			"lgetxattr"		},
-[231] = { 4,	TD,		SEN(fgetxattr),			"fgetxattr"		},
-[232] = { 3,	TF,		SEN(listxattr),			"listxattr"		},
-[233] = { 3,	TF,		SEN(listxattr),			"llistxattr"		},
-[234] = { 3,	TD,		SEN(flistxattr),		"flistxattr"		},
-[235] = { 2,	TF,		SEN(removexattr),		"removexattr"		},
-[236] = { 2,	TF,		SEN(removexattr),		"lremovexattr"		},
-[237] = { 2,	TD,		SEN(fremovexattr),		"fremovexattr"		},
-[238] = { 2,	TS,		SEN(kill),			"tkill"			},
-[239] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
-[240] = { 6,	0,		SEN(futex),			"futex"			},
-[241] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
-[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,	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"		},
-[250] = { 5,	TD,		SEN(fadvise64),			"fadvise64"		},
-[252] = { 1,	TP|SE,		SEN(exit),			"exit_group"		},
-[253] = { 4,	0,		SEN(lookup_dcookie),		"lookup_dcookie"	},
-[254] = { 1,	TD,		SEN(epoll_create),		"epoll_create"		},
-[255] = { 4,	TD,		SEN(epoll_ctl),			"epoll_ctl"		},
-[256] = { 4,	TD,		SEN(epoll_wait),		"epoll_wait"		},
-[257] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
-[258] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
-[259] = { 3,	0,		SEN(timer_create),		"timer_create"		},
-[260] = { 4,	0,		SEN(timer_settime),		"timer_settime"		},
-[261] = { 2,	0,		SEN(timer_gettime),		"timer_gettime"		},
-[262] = { 1,	0,		SEN(timer_getoverrun),		"timer_getoverrun"	},
-[263] = { 1,	0,		SEN(timer_delete),		"timer_delete"		},
-[264] = { 2,	0,		SEN(clock_settime),		"clock_settime"		},
-[265] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
-[266] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
-[267] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[268] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
-[269] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
-[270] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
-[271] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[272] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
-[273] = { 5,	0,		SEN(vserver),			"vserver"		},
-[274] = { 6,	TM,		SEN(mbind),			"mbind"			},
-[275] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
-[276] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[277] = { 4,	0,		SEN(mq_open),			"mq_open"		},
-[278] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[279] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[280] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[281] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[282] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
-[283] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
-[284] = { 5,	TP,		SEN(waitid),			"waitid"		},
-[286] = { 5,	0,		SEN(add_key),			"add_key"		},
-[287] = { 4,	0,		SEN(request_key),		"request_key"		},
-[288] = { 5,	0,		SEN(keyctl),			"keyctl"		},
-[289] = { 3,	0,		SEN(ioprio_set),		"ioprio_set"		},
-[290] = { 2,	0,		SEN(ioprio_get),		"ioprio_get"		},
-[291] = { 0,	TD,		SEN(inotify_init),		"inotify_init"		},
-[292] = { 3,	TD|TF,		SEN(inotify_add_watch),		"inotify_add_watch"	},
-[293] = { 2,	TD,		SEN(inotify_rm_watch),		"inotify_rm_watch"	},
-[294] = { 4,	TM,		SEN(migrate_pages),		"migrate_pages"		},
-[295] = { 4,	TD|TF,		SEN(openat),			"openat"		},
-[296] = { 3,	TD|TF,		SEN(mkdirat),			"mkdirat"		},
-[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|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
-[301] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
-[302] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
-[303] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
-[304] = { 3,	TD|TF,		SEN(symlinkat),			"symlinkat"		},
-[305] = { 4,	TD|TF,		SEN(readlinkat),		"readlinkat"		},
-[306] = { 3,	TD|TF,		SEN(fchmodat),			"fchmodat"		},
-[307] = { 3,	TD|TF,		SEN(faccessat),			"faccessat"		},
-[308] = { 6,	TD,		SEN(pselect6),			"pselect6"		},
-[309] = { 5,	TD,		SEN(ppoll),			"ppoll"			},
-[310] = { 1,	TP,		SEN(unshare),			"unshare"		},
-[311] = { 2,	0,		SEN(set_robust_list),		"set_robust_list"	},
-[312] = { 3,	0,		SEN(get_robust_list),		"get_robust_list"	},
-[313] = { 6,	TD,		SEN(splice),			"splice"		},
-[314] = { 6,	TD,		SEN(sync_file_range),		"sync_file_range"	},
-[315] = { 4,	TD,		SEN(tee),			"tee"			},
-[316] = { 4,	TD,		SEN(vmsplice),			"vmsplice"		},
-[317] = { 6,	TM,		SEN(move_pages),		"move_pages"		},
-[318] = { 3,	0,		SEN(getcpu),			"getcpu"		},
-[319] = { 6,	TD,		SEN(epoll_pwait),		"epoll_pwait"		},
-[320] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
-[321] = { 3,	TD|TS,		SEN(signalfd),			"signalfd"		},
-[322] = { 2,	TD,		SEN(timerfd_create),		"timerfd_create"	},
-[323] = { 1,	TD,		SEN(eventfd),			"eventfd"		},
-[324] = { 6,	TD,		SEN(fallocate),			"fallocate"		},
-[325] = { 4,	TD,		SEN(timerfd_settime),		"timerfd_settime"	},
-[326] = { 2,	TD,		SEN(timerfd_gettime),		"timerfd_gettime"	},
-[327] = { 4,	TD|TS,		SEN(signalfd4),			"signalfd4"		},
-[328] = { 2,	TD,		SEN(eventfd2),			"eventfd2"		},
-[329] = { 1,	TD,		SEN(epoll_create1),		"epoll_create1"		},
-[330] = { 3,	TD,		SEN(dup3),			"dup3"			},
-[331] = { 2,	TD,		SEN(pipe2),			"pipe2"			},
-[332] = { 1,	TD,		SEN(inotify_init1),		"inotify_init1"		},
-[333] = { 5,	TD,		SEN(preadv),			"preadv"		},
-[334] = { 5,	TD,		SEN(pwritev),			"pwritev"		},
-[335] = { 2,	TD,		SEN(setns),			"setns"			},
-[336] = { 5,	TD|TF,		SEN(name_to_handle_at),		"name_to_handle_at"	},
-[337] = { 3,	TD,		SEN(open_by_handle_at),		"open_by_handle_at"	},
-[338] = { 4,	TP|TS,		SEN(rt_tgsigqueueinfo),		"rt_tgsigqueueinfo"	},
-[339] = { 5,	TD,		SEN(perf_event_open),		"perf_event_open"	},
-[340] = { 5,	TN,		SEN(recvmmsg),			"recvmmsg"		},
-[341] = { 4,	TN,		SEN(accept4),			"accept4"		},
-[342] = { 2,	TD,		SEN(fanotify_init),		"fanotify_init"		},
-[343] = { 6,	TD|TF,		SEN(fanotify_mark),		"fanotify_mark"		},
-[344] = { 4,	0,		SEN(prlimit64),			"prlimit64"		},
-[345] = { 2,	0,		SEN(clock_adjtime),		"clock_adjtime"		},
-[346] = { 1,	TD,		SEN(syncfs),			"syncfs"		},
-[347] = { 4,	TN,		SEN(sendmmsg),			"sendmmsg"		},
-[348] = { 6,	0,		SEN(process_vm_readv),		"process_vm_readv"	},
-[349] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
-[350] = { 5,	0,		SEN(kcmp),			"kcmp"			},
-[351] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
-[352] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
-[353] = { 4,	0,		SEN(sched_getattr),		"sched_getattr"		},
-[354] = { 5,	TD|TF,		SEN(renameat2),			"renameat2"		},
-[355] = { 3,	0,		SEN(seccomp),			"seccomp"		},
-[356] = { 3,	0,		SEN(getrandom),			"getrandom"		},
-[357] = { 2,	TD,		SEN(memfd_create),		"memfd_create"		},
-[358] = { 3,	TD,		SEN(bpf),			"bpf"			},
-[359] = { 5,	TD|TF|TP|SE|SI,	SEN(execveat),			"execveat"		},
-
-#define SYS_socket_subcall	400
-#include "subcall.h"
diff --git a/linux/crisv10/userent.h b/linux/crisv10/userent.h
deleted file mode 100644
index bea16ae..0000000
--- a/linux/crisv10/userent.h
+++ /dev/null
@@ -1,26 +0,0 @@
-XLAT(4*PT_FRAMETYPE),
-XLAT(4*PT_ORIG_R10),
-XLAT(4*PT_R13),
-XLAT(4*PT_R12),
-XLAT(4*PT_R11),
-XLAT(4*PT_R10),
-XLAT(4*PT_R9),
-XLAT(4*PT_R8),
-XLAT(4*PT_R7),
-XLAT(4*PT_R6),
-XLAT(4*PT_R5),
-XLAT(4*PT_R4),
-XLAT(4*PT_R3),
-XLAT(4*PT_R2),
-XLAT(4*PT_R1),
-XLAT(4*PT_R0),
-XLAT(4*PT_MOF),
-XLAT(4*PT_DCCR),
-XLAT(4*PT_SRP),
-XLAT(4*PT_IRP),
-XLAT(4*PT_CSRINSTR),
-XLAT(4*PT_CSRADDR),
-XLAT(4*PT_CSRDATA),
-XLAT(4*PT_USP),
-/* Other fields in "struct user" */
-#include "../userent0.h"
diff --git a/linux/crisv32/arch_regs.c b/linux/crisv32/arch_regs.c
deleted file mode 100644
index 8e59c15..0000000
--- a/linux/crisv32/arch_regs.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "crisv10/arch_regs.c"
-#define ARCH_PC_PEEK_ADDR (4 * PT_ERP)
diff --git a/linux/crisv32/arch_rt_sigframe.c b/linux/crisv32/arch_rt_sigframe.c
deleted file mode 100644
index 2f45746..0000000
--- a/linux/crisv32/arch_rt_sigframe.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/arch_rt_sigframe.c"
diff --git a/linux/crisv32/arch_sigreturn.c b/linux/crisv32/arch_sigreturn.c
deleted file mode 100644
index 6c0fc03..0000000
--- a/linux/crisv32/arch_sigreturn.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/arch_sigreturn.c"
diff --git a/linux/crisv32/get_error.c b/linux/crisv32/get_error.c
deleted file mode 100644
index f7bb1e0..0000000
--- a/linux/crisv32/get_error.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/get_error.c"
diff --git a/linux/crisv32/get_scno.c b/linux/crisv32/get_scno.c
deleted file mode 100644
index edfd60f..0000000
--- a/linux/crisv32/get_scno.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/get_scno.c"
diff --git a/linux/crisv32/get_syscall_args.c b/linux/crisv32/get_syscall_args.c
deleted file mode 100644
index 4d98465..0000000
--- a/linux/crisv32/get_syscall_args.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/get_syscall_args.c"
diff --git a/linux/crisv32/get_syscall_result.c b/linux/crisv32/get_syscall_result.c
deleted file mode 100644
index ebefdb2..0000000
--- a/linux/crisv32/get_syscall_result.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/get_syscall_result.c"
diff --git a/linux/crisv32/rt_sigframe.h b/linux/crisv32/rt_sigframe.h
deleted file mode 100644
index bfe07d4..0000000
--- a/linux/crisv32/rt_sigframe.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/rt_sigframe.h"
diff --git a/linux/crisv32/set_error.c b/linux/crisv32/set_error.c
deleted file mode 100644
index 18a5ee8..0000000
--- a/linux/crisv32/set_error.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/set_error.c"
diff --git a/linux/crisv32/set_scno.c b/linux/crisv32/set_scno.c
deleted file mode 100644
index b021adf..0000000
--- a/linux/crisv32/set_scno.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/set_scno.c"
diff --git a/linux/crisv32/syscallent.h b/linux/crisv32/syscallent.h
deleted file mode 100644
index ce4e528..0000000
--- a/linux/crisv32/syscallent.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "crisv10/syscallent.h"
diff --git a/linux/crisv32/userent.h b/linux/crisv32/userent.h
deleted file mode 100644
index 3c5949e..0000000
--- a/linux/crisv32/userent.h
+++ /dev/null
@@ -1,43 +0,0 @@
-XLAT(4*PT_ORIG_R10),
-XLAT(4*PT_R0),
-XLAT(4*PT_R1),
-XLAT(4*PT_R2),
-XLAT(4*PT_R3),
-XLAT(4*PT_R4),
-XLAT(4*PT_R5),
-XLAT(4*PT_R6),
-XLAT(4*PT_R7),
-XLAT(4*PT_R8),
-XLAT(4*PT_R9),
-XLAT(4*PT_R10),
-XLAT(4*PT_R11),
-XLAT(4*PT_R12),
-XLAT(4*PT_R13),
-XLAT(4*PT_ACR),
-XLAT(4*PT_SRS),
-XLAT(4*PT_MOF),
-XLAT(4*PT_SPC),
-XLAT(4*PT_CCS),
-XLAT(4*PT_SRP),
-XLAT(4*PT_ERP),
-XLAT(4*PT_EXS),
-XLAT(4*PT_EDA),
-XLAT(4*PT_USP),
-XLAT(4*PT_PPC),
-XLAT(4*PT_BP_CTRL),
-XLAT(4*PT_BP+4),
-XLAT(4*PT_BP+8),
-XLAT(4*PT_BP+12),
-XLAT(4*PT_BP+16),
-XLAT(4*PT_BP+20),
-XLAT(4*PT_BP+24),
-XLAT(4*PT_BP+28),
-XLAT(4*PT_BP+32),
-XLAT(4*PT_BP+36),
-XLAT(4*PT_BP+40),
-XLAT(4*PT_BP+44),
-XLAT(4*PT_BP+48),
-XLAT(4*PT_BP+52),
-XLAT(4*PT_BP+56),
-/* Other fields in "struct user" */
-#include "../userent0.h"
diff --git a/linux/hppa/arch_defs_.h b/linux/hppa/arch_defs_.h
new file mode 100644
index 0000000..3a9bc3b
--- /dev/null
+++ b/linux/hppa/arch_defs_.h
@@ -0,0 +1 @@
+#define HAVE_ARCH_SA_RESTORER 0
diff --git a/linux/hppa/arch_rt_sigframe.c b/linux/hppa/arch_rt_sigframe.c
index e3c62fa..aaf2ffe 100644
--- a/linux/hppa/arch_rt_sigframe.c
+++ b/linux/hppa/arch_rt_sigframe.c
@@ -36,6 +36,6 @@
 {
 	unsigned long addr;
 
-	return upeek(tcp->pid, 4 * 30, &addr)
+	return upeek(tcp, 4 * 30, &addr)
 		? 0 : (addr & ~1UL) - RT_SIGFRAME_SIZE;
 }
diff --git a/linux/hppa/get_scno.c b/linux/hppa/get_scno.c
index 7da2fc4..fb3ed56 100644
--- a/linux/hppa/get_scno.c
+++ b/linux/hppa/get_scno.c
@@ -2,5 +2,5 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	return upeek(tcp->pid, PT_GR20, &tcp->scno) < 0 ? -1 : 1;
+	return upeek(tcp, PT_GR20, &tcp->scno) < 0 ? -1 : 1;
 }
diff --git a/linux/hppa/get_syscall_args.c b/linux/hppa/get_syscall_args.c
index 2258ea8..aa938f5 100644
--- a/linux/hppa/get_syscall_args.c
+++ b/linux/hppa/get_syscall_args.c
@@ -5,7 +5,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, PT_GR26-4*i, &tcp->u_arg[i]) < 0)
+		if (upeek(tcp, PT_GR26-4*i, &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
 }
diff --git a/linux/hppa/get_syscall_result.c b/linux/hppa/get_syscall_result.c
index 0d15d4d..de2b882 100644
--- a/linux/hppa/get_syscall_result.c
+++ b/linux/hppa/get_syscall_result.c
@@ -1,5 +1,5 @@
 static int
 get_syscall_result_regs(struct tcb *tcp)
 {
-	return upeek(tcp->pid, PT_GR28, &hppa_r28) < 0 ? -1 : 0;
+	return upeek(tcp, PT_GR28, &hppa_r28) < 0 ? -1 : 0;
 }
diff --git a/linux/hppa/set_error.c b/linux/hppa/set_error.c
index 92a7979..edaada7 100644
--- a/linux/hppa/set_error.c
+++ b/linux/hppa/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	hppa_r28 = -tcp->u_error;
-	return upoke(tcp->pid, PT_GR28, hppa_r28);
+	return upoke(tcp, PT_GR28, hppa_r28);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
 	hppa_r28 = tcp->u_rval;
-	return upoke(tcp->pid, PT_GR28, hppa_r28);
+	return upoke(tcp, PT_GR28, hppa_r28);
 }
diff --git a/linux/hppa/set_scno.c b/linux/hppa/set_scno.c
index d4d873b..fcf8f43 100644
--- a/linux/hppa/set_scno.c
+++ b/linux/hppa/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, PT_GR20, scno);
+	return upoke(tcp, PT_GR20, scno);
 }
diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h
index 8925338..70fe690 100644
--- a/linux/hppa/syscallent.h
+++ b/linux/hppa/syscallent.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2001 Hewlett-Packard, Matthew Wilcox
- * Copyright (c) 2001-2017 The strace developers.
+ * Copyright (c) 2001-2018 The strace developers.
  */
 
 [  0] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
@@ -23,11 +23,11 @@
 [ 17] = { 3,	TN,		SEN(socket),			"socket"		},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 3,	TN,		SEN(bind),			"bind"			},
 [ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -50,10 +50,10 @@
 [ 44] = { 3,	TN,		SEN(getsockname),		"getsockname"		},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 3,	TN,		SEN(getpeername),		"getpeername"		},
@@ -67,8 +67,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -209,7 +209,7 @@
 [203] = { 5,	0,		SEN(printargs),			"attrctl"		},
 [204] = { 5,	0,		SEN(printargs),			"acl_get"		},
 [205] = { 5,	0,		SEN(printargs),			"acl_set"		},
-[206] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[206] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [207] = { 4,	TD,		SEN(readahead),			"readahead"		},
 [208] = { 2,	TS,		SEN(kill),			"tkill"			},
 [209] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
@@ -232,12 +232,12 @@
 [226] = { 4,	TD,		SEN(epoll_wait),		"epoll_wait"		},
 [227] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
 [228] = { 4,	TI,		SEN(semtimedop),		"semtimedop"		},
-[229] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[229] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [230] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[231] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[232] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[233] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[234] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[231] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[232] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[233] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[234] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [235] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [236] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
 [237] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
diff --git a/linux/i386/arch_defs_.h b/linux/i386/arch_defs_.h
new file mode 100644
index 0000000..a8e961f
--- /dev/null
+++ b/linux/i386/arch_defs_.h
@@ -0,0 +1,3 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/i386/arch_kvm.c b/linux/i386/arch_kvm.c
new file mode 100644
index 0000000..e8e982e
--- /dev/null
+++ b/linux/i386/arch_kvm.c
@@ -0,0 +1 @@
+#include "x86_64/arch_kvm.c"
diff --git a/linux/i386/set_error.c b/linux/i386/set_error.c
index 92b0a8d..7d47e28 100644
--- a/linux/i386/set_error.c
+++ b/linux/i386/set_error.c
@@ -3,7 +3,7 @@
 {
 	i386_regs.eax = -tcp->u_error;
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, 4 * EAX, i386_regs.eax);
+	return upoke(tcp, 4 * EAX, i386_regs.eax);
 #else
 	return set_regs(tcp->pid);
 #endif
@@ -14,7 +14,7 @@
 {
 	i386_regs.eax = tcp->u_rval;
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, 4 * EAX, i386_regs.eax);
+	return upoke(tcp, 4 * EAX, i386_regs.eax);
 #else
 	return set_regs(tcp->pid);
 #endif
diff --git a/linux/i386/set_scno.c b/linux/i386/set_scno.c
index 3abe776..67736ea 100644
--- a/linux/i386/set_scno.c
+++ b/linux/i386/set_scno.c
@@ -2,7 +2,7 @@
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, 4 * ORIG_EAX, scno);
+	return upoke(tcp, 4 * ORIG_EAX, scno);
 #else
 	i386_regs.orig_eax = scno;
 	return set_regs(tcp->pid);
diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h
index 6c5725a..b00e1d8 100644
--- a/linux/i386/syscallent.h
+++ b/linux/i386/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -226,10 +226,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(getegid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(getegid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -250,7 +250,7 @@
 [220] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [221] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [222 ... 223] = { },
-[224] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[224] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [225] = { 4,	TD,		SEN(readahead),			"readahead"		},
 [226] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [227] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -303,12 +303,12 @@
 [274] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [275] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [276] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[277] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[277] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [278] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[279] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[280] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[281] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[282] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[279] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[280] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[281] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[282] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [283] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [284] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [285] = { }, /* sys_setaltroot */
diff --git a/linux/ia64/arch_defs_.h b/linux/ia64/arch_defs_.h
new file mode 100644
index 0000000..8674172
--- /dev/null
+++ b/linux/ia64/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_GETRVAL2 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define HAVE_ARCH_SA_RESTORER 0
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/ia64/arch_regs.c b/linux/ia64/arch_regs.c
index deec176..b79918e 100644
--- a/linux/ia64/arch_regs.c
+++ b/linux/ia64/arch_regs.c
@@ -1,8 +1,5 @@
 static struct pt_all_user_regs ia64_regs;
 unsigned long *const ia64_frame_ptr = &ia64_regs.gr[12];
 
-#define IA64_PSR_IS	(1UL << 34)
-#define ia64_ia32mode	(ia64_regs.cr_ipsr & IA64_PSR_IS)
-
 #define ARCH_REGS_FOR_GETREGS ia64_regs
 #define ARCH_PC_REG ia64_regs.br[0]
diff --git a/linux/ia64/get_error.c b/linux/ia64/get_error.c
index 41cae92..6111077 100644
--- a/linux/ia64/get_error.c
+++ b/linux/ia64/get_error.c
@@ -3,20 +3,10 @@
 static void
 get_error(struct tcb *tcp, const bool check_errno)
 {
-	if (ia64_ia32mode) {
-		int err = ia64_regs.gr[8];
-		if (check_errno && is_negated_errno(err)) {
-			tcp->u_rval = -1;
-			tcp->u_error = -err;
-		} else {
-			tcp->u_rval = err;
-		}
+	if (ia64_regs.gr[10]) {
+		tcp->u_rval = -1;
+		tcp->u_error = ia64_regs.gr[8];
 	} else {
-		if (ia64_regs.gr[10]) {
-			tcp->u_rval = -1;
-			tcp->u_error = ia64_regs.gr[8];
-		} else {
-			tcp->u_rval = ia64_regs.gr[8];
-		}
+		tcp->u_rval = ia64_regs.gr[8];
 	}
 }
diff --git a/linux/ia64/get_scno.c b/linux/ia64/get_scno.c
index 0ddc17a..88f2cad 100644
--- a/linux/ia64/get_scno.c
+++ b/linux/ia64/get_scno.c
@@ -2,6 +2,6 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	tcp->scno = ia64_ia32mode ? ia64_regs.gr[0] : ia64_regs.gr[15];
+	tcp->scno = ia64_regs.gr[15];
 	return 1;
 }
diff --git a/linux/ia64/get_syscall_args.c b/linux/ia64/get_syscall_args.c
index 1b942eb..ad73c54 100644
--- a/linux/ia64/get_syscall_args.c
+++ b/linux/ia64/get_syscall_args.c
@@ -1,29 +1,26 @@
+#include <asm/rse.h>
+
 /* Return -1 on error or 1 on success (never 0!). */
 static int
 get_syscall_args(struct tcb *tcp)
 {
-	if (!ia64_ia32mode) {
-		unsigned long *rbs_end =
-			(unsigned long *) ia64_regs.ar[PT_AUR_BSP];
-		unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
-		unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
-		unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
-		unsigned int i;
+	unsigned long *rbs_end =
+		(unsigned long *) ia64_regs.ar[PT_AUR_BSP];
+	unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
+	unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
+	unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
+	unsigned int i;
 
-		for (i = 0; i < tcp->s_ent->nargs; ++i) {
-			if (umove(tcp,
-				  (unsigned long) ia64_rse_skip_regs(out0, i),
-				  &tcp->u_arg[i]) < 0)
+	for (i = 0; i < tcp->s_ent->nargs; ++i) {
+		if (umove(tcp,
+			  (unsigned long) ia64_rse_skip_regs(out0, i),
+			  &tcp->u_arg[i]) < 0) {
+			if (errno == EPERM)
+				tcp->u_arg[i] = 0;
+			else
 				return -1;
 		}
-	} else {
-		/* truncate away IVE sign-extension */
-		tcp->u_arg[0] = 0xffffffff & ia64_regs.gr[11]; /* EBX */
-		tcp->u_arg[1] = 0xffffffff & ia64_regs.gr[ 9]; /* ECX */
-		tcp->u_arg[2] = 0xffffffff & ia64_regs.gr[10]; /* EDX */
-		tcp->u_arg[3] = 0xffffffff & ia64_regs.gr[14]; /* ESI */
-		tcp->u_arg[4] = 0xffffffff & ia64_regs.gr[15]; /* EDI */
-		tcp->u_arg[5] = 0xffffffff & ia64_regs.gr[13]; /* EBP */
 	}
+
 	return 1;
 }
diff --git a/linux/ia64/set_error.c b/linux/ia64/set_error.c
index c566b63..6934499 100644
--- a/linux/ia64/set_error.c
+++ b/linux/ia64/set_error.c
@@ -1,12 +1,9 @@
 static int
 arch_set_error(struct tcb *tcp)
 {
-	if (ia64_ia32mode) {
-		ia64_regs.gr[8] = -tcp->u_error;
-	} else {
-		ia64_regs.gr[8] = tcp->u_error;
-		ia64_regs.gr[10] = -1;
-	}
+	ia64_regs.gr[8] = tcp->u_error;
+	ia64_regs.gr[10] = -1;
+
 	return set_regs(tcp->pid);
 }
 
@@ -14,8 +11,7 @@
 arch_set_success(struct tcb *tcp)
 {
 	ia64_regs.gr[8] = tcp->u_rval;
-	if (!ia64_ia32mode) {
-		ia64_regs.gr[10] = 0;
-	}
+	ia64_regs.gr[10] = 0;
+
 	return set_regs(tcp->pid);
 }
diff --git a/linux/ia64/set_scno.c b/linux/ia64/set_scno.c
index 1af7b02..8e0f9c4 100644
--- a/linux/ia64/set_scno.c
+++ b/linux/ia64/set_scno.c
@@ -1,10 +1,7 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	if (ia64_ia32mode)
-		ia64_regs.gr[0] = scno;
-	else
-		ia64_regs.gr[15] = scno;
+	ia64_regs.gr[15] = scno;
 
 	return set_regs(tcp->pid);
 }
diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h
index 7ca4e39..33b3e8d 100644
--- a/linux/ia64/syscallent.h
+++ b/linux/ia64/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1999, 2001 Hewlett-Packard Co
  *                          David Mosberger-Tang <davidm@hpl.hp.com>
- * Copyright (c) 2000-2017 The strace developers.
+ * Copyright (c) 2000-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -59,13 +59,13 @@
 [1038] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [1039] = { 3,	TF,		SEN(chown),			"chown"			},
 [1040] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[1041] = { 0,	NF,		SEN(getpid),			"getpid"		},
-[1042] = { 0,	NF,		SEN(getppid),			"getppid"		},
+[1041] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
+[1042] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
 [1043] = { 5,	TF,		SEN(mount),			"mount"			},
 [1044] = { 2,	TF,		SEN(umount2),			"umount"		},
 [1045] = { 1,	0,		SEN(setuid),			"setuid"		},
-[1046] = { 0,	NF,		SEN(getuid),			"getuid"		},
-[1047] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
+[1046] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
+[1047] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
 [1048] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [1049] = { 2,	TF,		SEN(access),			"access"		},
 [1050] = { 0,	0,		SEN(sync),			"sync"			},
@@ -80,8 +80,8 @@
 [1059] = { 1,	0,		SEN(times),			"times"			},
 [1060] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [1061] = { 1,	0,		SEN(setgid),			"setgid"		},
-[1062] = { 0,	NF,		SEN(getgid),			"getgid"		},
-[1063] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[1062] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
+[1063] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [1064] = { 1,	TF,		SEN(acct),			"acct"			},
 [1065] = { 3,	TD,		SEN(ioctl),			"ioctl"			},
 [1066] = { 3,	TD,		SEN(fcntl),			"fcntl"			},
@@ -123,7 +123,7 @@
 [1102] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [1103] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
 [1104] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
-[1105] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[1105] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [1106] = { 3,	TI,		SEN(semget),			"semget"		},
 [1107] = { 3,	TI,		SEN(semop),			"semop"			},
 [1108] = { 4,	TI,		SEN(semctl),			"semctl"		},
@@ -189,7 +189,7 @@
 [1168] = { 2,	0,		SEN(nanosleep),			"nanosleep"		},
 [1169] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
 [1170] = { 5,	0,		SEN(prctl),			"prctl"			},
-[1171] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
+[1171] = { 0,	PU|NF,		SEN(getpagesize),		"getpagesize"		},
 [1172] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
 [1173] = { 5,	0,		SEN(printargs),			"pciconfig_read"	},
 [1174] = { 5,	0,		SEN(printargs),			"pciconfig_write"	},
@@ -280,12 +280,12 @@
 [1259] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [1260] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [1261] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[1262] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[1262] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [1263] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[1264] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[1265] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[1266] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[1267] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[1264] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[1265] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[1266] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[1267] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [1268] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [1269] = { 5,	0,		SEN(vserver),			"vserver"		},
 [1270] = { 5,	TP,		SEN(waitid),			"waitid"		},
diff --git a/linux/m68k/arch_defs_.h b/linux/m68k/arch_defs_.h
new file mode 100644
index 0000000..67e815c
--- /dev/null
+++ b/linux/m68k/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define HAVE_ARCH_SA_RESTORER 1
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index dc532c7..b8bad1b 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -193,7 +193,7 @@
 [163] = { 5,	TM|SI,		SEN(mremap),			"mremap"		},
 [164] = { 3,	0,		SEN(setresuid16),		"setresuid"		},
 [165] = { 3,	0,		SEN(getresuid16),		"getresuid"		},
-[166] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
+[166] = { 0,	PU|NF,		SEN(getpagesize),		"getpagesize"		},
 [167] = { 5,	0,		SEN(query_module),		"query_module"		},
 [168] = { 3,	TD,		SEN(poll),			"poll"			},
 [169] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
@@ -226,10 +226,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"chown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(geteuid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(geteuid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -247,7 +247,7 @@
 [217] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [218 ... 219] = { },
 [220] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
-[221] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[221] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [222] = { 2,	TS,		SEN(kill),			"tkill"			},
 [223] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [224] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -297,12 +297,12 @@
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [269] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [270] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[271] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[271] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [272] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[273] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[274] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[275] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[276] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[273] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[274] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[275] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[276] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [277] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [278] = { 5,	0,		SEN(vserver),			"vserver"		},
 [279] = { 5,	0,		SEN(add_key),			"add_key"		},
@@ -359,7 +359,7 @@
 [330] = { 5,	TD,		SEN(pwritev),			"pwritev"		},
 [331] = { 4,	TP|TS,		SEN(rt_tgsigqueueinfo),		"rt_tgsigqueueinfo"	},
 [332] = { 5,	TD,		SEN(perf_event_open),		"perf_event_open"	},
-[333] = { 0,	0,		SEN(get_thread_area),		"get_thread_area"	},
+[333] = { 0,	PU|NF,		SEN(get_thread_area),		"get_thread_area"	},
 [334] = { 1,	0,		SEN(set_thread_area),		"set_thread_area"	},
 [335] = { 6,	0,		SEN(printargs),			"atomic_cmpxchg_32"	},
 [336] = { 0,	0,		SEN(printargs),			"atomic_barrier"	},
diff --git a/linux/metag/syscallent.h b/linux/metag/syscallent.h
index 82ad55b..723cfe3 100644
--- a/linux/metag/syscallent.h
+++ b/linux/metag/syscallent.h
@@ -3,4 +3,4 @@
 [245] = { 2,	0,	SEN(printargs),	"metag_setglobalbit"	},
 [246] = { 1,	0,	SEN(printargs),	"metag_set_fpu_flags"	},
 [247] = { 1,	0,	SEN(printargs),	"metag_set_tls"		},
-[248] = { 0,	NF,	SEN(printargs),	"metag_get_tls"		},
+[248] = { 0,	PU|NF,	SEN(printargs),	"metag_get_tls"		},
diff --git a/linux/microblaze/arch_defs_.h b/linux/microblaze/arch_defs_.h
new file mode 100644
index 0000000..d642058
--- /dev/null
+++ b/linux/microblaze/arch_defs_.h
@@ -0,0 +1,2 @@
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/microblaze/arch_rt_sigframe.c b/linux/microblaze/arch_rt_sigframe.c
index 10d03db..dcecd1a 100644
--- a/linux/microblaze/arch_rt_sigframe.c
+++ b/linux/microblaze/arch_rt_sigframe.c
@@ -29,5 +29,5 @@
 {
 	unsigned long addr;
 
-	return upeek(tcp->pid, 4 * 1, &addr) ? 0 : addr;
+	return upeek(tcp, 4 * 1, &addr) ? 0 : addr;
 }
diff --git a/linux/microblaze/arch_sigreturn.c b/linux/microblaze/arch_sigreturn.c
index 6e4343a..2792073 100644
--- a/linux/microblaze/arch_sigreturn.c
+++ b/linux/microblaze/arch_sigreturn.c
@@ -6,7 +6,7 @@
 	unsigned long addr;
 
 	/* Read r1, the stack pointer.  */
-	if (upeek(tcp->pid, 1 * 4, &addr) < 0)
+	if (upeek(tcp, 1 * 4, &addr) < 0)
 		return;
 	addr += offsetof(struct sigcontext, oldmask);
 
diff --git a/linux/microblaze/get_scno.c b/linux/microblaze/get_scno.c
index 6f98f83..6c11cd4 100644
--- a/linux/microblaze/get_scno.c
+++ b/linux/microblaze/get_scno.c
@@ -2,5 +2,5 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	return upeek(tcp->pid, 0, &tcp->scno) < 0 ? -1 : 1;
+	return upeek(tcp, 0, &tcp->scno) < 0 ? -1 : 1;
 }
diff --git a/linux/microblaze/get_syscall_args.c b/linux/microblaze/get_syscall_args.c
index 830c8c3..1a3a48f 100644
--- a/linux/microblaze/get_syscall_args.c
+++ b/linux/microblaze/get_syscall_args.c
@@ -5,7 +5,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, (5 + i) * 4, &tcp->u_arg[i]) < 0)
+		if (upeek(tcp, (5 + i) * 4, &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
 }
diff --git a/linux/microblaze/get_syscall_result.c b/linux/microblaze/get_syscall_result.c
index 9ece53e..5b593a4 100644
--- a/linux/microblaze/get_syscall_result.c
+++ b/linux/microblaze/get_syscall_result.c
@@ -1,5 +1,5 @@
 static int
 get_syscall_result_regs(struct tcb *tcp)
 {
-	return upeek(tcp->pid, 3 * 4, &microblaze_r3) < 0 ? -1 : 0;
+	return upeek(tcp, 3 * 4, &microblaze_r3) < 0 ? -1 : 0;
 }
diff --git a/linux/microblaze/set_error.c b/linux/microblaze/set_error.c
index 4686671..5bb83b5 100644
--- a/linux/microblaze/set_error.c
+++ b/linux/microblaze/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	microblaze_r3 = -tcp->u_error;
-	return upoke(tcp->pid, 3 * 4, microblaze_r3);
+	return upoke(tcp, 3 * 4, microblaze_r3);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
 	microblaze_r3 = tcp->u_rval;
-	return upoke(tcp->pid, 3 * 4, microblaze_r3);
+	return upoke(tcp, 3 * 4, microblaze_r3);
 }
diff --git a/linux/microblaze/set_scno.c b/linux/microblaze/set_scno.c
index b9cddef..4f69a52 100644
--- a/linux/microblaze/set_scno.c
+++ b/linux/microblaze/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, 0, scno);
+	return upoke(tcp, 0, scno);
 }
diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h
index 4c7b9ad..4c645f4 100644
--- a/linux/microblaze/syscallent.h
+++ b/linux/microblaze/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -226,10 +226,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(geteuid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(geteuid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -250,7 +250,7 @@
 [220] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [221] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [222 ... 223] = { },
-[224] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[224] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [225] = { 4,	TD,		SEN(readahead),			"readahead"		},
 [226] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [227] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -303,12 +303,12 @@
 [274] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [275] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [276] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[277] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[277] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [278] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[279] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[280] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[281] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[282] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[279] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[280] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[281] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[282] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [283] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [284] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [285] = { },
diff --git a/linux/mips/arch_defs_.h b/linux/mips/arch_defs_.h
new file mode 100644
index 0000000..f6fe59e
--- /dev/null
+++ b/linux/mips/arch_defs_.h
@@ -0,0 +1,2 @@
+#define HAVE_ARCH_GETRVAL2 1
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h
index 748e09c..c7d35ad 100644
--- a/linux/mips/syscallent-n32.h
+++ b/linux/mips/syscallent-n32.h
@@ -234,12 +234,12 @@
 [6231] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [6232] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [6233] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[6234] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[6234] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [6235] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[6236] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[6237] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[6238] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[6239] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[6236] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[6237] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[6238] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[6239] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [6240] = { 5,	0,		SEN(vserver),			"vserver"		},
 [6241] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [6242] = { },
diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h
index cc09366..3e55848 100644
--- a/linux/mips/syscallent-n64.h
+++ b/linux/mips/syscallent-n64.h
@@ -230,12 +230,12 @@
 [5227] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [5228] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [5229] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[5230] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[5230] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [5231] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[5232] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[5233] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[5234] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[5235] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[5232] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[5233] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[5234] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[5235] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [5236] = { 5,	0,		SEN(vserver),			"vserver"		},
 [5237] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [5238] = { },
diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h
index 5ac79b5..4041907 100644
--- a/linux/mips/syscallent-o32.h
+++ b/linux/mips/syscallent-o32.h
@@ -1,5 +1,6 @@
 #if defined LINUX_MIPSO32
 /* For an O32 strace, decode the o32 syscalls.  */
+# define SYS_syscall_subcall	4000
 [4000] = { MA,	0,		SEN(syscall),			"syscall"		}, /* start of Linux o32 */
 [4001] = { 1,	TP|SE,		SEN(exit),			"exit"			},
 [4002] = { 0,	TP,		SEN(fork),			"fork"			},
@@ -271,12 +272,12 @@
 [4268] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [4269] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [4270] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[4271] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[4271] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [4272] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[4273] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[4274] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[4275] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[4276] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[4273] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[4274] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[4275] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[4276] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [4277] = { 5,	0,		SEN(vserver),			"vserver"		},
 [4278] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [4279] = { },
diff --git a/linux/mtd-abi.h b/linux/mtd-abi.h
deleted file mode 100644
index a63a99a..0000000
--- a/linux/mtd-abi.h
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (c) 1999-2010 David Woodhouse <dwmw2@infradead.org> et al.
- * Copyright (c) 2010-2017 The strace developers.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- *
- */
-
-#ifndef __MTD_ABI_H__
-#define __MTD_ABI_H__
-
-#include <linux/types.h>
-
-struct erase_info_user {
-	__u32 start;
-	__u32 length;
-};
-
-struct erase_info_user64 {
-	__u64 start;
-	__u64 length;
-};
-
-struct mtd_oob_buf {
-	__u32 start;
-	__u32 length;
-	unsigned char *ptr;
-};
-
-struct mtd_oob_buf64 {
-	__u64 start;
-	__u32 pad;
-	__u32 length;
-	__u64 usr_ptr;
-};
-
-/**
- * MTD operation modes
- *
- * @MTD_OPS_PLACE_OOB:	OOB data are placed at the given offset (default)
- * @MTD_OPS_AUTO_OOB:	OOB data are automatically placed at the free areas
- *			which are defined by the internal ecclayout
- * @MTD_OPS_RAW:	data are transferred as-is, with no error correction;
- *			this mode implies %MTD_OPS_PLACE_OOB
- *
- * These modes can be passed to ioctl(MEMWRITE) and are also used internally.
- * See notes on "MTD file modes" for discussion on %MTD_OPS_RAW vs.
- * %MTD_FILE_MODE_RAW.
- */
-enum {
-	MTD_OPS_PLACE_OOB = 0,
-	MTD_OPS_AUTO_OOB = 1,
-	MTD_OPS_RAW = 2,
-};
-
-/**
- * struct mtd_write_req - data structure for requesting a write operation
- *
- * @start:	start address
- * @len:	length of data buffer
- * @ooblen:	length of OOB buffer
- * @usr_data:	user-provided data buffer
- * @usr_oob:	user-provided OOB buffer
- * @mode:	MTD mode (see "MTD operation modes")
- * @padding:	reserved, must be set to 0
- *
- * This structure supports ioctl(MEMWRITE) operations, allowing data and/or OOB
- * writes in various modes. To write to OOB-only, set @usr_data == NULL, and to
- * write data-only, set @usr_oob == NULL. However, setting both @usr_data and
- * @usr_oob to NULL is not allowed.
- */
-struct mtd_write_req {
-	__u64 start;
-	__u64 len;
-	__u64 ooblen;
-	__u64 usr_data;
-	__u64 usr_oob;
-	__u8 mode;
-	__u8 padding[7];
-};
-
-#define MTD_ABSENT		0
-#define MTD_RAM			1
-#define MTD_ROM			2
-#define MTD_NORFLASH		3
-#define MTD_NANDFLASH		4
-#define MTD_DATAFLASH		6
-#define MTD_UBIVOLUME		7
-#define MTD_MLCNANDFLASH	8
-
-#define MTD_WRITEABLE		0x400	/* Device is writeable */
-#define MTD_BIT_WRITEABLE	0x800	/* Single bits can be flipped */
-#define MTD_NO_ERASE		0x1000	/* No erase necessary */
-#define MTD_POWERUP_LOCK	0x2000	/* Always locked after reset */
-
-/* Some common devices / combinations of capabilities */
-#define MTD_CAP_ROM		0
-#define MTD_CAP_RAM		(MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
-#define MTD_CAP_NORFLASH	(MTD_WRITEABLE | MTD_BIT_WRITEABLE)
-#define MTD_CAP_NANDFLASH	(MTD_WRITEABLE)
-
-/* Obsolete ECC byte placement modes (used with obsolete MEMGETOOBSEL) */
-#define MTD_NANDECC_OFF		0	// Switch off ECC (Not recommended)
-#define MTD_NANDECC_PLACE	1	// Use the given placement in the structure (YAFFS1 legacy mode)
-#define MTD_NANDECC_AUTOPLACE	2	// Use the default placement scheme
-#define MTD_NANDECC_PLACEONLY	3	// Use the given placement in the structure (Do not store ecc result on read)
-#define MTD_NANDECC_AUTOPL_USR	4	// Use the given autoplacement scheme rather than using the default
-
-/* OTP mode selection */
-#define MTD_OTP_OFF		0
-#define MTD_OTP_FACTORY		1
-#define MTD_OTP_USER		2
-
-struct mtd_info_user {
-	__u8 type;
-	__u32 flags;
-	__u32 size;	/* Total size of the MTD */
-	__u32 erasesize;
-	__u32 writesize;
-	__u32 oobsize;	/* Amount of OOB data per block (e.g. 16) */
-	__u64 padding;	/* Old obsolete field; do not use */
-};
-
-struct region_info_user {
-	__u32 offset;		/* At which this region starts,
-				 * from the beginning of the MTD */
-	__u32 erasesize;	/* For this region */
-	__u32 numblocks;	/* Number of blocks in this region */
-	__u32 regionindex;
-};
-
-struct otp_info {
-	__u32 start;
-	__u32 length;
-	__u32 locked;
-};
-
-/*
- * Note, the following ioctl existed in the past and was removed:
- * #define MEMSETOOBSEL           _IOW('M', 9, struct nand_oobinfo)
- * Try to avoid adding a new ioctl with the same ioctl number.
- */
-
-/* Get basic MTD characteristics info (better to use sysfs) */
-#define MEMGETINFO		_IOR('M', 1, struct mtd_info_user)
-/* Erase segment of MTD */
-#define MEMERASE		_IOW('M', 2, struct erase_info_user)
-/* Write out-of-band data from MTD */
-#define MEMWRITEOOB		_IOWR('M', 3, struct mtd_oob_buf)
-/* Read out-of-band data from MTD */
-#define MEMREADOOB		_IOWR('M', 4, struct mtd_oob_buf)
-/* Lock a chip (for MTD that supports it) */
-#define MEMLOCK			_IOW('M', 5, struct erase_info_user)
-/* Unlock a chip (for MTD that supports it) */
-#define MEMUNLOCK		_IOW('M', 6, struct erase_info_user)
-/* Get the number of different erase regions */
-#define MEMGETREGIONCOUNT	_IOR('M', 7, int)
-/* Get information about the erase region for a specific index */
-#define MEMGETREGIONINFO	_IOWR('M', 8, struct region_info_user)
-/* Get info about OOB modes (e.g., RAW, PLACE, AUTO) - legacy interface */
-#define MEMGETOOBSEL		_IOR('M', 10, struct nand_oobinfo)
-/* Check if an eraseblock is bad */
-#define MEMGETBADBLOCK		_IOW('M', 11, __kernel_loff_t)
-/* Mark an eraseblock as bad */
-#define MEMSETBADBLOCK		_IOW('M', 12, __kernel_loff_t)
-/* Set OTP (One-Time Programmable) mode (factory vs. user) */
-#define OTPSELECT		_IOR('M', 13, int)
-/* Get number of OTP (One-Time Programmable) regions */
-#define OTPGETREGIONCOUNT	_IOW('M', 14, int)
-/* Get all OTP (One-Time Programmable) info about MTD */
-#define OTPGETREGIONINFO	_IOW('M', 15, struct otp_info)
-/* Lock a given range of user data (must be in mode %MTD_FILE_MODE_OTP_USER) */
-#define OTPLOCK			_IOR('M', 16, struct otp_info)
-/* Get ECC layout (deprecated) */
-#define ECCGETLAYOUT		_IOR('M', 17, struct nand_ecclayout_user)
-/* Get statistics about corrected/uncorrected errors */
-#define ECCGETSTATS		_IOR('M', 18, struct mtd_ecc_stats)
-/* Set MTD mode on a per-file-descriptor basis (see "MTD file modes") */
-#define MTDFILEMODE		_IO('M', 19)
-/* Erase segment of MTD (supports 64-bit address) */
-#define MEMERASE64		_IOW('M', 20, struct erase_info_user64)
-/* Write data to OOB (64-bit version) */
-#define MEMWRITEOOB64		_IOWR('M', 21, struct mtd_oob_buf64)
-/* Read data from OOB (64-bit version) */
-#define MEMREADOOB64		_IOWR('M', 22, struct mtd_oob_buf64)
-/* Check if chip is locked (for MTD that supports it) */
-#define MEMISLOCKED		_IOR('M', 23, struct erase_info_user)
-/*
- * Most generic write interface; can write in-band and/or out-of-band in various
- * modes (see "struct mtd_write_req"). This ioctl is not supported for flashes
- * without OOB, e.g., NOR flash.
- */
-#define MEMWRITE		_IOWR('M', 24, struct mtd_write_req)
-
-/*
- * Obsolete legacy interface. Keep it in order not to break userspace
- * interfaces
- */
-struct nand_oobinfo {
-	__u32 useecc;
-	__u32 eccbytes;
-	__u32 oobfree[8][2];
-	__u32 eccpos[32];
-};
-
-struct nand_oobfree {
-	__u32 offset;
-	__u32 length;
-};
-
-#define MTD_MAX_OOBFREE_ENTRIES	8
-#define MTD_MAX_ECCPOS_ENTRIES	64
-/*
- * OBSOLETE: ECC layout control structure. Exported to user-space via ioctl
- * ECCGETLAYOUT for backwards compatbility and should not be mistaken as a
- * complete set of ECC information. The ioctl truncates the larger internal
- * structure to retain binary compatibility with the static declaration of the
- * ioctl. Note that the "MTD_MAX_..._ENTRIES" macros represent the max size of
- * the user struct, not the MAX size of the internal struct nand_ecclayout.
- */
-struct nand_ecclayout_user {
-	__u32 eccbytes;
-	__u32 eccpos[MTD_MAX_ECCPOS_ENTRIES];
-	__u32 oobavail;
-	struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
-};
-
-/**
- * struct mtd_ecc_stats - error correction stats
- *
- * @corrected:	number of corrected bits
- * @failed:	number of uncorrectable errors
- * @badblocks:	number of bad blocks in this partition
- * @bbtblocks:	number of blocks reserved for bad block tables
- */
-struct mtd_ecc_stats {
-	__u32 corrected;
-	__u32 failed;
-	__u32 badblocks;
-	__u32 bbtblocks;
-};
-
-/*
- * MTD file modes - for read/write access to MTD
- *
- * @MTD_FILE_MODE_NORMAL:	OTP disabled, ECC enabled
- * @MTD_FILE_MODE_OTP_FACTORY:	OTP enabled in factory mode
- * @MTD_FILE_MODE_OTP_USER:	OTP enabled in user mode
- * @MTD_FILE_MODE_RAW:		OTP disabled, ECC disabled
- *
- * These modes can be set via ioctl(MTDFILEMODE). The mode mode will be retained
- * separately for each open file descriptor.
- *
- * Note: %MTD_FILE_MODE_RAW provides the same functionality as %MTD_OPS_RAW -
- * raw access to the flash, without error correction or autoplacement schemes.
- * Wherever possible, the MTD_OPS_* mode will override the MTD_FILE_MODE_* mode
- * (e.g., when using ioctl(MEMWRITE)), but in some cases, the MTD_FILE_MODE is
- * used out of necessity (e.g., `write()', ioctl(MEMWRITEOOB64)).
- */
-enum mtd_file_modes {
-	MTD_FILE_MODE_NORMAL = MTD_OTP_OFF,
-	MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
-	MTD_FILE_MODE_OTP_USER = MTD_OTP_USER,
-	MTD_FILE_MODE_RAW,
-};
-
-#endif /* __MTD_ABI_H__ */
diff --git a/linux/nios2/arch_defs_.h b/linux/nios2/arch_defs_.h
new file mode 100644
index 0000000..2bd4e4a
--- /dev/null
+++ b/linux/nios2/arch_defs_.h
@@ -0,0 +1 @@
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/nr_prefix.c b/linux/nr_prefix.c
new file mode 100644
index 0000000..f22814f
--- /dev/null
+++ b/linux/nr_prefix.c
@@ -0,0 +1,11 @@
+/**
+ * Returns prefix for a syscall constant literal.  It is has to be that way
+ * thanks to ARM that decided to prefix their special system calls like sys32
+ * and sys26 with __ARM_NR_* prefix instead of __NR_*, so we can't simply print
+ * "__NR_".
+ */
+static inline const char *
+nr_prefix(kernel_ulong_t scno)
+{
+	return "__NR_";
+}
diff --git a/linux/personality.h b/linux/personality.h
deleted file mode 100644
index 09b35c6..0000000
--- a/linux/personality.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef _LINUX_PERSONALITY_H
-#define _LINUX_PERSONALITY_H
-
-
-/*
- * Flags for bug emulation.
- *
- * These occupy the top three bytes.
- */
-enum {
-	UNAME26 =		0x0020000,
-	ADDR_NO_RANDOMIZE =	0x0040000,	/* disable randomization of VA space */
-	FDPIC_FUNCPTRS =	0x0080000,	/* userspace function ptrs point to descriptors
-						 * (signal handling)
-						 */
-	MMAP_PAGE_ZERO =	0x0100000,
-	ADDR_COMPAT_LAYOUT =	0x0200000,
-	READ_IMPLIES_EXEC =	0x0400000,
-	ADDR_LIMIT_32BIT =	0x0800000,
-	SHORT_INODE =		0x1000000,
-	WHOLE_SECONDS =		0x2000000,
-	STICKY_TIMEOUTS =	0x4000000,
-	ADDR_LIMIT_3GB =	0x8000000,
-};
-
-/*
- * Security-relevant compatibility flags that must be
- * cleared upon setuid or setgid exec:
- */
-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
-			    ADDR_NO_RANDOMIZE  | \
-			    ADDR_COMPAT_LAYOUT | \
-			    MMAP_PAGE_ZERO)
-
-/*
- * Personality types.
- *
- * These go in the low byte.  Avoid using the top bit, it will
- * conflict with error returns.
- */
-enum {
-	PER_LINUX =		0x0000,
-	PER_LINUX_32BIT =	0x0000 | ADDR_LIMIT_32BIT,
-	PER_LINUX_FDPIC =	0x0000 | FDPIC_FUNCPTRS,
-	PER_SVR4 =		0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
-	PER_SVR3 =		0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
-	PER_SCOSVR3 =		0x0003 | STICKY_TIMEOUTS |
-					 WHOLE_SECONDS | SHORT_INODE,
-	PER_OSR5 =		0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
-	PER_WYSEV386 =		0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
-	PER_ISCR4 =		0x0005 | STICKY_TIMEOUTS,
-	PER_BSD =		0x0006,
-	PER_SUNOS =		0x0006 | STICKY_TIMEOUTS,
-	PER_XENIX =		0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
-	PER_LINUX32 =		0x0008,
-	PER_LINUX32_3GB =	0x0008 | ADDR_LIMIT_3GB,
-	PER_IRIX32 =		0x0009 | STICKY_TIMEOUTS,/* IRIX5 32-bit */
-	PER_IRIXN32 =		0x000a | STICKY_TIMEOUTS,/* IRIX6 new 32-bit */
-	PER_IRIX64 =		0x000b | STICKY_TIMEOUTS,/* IRIX6 64-bit */
-	PER_RISCOS =		0x000c,
-	PER_SOLARIS =		0x000d | STICKY_TIMEOUTS,
-	PER_UW7 =		0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
-	PER_OSF4 =		0x000f,			 /* OSF/1 v4 */
-	PER_HPUX =		0x0010,
-	PER_MASK =		0x00ff,
-};
-
-
-#endif /* _LINUX_PERSONALITY_H */
diff --git a/linux/powerpc/arch_defs_.h b/linux/powerpc/arch_defs_.h
new file mode 100644
index 0000000..ef3f342
--- /dev/null
+++ b/linux/powerpc/arch_defs_.h
@@ -0,0 +1,2 @@
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/powerpc/getregs_old.c b/linux/powerpc/getregs_old.c
index 1730f03..4485ca6 100644
--- a/linux/powerpc/getregs_old.c
+++ b/linux/powerpc/getregs_old.c
@@ -3,29 +3,29 @@
  * we provide a slow fallback for old kernels.
  */
 static int
-getregs_old(pid_t pid)
+getregs_old(struct tcb *tcp)
 {
 	int i;
 	long r;
 
 	if (iflag) {
-		r = upeek(pid, sizeof(long) * PT_NIP, &ppc_regs.nip);
+		r = upeek(tcp, sizeof(long) * PT_NIP, &ppc_regs.nip);
 		if (r)
 			goto out;
 	}
 #ifdef POWERPC64 /* else we never use it */
-	r = upeek(pid, sizeof(long) * PT_MSR, &ppc_regs.msr);
+	r = upeek(tcp, sizeof(long) * PT_MSR, &ppc_regs.msr);
 	if (r)
 		goto out;
 #endif
-	r = upeek(pid, sizeof(long) * PT_CCR, &ppc_regs.ccr);
+	r = upeek(tcp, sizeof(long) * PT_CCR, &ppc_regs.ccr);
 	if (r)
 		goto out;
-	r = upeek(pid, sizeof(long) * PT_ORIG_R3, &ppc_regs.orig_gpr3);
+	r = upeek(tcp, sizeof(long) * PT_ORIG_R3, &ppc_regs.orig_gpr3);
 	if (r)
 		goto out;
 	for (i = 0; i <= 8; i++) {
-		r = upeek(pid, sizeof(long) * (PT_R0 + i),
+		r = upeek(tcp, sizeof(long) * (PT_R0 + i),
 			  &ppc_regs.gpr[i]);
 		if (r)
 			goto out;
diff --git a/linux/powerpc/ioctls_arch0.h b/linux/powerpc/ioctls_arch0.h
index e922ec0..f6f3b26 100644
--- a/linux/powerpc/ioctls_arch0.h
+++ b/linux/powerpc/ioctls_arch0.h
@@ -130,6 +130,7 @@
 { "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 },
 { "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
 { "linux/kvm.h", "KVM_PPC_CONFIGURE_V3_MMU", _IOC_WRITE, 0xaeaf, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_GET_CPU_CHAR", _IOC_READ, 0xaeb1, 0x20 },
 { "linux/kvm.h", "KVM_PPC_GET_HTAB_FD", _IOC_WRITE, 0xaeaa, 0x20 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_RMMU_INFO", _IOC_WRITE, 0xaeb0, 0x60 },
diff --git a/linux/powerpc/set_error.c b/linux/powerpc/set_error.c
index 7edabee..38ae32b 100644
--- a/linux/powerpc/set_error.c
+++ b/linux/powerpc/set_error.c
@@ -3,7 +3,7 @@
 {
 	ppc_regs.gpr[3] = tcp->u_error;
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
+	return upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
 #else
 	return set_regs(tcp->pid);
 #endif
@@ -15,8 +15,8 @@
 	ppc_regs.gpr[3] = tcp->u_rval;
 	ppc_regs.ccr &= ~0x10000000;
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, sizeof(long) * PT_CCR, ppc_regs.ccr) ||
-	       upoke(tcp->pid, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
+	return upoke(tcp, sizeof(long) * PT_CCR, ppc_regs.ccr) ||
+	       upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
 #else
 	return set_regs(tcp->pid);
 #endif
diff --git a/linux/powerpc/set_scno.c b/linux/powerpc/set_scno.c
index c5a0468..b2f6693 100644
--- a/linux/powerpc/set_scno.c
+++ b/linux/powerpc/set_scno.c
@@ -2,7 +2,7 @@
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, sizeof(long) * PT_R0, scno);
+	return upoke(tcp, sizeof(long) * PT_R0, scno);
 #else
 	ppc_regs.gpr[0] = scno;
 	return set_regs(tcp->pid);
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index d5e574a..d0bcbba 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -234,7 +234,7 @@
 [204] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [205] = { 3,	TM,		SEN(madvise),			"madvise"		},
 [206] = { 3,	TM,		SEN(mincore),			"mincore"		},
-[207] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[207] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [208] = { 2,	TS,		SEN(kill),			"tkill"			},
 [209] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [210] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -289,12 +289,12 @@
 [259] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [260] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [261] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[262] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[262] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [263] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[264] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[265] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[266] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[267] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[264] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[265] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[266] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[267] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [268] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [269] = { 5,	0,		SEN(add_key),			"add_key"		},
 [270] = { 4,	0,		SEN(request_key),		"request_key"		},
@@ -411,6 +411,9 @@
 [381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 [382] = { 5,	TD,		SEN(kexec_file_load),		"kexec_file_load"	},
 [383] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
+[384] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
+[385] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[386] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/powerpc64/arch_defs_.h b/linux/powerpc64/arch_defs_.h
new file mode 100644
index 0000000..037b52f
--- /dev/null
+++ b/linux/powerpc64/arch_defs_.h
@@ -0,0 +1,3 @@
+#define HAVE_ARCH_OLD_SELECT 1
+#define SUPPORTED_PERSONALITIES 2
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h
index 21ba1d8..74362c6 100644
--- a/linux/powerpc64/syscallent.h
+++ b/linux/powerpc64/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -229,7 +229,7 @@
 [204] = { },
 [205] = { 3,	TM,		SEN(madvise),			"madvise"		},
 [206] = { 3,	TM,		SEN(mincore),			"mincore"		},
-[207] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[207] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [208] = { 2,	TS,		SEN(kill),			"tkill"			},
 [209] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [210] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -284,12 +284,12 @@
 [259] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [260] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [261] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[262] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[262] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [263] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[264] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[265] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[266] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[267] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[264] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[265] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[266] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[267] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [268] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [269] = { 5,	0,		SEN(add_key),			"add_key"		},
 [270] = { 4,	0,		SEN(request_key),		"request_key"		},
@@ -406,6 +406,9 @@
 [381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 [382] = { 5,	TD,		SEN(kexec_file_load),		"kexec_file_load"	},
 [383] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
+[384] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
+[385] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[386] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/ptp_clock.h b/linux/ptp_clock.h
deleted file mode 100644
index 248f3ce..0000000
--- a/linux/ptp_clock.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * PTP 1588 clock support - user space interface
- *
- * Copyright (c) 2010 OMICRON electronics GmbH
- * Copyright (c) 2010-2017 The strace developers.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef _PTP_CLOCK_H_
-#define _PTP_CLOCK_H_
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-
-/* PTP_xxx bits, for the flags field within the request structures. */
-#define PTP_ENABLE_FEATURE (1<<0)
-#define PTP_RISING_EDGE    (1<<1)
-#define PTP_FALLING_EDGE   (1<<2)
-
-/*
- * struct ptp_clock_time - represents a time value
- *
- * The sign of the seconds field applies to the whole value. The
- * nanoseconds field is always unsigned. The reserved field is
- * included for sub-nanosecond resolution, should the demand for
- * this ever appear.
- *
- */
-struct ptp_clock_time {
-	__s64 sec;  /* seconds */
-	__u32 nsec; /* nanoseconds */
-	__u32 reserved;
-};
-
-struct ptp_clock_caps {
-	int max_adj;   /* Maximum frequency adjustment in parts per billon. */
-	int n_alarm;   /* Number of programmable alarms. */
-	int n_ext_ts;  /* Number of external time stamp channels. */
-	int n_per_out; /* Number of programmable periodic signals. */
-	int pps;       /* Whether the clock supports a PPS callback. */
-	int rsv[15];   /* Reserved for future use. */
-};
-
-struct ptp_extts_request {
-	unsigned int index;  /* Which channel to configure. */
-	unsigned int flags;  /* Bit field for PTP_xxx flags. */
-	unsigned int rsv[2]; /* Reserved for future use. */
-};
-
-struct ptp_perout_request {
-	struct ptp_clock_time start;  /* Absolute start time. */
-	struct ptp_clock_time period; /* Desired period, zero means disable. */
-	unsigned int index;           /* Which channel to configure. */
-	unsigned int flags;           /* Reserved for future use. */
-	unsigned int rsv[4];          /* Reserved for future use. */
-};
-
-#define PTP_MAX_SAMPLES 25 /* Maximum allowed offset measurement samples. */
-
-struct ptp_sys_offset {
-	unsigned int n_samples; /* Desired number of measurements. */
-	unsigned int rsv[3];    /* Reserved for future use. */
-	/*
-	 * Array of interleaved system/phc time stamps. The kernel
-	 * will provide 2*n_samples + 1 time stamps, with the last
-	 * one as a system time stamp.
-	 */
-	struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
-};
-
-#define PTP_CLK_MAGIC '='
-
-#define PTP_CLOCK_GETCAPS  _IOR(PTP_CLK_MAGIC, 1, struct ptp_clock_caps)
-#define PTP_EXTTS_REQUEST  _IOW(PTP_CLK_MAGIC, 2, struct ptp_extts_request)
-#define PTP_PEROUT_REQUEST _IOW(PTP_CLK_MAGIC, 3, struct ptp_perout_request)
-#define PTP_ENABLE_PPS     _IOW(PTP_CLK_MAGIC, 4, int)
-#define PTP_SYS_OFFSET     _IOW(PTP_CLK_MAGIC, 5, struct ptp_sys_offset)
-
-struct ptp_extts_event {
-	struct ptp_clock_time t; /* Time event occurred. */
-	unsigned int index;      /* Which channel produced the event. */
-	unsigned int flags;      /* Reserved for future use. */
-	unsigned int rsv[2];     /* Reserved for future use. */
-};
-
-#endif
diff --git a/linux/riscv/arch_defs_.h b/linux/riscv/arch_defs_.h
new file mode 100644
index 0000000..33494f5
--- /dev/null
+++ b/linux/riscv/arch_defs_.h
@@ -0,0 +1,2 @@
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define SUPPORTED_PERSONALITIES 2
diff --git a/linux/riscv/syscallent.h b/linux/riscv/syscallent.h
index 7c416ef..3dfed89 100644
--- a/linux/riscv/syscallent.h
+++ b/linux/riscv/syscallent.h
@@ -1 +1,4 @@
 #include "64/syscallent.h"
+
+/* #define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15) */
+[259] = { 3,	TM,		SEN(riscv_flush_icache),	"riscv_flush_icache"	},
diff --git a/linux/s390/arch_defs_.h b/linux/s390/arch_defs_.h
new file mode 100644
index 0000000..59fee83
--- /dev/null
+++ b/linux/s390/arch_defs_.h
@@ -0,0 +1,3 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_MMAP_PGOFF 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/s390/arch_sigreturn.c b/linux/s390/arch_sigreturn.c
index d1b8598..9c9e0dd 100644
--- a/linux/s390/arch_sigreturn.c
+++ b/linux/s390/arch_sigreturn.c
@@ -1,11 +1,21 @@
+#ifndef S390_FRAME_PTR
+# define S390_FRAME_PTR s390_frame_ptr
+#endif
+#ifndef SIGNAL_FRAMESIZE
+# define SIGNAL_FRAMESIZE __SIGNAL_FRAMESIZE
+#endif
+#ifndef PTR_TYPE
+# define PTR_TYPE unsigned long
+#endif
+
 static void
 arch_sigreturn(struct tcb *tcp)
 {
-	unsigned long mask[NSIG_BYTES / sizeof(long)];
-	const unsigned long addr = *s390_frame_ptr + __SIGNAL_FRAMESIZE;
+	PTR_TYPE mask[NSIG_BYTES / sizeof(PTR_TYPE)];
+	const PTR_TYPE addr = *S390_FRAME_PTR + SIGNAL_FRAMESIZE;
 
 	if (umove(tcp, addr, &mask) < 0) {
-		tprintf("{mask=%#lx}", addr);
+		tprintf("{mask=%#llx}", zero_extend_signed_to_ull(addr));
 	} else {
 		tprintsigmask_addr("{mask=", mask);
 		tprints("}");
diff --git a/linux/s390/get_error.c b/linux/s390/get_error.c
index 6d4d0a5..6f3925b 100644
--- a/linux/s390/get_error.c
+++ b/linux/s390/get_error.c
@@ -1,12 +1,16 @@
 #include "negated_errno.h"
 
+#ifndef ARCH_REGSET
+# define ARCH_REGSET s390_regset
+#endif
+
 static void
 get_error(struct tcb *tcp, const bool check_errno)
 {
-	if (check_errno && is_negated_errno(s390_regset.gprs[2])) {
+	if (check_errno && is_negated_errno(ARCH_REGSET.gprs[2])) {
 		tcp->u_rval = -1;
-		tcp->u_error = -s390_regset.gprs[2];
+		tcp->u_error = -ARCH_REGSET.gprs[2];
 	} else {
-		tcp->u_rval = s390_regset.gprs[2];
+		tcp->u_rval = ARCH_REGSET.gprs[2];
 	}
 }
diff --git a/linux/s390/get_scno.c b/linux/s390/get_scno.c
index d323860..2661795 100644
--- a/linux/s390/get_scno.c
+++ b/linux/s390/get_scno.c
@@ -1,8 +1,12 @@
+#ifndef ARCH_REGSET
+# define ARCH_REGSET s390_regset
+#endif
+
 /* Return codes: 1 - ok, 0 - ignore, other - error. */
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	tcp->scno = s390_regset.gprs[2] ?
-		    s390_regset.gprs[2] : s390_regset.gprs[1];
+	tcp->scno = ARCH_REGSET.gprs[2] ?
+		    ARCH_REGSET.gprs[2] : ARCH_REGSET.gprs[1];
 	return 1;
 }
diff --git a/linux/s390/get_syscall_args.c b/linux/s390/get_syscall_args.c
index ebf6c6c..2c35380 100644
--- a/linux/s390/get_syscall_args.c
+++ b/linux/s390/get_syscall_args.c
@@ -1,12 +1,16 @@
+#ifndef ARCH_REGSET
+# define ARCH_REGSET s390_regset
+#endif
+
 /* Return -1 on error or 1 on success (never 0!). */
 static int
 get_syscall_args(struct tcb *tcp)
 {
-	tcp->u_arg[0] = s390_regset.orig_gpr2;
-	tcp->u_arg[1] = s390_regset.gprs[3];
-	tcp->u_arg[2] = s390_regset.gprs[4];
-	tcp->u_arg[3] = s390_regset.gprs[5];
-	tcp->u_arg[4] = s390_regset.gprs[6];
-	tcp->u_arg[5] = s390_regset.gprs[7];
+	tcp->u_arg[0] = ARCH_REGSET.orig_gpr2;
+	tcp->u_arg[1] = ARCH_REGSET.gprs[3];
+	tcp->u_arg[2] = ARCH_REGSET.gprs[4];
+	tcp->u_arg[3] = ARCH_REGSET.gprs[5];
+	tcp->u_arg[4] = ARCH_REGSET.gprs[6];
+	tcp->u_arg[5] = ARCH_REGSET.gprs[7];
 	return 1;
 }
diff --git a/linux/s390/set_error.c b/linux/s390/set_error.c
index 7262e5c..f73e578 100644
--- a/linux/s390/set_error.c
+++ b/linux/s390/set_error.c
@@ -1,13 +1,17 @@
+#ifndef ARCH_REGSET
+# define ARCH_REGSET s390_regset
+#endif
+
 static int
 arch_set_error(struct tcb *tcp)
 {
-	s390_regset.gprs[2] = -tcp->u_error;
+	ARCH_REGSET.gprs[2] = -tcp->u_error;
 	return set_regs(tcp->pid);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-	s390_regset.gprs[2] = tcp->u_rval;
+	ARCH_REGSET.gprs[2] = tcp->u_rval;
 	return set_regs(tcp->pid);
 }
diff --git a/linux/s390/set_scno.c b/linux/s390/set_scno.c
index c7a3110..6bb9999 100644
--- a/linux/s390/set_scno.c
+++ b/linux/s390/set_scno.c
@@ -1,6 +1,10 @@
+#ifndef ARCH_REGSET
+# define ARCH_REGSET s390_regset
+#endif
+
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	s390_regset.gprs[2] = scno;
+	ARCH_REGSET.gprs[2] = scno;
 	return set_regs(tcp->pid);
 }
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index 2bf5a21..b7e768e 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2000 IBM Deutschland Entwicklung GmbH, IBM Coporation
- * Copyright (c) 2000-2017 The strace developers.
+ * Copyright (c) 2000-2018 The strace developers.
  * Authors: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
  *          D.J. Barrow  <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * All rights reserved.
@@ -49,11 +49,11 @@
 [ 17] = { },
 [ 18] = { },
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -76,10 +76,10 @@
 [ 44] = { },
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { },
@@ -93,8 +93,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { },
@@ -228,10 +228,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(getegid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(getegid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -265,7 +265,7 @@
 [233] = { 2,	TF,		SEN(removexattr),		"removexattr"		},
 [234] = { 2,	TF,		SEN(removexattr),		"lremovexattr"		},
 [235] = { 2,	TD,		SEN(fremovexattr),		"fremovexattr"		},
-[236] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[236] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [237] = { 2,	TS,		SEN(kill),			"tkill"			},
 [238] = { 6,	0,		SEN(futex),			"futex"			},
 [239] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
@@ -300,12 +300,12 @@
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [269] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [270] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[271] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[271] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [272] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[273] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[274] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[275] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[276] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[273] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[274] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[275] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[276] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [277] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [278] = { 5,	0,		SEN(add_key),			"add_key"		},
 [279] = { 4,	0,		SEN(request_key),		"request_key"		},
@@ -371,7 +371,7 @@
 [339] = { 2,	TD,		SEN(setns),			"setns"			},
 [340] = { 6,	0,		SEN(process_vm_readv),		"process_vm_readv"	},
 [341] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
-[342] = { 2,	0,		SEN(printargs),			"s390_runtime_instr"	},
+[342] = { 2,	0,		SEN(s390_runtime_instr),	"s390_runtime_instr"	},
 [343] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [344] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
 [345] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
@@ -381,8 +381,8 @@
 [349] = { 3,	0,		SEN(getrandom),			"getrandom"		},
 [350] = { 2,	TD,		SEN(memfd_create),		"memfd_create"		},
 [351] = { 3,	TD,		SEN(bpf),			"bpf"			},
-[352] = { 3,	0,		SEN(printargs),			"s390_pci_mmio_write"	},
-[353] = { 3,	0,		SEN(printargs),			"s390_pci_mmio_read"	},
+[352] = { 3,	0,		SEN(s390_pci_mmio_write),	"s390_pci_mmio_write"	},
+[353] = { 3,	0,		SEN(s390_pci_mmio_read),	"s390_pci_mmio_read"	},
 [354] = { 5,	TD|TF|TP|SE|SI,	SEN(execveat),			"execveat"		},
 [355] = { 1,	TD,		SEN(userfaultfd),		"userfaultfd"		},
 [356] = { 2,	0,		SEN(membarrier),		"membarrier"		},
@@ -407,8 +407,9 @@
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
-[378] = { 2,	0,		SEN(printargs),			"s390_guarded_storage"	},
+[378] = { 2,	0,		SEN(s390_guarded_storage),	"s390_guarded_storage"	},
 [379] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
+[380] = { 4,	0,		SEN(s390_sthyi),		"s390_sthyi"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390x/arch_defs_.h b/linux/s390x/arch_defs_.h
new file mode 100644
index 0000000..bed2f2d
--- /dev/null
+++ b/linux/s390x/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_MMAP_PGOFF 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define SUPPORTED_PERSONALITIES 2
diff --git a/linux/s390x/arch_regs.c b/linux/s390x/arch_regs.c
index 62aece7..b5efde7 100644
--- a/linux/s390x/arch_regs.c
+++ b/linux/s390x/arch_regs.c
@@ -1 +1,36 @@
-#include "s390/arch_regs.c"
+typedef struct {
+	uint32_t mask;
+	uint32_t addr;
+} ATTRIBUTE_ALIGNED(8) psw_compat_t;
+
+typedef struct {
+	psw_compat_t psw;
+	uint32_t gprs[NUM_GPRS];
+	uint32_t acrs[NUM_ACRS];
+	uint32_t orig_gpr2;
+} s390_compat_regs;
+
+static union {
+	s390_compat_regs s390_regs;
+	s390_regs s390x_regs;
+} s390x_regs_union;
+
+#define s390_regset	s390x_regs_union.s390_regs
+#define s390x_regset	s390x_regs_union.s390x_regs
+
+uint32_t *const s390_frame_ptr = &s390_regset.gprs[15];
+unsigned long *const s390x_frame_ptr = &s390x_regset.gprs[15];
+
+static struct iovec s390x_io = {
+	.iov_base = &s390x_regs_union,
+};
+
+
+#define ARCH_REGS_FOR_GETREGSET  s390x_regs_union
+#define ARCH_IOVEC_FOR_GETREGSET s390x_io
+#define ARCH_PC_REG \
+	(s390x_io.iov_len == sizeof(s390_regset) ? \
+			     s390_regset.psw.addr : s390x_regset.psw.addr)
+
+#define ARCH_PERSONALITY_0_IOV_SIZE sizeof(s390x_regset)
+#define ARCH_PERSONALITY_1_IOV_SIZE sizeof(s390_regset)
diff --git a/linux/s390x/arch_regs.h b/linux/s390x/arch_regs.h
index 14fced4..1f8b57a 100644
--- a/linux/s390x/arch_regs.h
+++ b/linux/s390x/arch_regs.h
@@ -1 +1,2 @@
-#include "s390/arch_regs.h"
+extern uint32_t *const s390_frame_ptr;
+extern unsigned long *const s390x_frame_ptr;
diff --git a/linux/s390x/arch_rt_sigframe.c b/linux/s390x/arch_rt_sigframe.c
index 9731c0e..9c0255f 100644
--- a/linux/s390x/arch_rt_sigframe.c
+++ b/linux/s390x/arch_rt_sigframe.c
@@ -1 +1,4 @@
-#include "s390/arch_rt_sigframe.c"
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return tcp->currpers == 1 ? *s390_frame_ptr : *s390x_frame_ptr;
+}
diff --git a/linux/s390x/arch_sigreturn.c b/linux/s390x/arch_sigreturn.c
index 679a395..edc9edd 100644
--- a/linux/s390x/arch_sigreturn.c
+++ b/linux/s390x/arch_sigreturn.c
@@ -1 +1,27 @@
+#include <stdint.h>
+
+#define S390_SIGNAL_FRAMESIZE      96
+
+#define SIGNAL_FRAMESIZE	S390_SIGNAL_FRAMESIZE
+#define PTR_TYPE		uint32_t
+#define S390_FRAME_PTR		s390_frame_ptr
+#define arch_sigreturn	s390_arch_sigreturn
 #include "s390/arch_sigreturn.c"
+#undef arch_sigreturn
+#undef S390_FRAME_PTR
+#undef PTR_TYPE
+#undef SIGNAL_FRAMESIZE
+
+#define S390_FRAME_PTR		s390x_frame_ptr
+#define arch_sigreturn	s390x_arch_sigreturn
+#include "s390/arch_sigreturn.c"
+#undef arch_sigreturn
+
+static void
+arch_sigreturn(struct tcb *tcp)
+{
+	if (tcp->currpers == 1)
+		s390_arch_sigreturn(tcp);
+	else
+		s390x_arch_sigreturn(tcp);
+}
diff --git a/linux/s390x/errnoent1.h b/linux/s390x/errnoent1.h
new file mode 100644
index 0000000..c0f7787
--- /dev/null
+++ b/linux/s390x/errnoent1.h
@@ -0,0 +1 @@
+#include "errnoent.h"
diff --git a/linux/s390x/get_error.c b/linux/s390x/get_error.c
index 8e3944c..fe503f4 100644
--- a/linux/s390x/get_error.c
+++ b/linux/s390x/get_error.c
@@ -1 +1,22 @@
-#include "s390/get_error.c"
+#include "negated_errno.h"
+
+#define get_error s390_get_error
+#define ARCH_REGSET s390_regset
+#include "../s390/get_error.c"
+#undef ARCH_REGSET
+#undef get_error
+
+#define get_error s390x_get_error
+#define ARCH_REGSET s390x_regset
+#include "../s390/get_error.c"
+#undef ARCH_REGSET
+#undef get_error
+
+static void
+get_error(struct tcb *tcp, const bool check_errno)
+{
+	if (tcp->currpers == 1)
+		s390_get_error(tcp, check_errno);
+	else
+		s390x_get_error(tcp, check_errno);
+}
diff --git a/linux/s390x/get_scno.c b/linux/s390x/get_scno.c
index 71816fb..bf81b94 100644
--- a/linux/s390x/get_scno.c
+++ b/linux/s390x/get_scno.c
@@ -1 +1,20 @@
-#include "s390/get_scno.c"
+#define arch_get_scno s390_get_scno
+#define ARCH_REGSET s390_regset
+#include "../s390/get_scno.c"
+#undef ARCH_REGSET
+#undef arch_get_scno
+
+#define arch_get_scno s390x_get_scno
+#define ARCH_REGSET s390x_regset
+#include "../s390/get_scno.c"
+#undef ARCH_REGSET
+#undef arch_get_scno
+
+static int
+arch_get_scno(struct tcb *tcp)
+{
+	if (s390x_io.iov_len == sizeof(s390_regset))
+		return s390_get_scno(tcp);
+	else
+		return s390x_get_scno(tcp);
+}
diff --git a/linux/s390x/get_syscall_args.c b/linux/s390x/get_syscall_args.c
index 4ded41d..bed3d68 100644
--- a/linux/s390x/get_syscall_args.c
+++ b/linux/s390x/get_syscall_args.c
@@ -1 +1,21 @@
-#include "s390/get_syscall_args.c"
+#define get_syscall_args s390_get_syscall_args
+#define ARCH_REGSET s390_regset
+#include "../s390/get_syscall_args.c"
+#undef ARCH_REGSET
+#undef get_syscall_args
+
+#define get_syscall_args s390x_get_syscall_args
+#define ARCH_REGSET s390x_regset
+#include "../s390/get_syscall_args.c"
+#undef ARCH_REGSET
+#undef get_syscall_args
+
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+	if (tcp->currpers == 1)
+		return s390_get_syscall_args(tcp);
+	else
+		return s390x_get_syscall_args(tcp);
+}
diff --git a/linux/s390x/ioctls_arch1.h b/linux/s390x/ioctls_arch1.h
new file mode 100644
index 0000000..4a16cb5
--- /dev/null
+++ b/linux/s390x/ioctls_arch1.h
@@ -0,0 +1 @@
+#include "s390/ioctls_arch0.h"
diff --git a/linux/s390x/ioctls_inc1.h b/linux/s390x/ioctls_inc1.h
new file mode 100644
index 0000000..e09b6c6
--- /dev/null
+++ b/linux/s390x/ioctls_inc1.h
@@ -0,0 +1 @@
+#include "s390/ioctls_inc0.h"
diff --git a/linux/s390x/set_error.c b/linux/s390x/set_error.c
index 737ddef..4a80ac2 100644
--- a/linux/s390x/set_error.c
+++ b/linux/s390x/set_error.c
@@ -1 +1,33 @@
-#include "s390/set_error.c"
+#define arch_set_error s390_set_error
+#define arch_set_success s390_set_success
+#define ARCH_REGSET s390_regset
+#include "../s390/set_error.c"
+#undef ARCH_REGSET
+#undef arch_set_success
+#undef arch_set_error
+
+#define arch_set_error s390x_set_error
+#define arch_set_success s390x_set_success
+#define ARCH_REGSET s390x_regset
+#include "../s390/set_error.c"
+#undef ARCH_REGSET
+#undef arch_set_success
+#undef arch_set_error
+
+static int
+arch_set_error(struct tcb *tcp)
+{
+	if (tcp->currpers == 1)
+		return s390_set_error(tcp);
+	else
+		return s390x_set_error(tcp);
+}
+
+static int
+arch_set_success(struct tcb *tcp)
+{
+	if (tcp->currpers == 1)
+		return s390_set_success(tcp);
+	else
+		return s390x_set_success(tcp);
+}
diff --git a/linux/s390x/set_scno.c b/linux/s390x/set_scno.c
index 9cea4d1..2b4d16e 100644
--- a/linux/s390x/set_scno.c
+++ b/linux/s390x/set_scno.c
@@ -1 +1,20 @@
-#include "s390/set_scno.c"
+#define arch_set_scno s390_set_scno
+#define ARCH_REGSET s390_regset
+#include "../s390/set_scno.c"
+#undef ARCH_REGSET
+#undef arch_set_scno
+
+#define arch_set_scno s390x_set_scno
+#define ARCH_REGSET s390x_regset
+#include "../s390/set_scno.c"
+#undef ARCH_REGSET
+#undef arch_set_scno
+
+static int
+arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
+{
+	if (tcp->currpers == 1)
+		return s390_set_scno(tcp, scno);
+	else
+		return s390x_set_scno(tcp, scno);
+}
diff --git a/linux/s390x/signalent1.h b/linux/s390x/signalent1.h
new file mode 100644
index 0000000..093cba7
--- /dev/null
+++ b/linux/s390x/signalent1.h
@@ -0,0 +1 @@
+#include "signalent.h"
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index 3b662b4..d16ee94 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2000 IBM Deutschland Entwicklung GmbH, IBM Coporation
- * Copyright (c) 2000-2017 The strace developers.
+ * Copyright (c) 2000-2018 The strace developers.
  * Author: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
  * All rights reserved.
  *
@@ -48,7 +48,7 @@
 [ 17] = { },
 [ 18] = { },
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { },
@@ -92,8 +92,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68 ... 71] = { },
@@ -212,10 +212,10 @@
 [191] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
 [196 ... 197] = { },
 [198] = { 3,	TF,		SEN(chown),			"lchown"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[202] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[202] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups"		},
@@ -249,7 +249,7 @@
 [233] = { 2,	TF,		SEN(removexattr),		"removexattr"		},
 [234] = { 2,	TF,		SEN(removexattr),		"lremovexattr"		},
 [235] = { 2,	TD,		SEN(fremovexattr),		"fremovexattr"		},
-[236] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[236] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [237] = { 2,	TS,		SEN(kill),			"tkill"			},
 [238] = { 6,	0,		SEN(futex),			"futex"			},
 [239] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
@@ -284,12 +284,12 @@
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [269] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [270] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[271] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[271] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [272] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[273] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[274] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[275] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[276] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[273] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[274] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[275] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[276] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [277] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [278] = { 5,	0,		SEN(add_key),			"add_key"		},
 [279] = { 4,	0,		SEN(request_key),		"request_key"		},
@@ -355,7 +355,7 @@
 [339] = { 2,	TD,		SEN(setns),			"setns"			},
 [340] = { 6,	0,		SEN(process_vm_readv),		"process_vm_readv"	},
 [341] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
-[342] = { 2,	0,		SEN(printargs),			"s390_runtime_instr"	},
+[342] = { 2,	0,		SEN(s390_runtime_instr),	"s390_runtime_instr"	},
 [343] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [344] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
 [345] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
@@ -365,8 +365,8 @@
 [349] = { 3,	0,		SEN(getrandom),			"getrandom"		},
 [350] = { 2,	TD,		SEN(memfd_create),		"memfd_create"		},
 [351] = { 3,	TD,		SEN(bpf),			"bpf"			},
-[352] = { 3,	0,		SEN(printargs),			"s390_pci_mmio_write"	},
-[353] = { 3,	0,		SEN(printargs),			"s390_pci_mmio_read"	},
+[352] = { 3,	0,		SEN(s390_pci_mmio_write),	"s390_pci_mmio_write"	},
+[353] = { 3,	0,		SEN(s390_pci_mmio_read),	"s390_pci_mmio_read"	},
 [354] = { 5,	TD|TF|TP|SE|SI,	SEN(execveat),			"execveat"		},
 [355] = { 1,	TD,		SEN(userfaultfd),		"userfaultfd"		},
 [356] = { 2,	0,		SEN(membarrier),		"membarrier"		},
@@ -391,8 +391,9 @@
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
-[378] = { 2,	0,		SEN(printargs),			"s390_guarded_storage"	},
+[378] = { 2,	0,		SEN(s390_guarded_storage),	"s390_guarded_storage"	},
 [379] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
+[380] = { 4,	0,		SEN(s390_sthyi),		"s390_sthyi"		},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390x/syscallent1.h b/linux/s390x/syscallent1.h
new file mode 100644
index 0000000..6b7a4b3
--- /dev/null
+++ b/linux/s390x/syscallent1.h
@@ -0,0 +1 @@
+#include "s390/syscallent.h"
diff --git a/linux/sh/arch_defs_.h b/linux/sh/arch_defs_.h
new file mode 100644
index 0000000..b4d39f0
--- /dev/null
+++ b/linux/sh/arch_defs_.h
@@ -0,0 +1,3 @@
+#define HAVE_ARCH_GETRVAL2 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/sh/arch_getrval2.c b/linux/sh/arch_getrval2.c
index 27b7cdd..c006731 100644
--- a/linux/sh/arch_getrval2.c
+++ b/linux/sh/arch_getrval2.c
@@ -2,7 +2,7 @@
 getrval2(struct tcb *tcp)
 {
 	unsigned long val;
-	if (upeek(tcp->pid, 4*(REG_REG0+1), &val) < 0)
+	if (upeek(tcp, 4*(REG_REG0+1), &val) < 0)
 		return -1;
 	return val;
 }
diff --git a/linux/sh/arch_rt_sigframe.c b/linux/sh/arch_rt_sigframe.c
index ae16e3f..3c4f6f2 100644
--- a/linux/sh/arch_rt_sigframe.c
+++ b/linux/sh/arch_rt_sigframe.c
@@ -29,5 +29,5 @@
 {
 	unsigned long addr;
 
-	return upeek(tcp->pid, sizeof(long) * 15, &addr) ? 0 : addr;
+	return upeek(tcp, sizeof(long) * 15, &addr) ? 0 : addr;
 }
diff --git a/linux/sh/get_scno.c b/linux/sh/get_scno.c
index 45fc0b7..e89520d 100644
--- a/linux/sh/get_scno.c
+++ b/linux/sh/get_scno.c
@@ -7,7 +7,7 @@
 	/*
 	 * In the new syscall ABI, the system call number is in R3.
 	 */
-	if (upeek(tcp->pid, 4*(REG_REG0+3), &scno) < 0)
+	if (upeek(tcp, 4*(REG_REG0+3), &scno) < 0)
 		return -1;
 
 	if ((long) scno < 0) {
diff --git a/linux/sh/get_syscall_args.c b/linux/sh/get_syscall_args.c
index 0b6c881..b4ee1dd 100644
--- a/linux/sh/get_syscall_args.c
+++ b/linux/sh/get_syscall_args.c
@@ -13,7 +13,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, syscall_regs[i], &tcp->u_arg[i]) < 0)
+		if (upeek(tcp, syscall_regs[i], &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
 }
diff --git a/linux/sh/get_syscall_result.c b/linux/sh/get_syscall_result.c
index f7b93b7..ff07a98 100644
--- a/linux/sh/get_syscall_result.c
+++ b/linux/sh/get_syscall_result.c
@@ -2,5 +2,5 @@
 get_syscall_result_regs(struct tcb *tcp)
 {
 	/* new syscall ABI returns result in R0 */
-	return upeek(tcp->pid, 4 * REG_REG0, &sh_r0) < 0 ? -1 : 0;
+	return upeek(tcp, 4 * REG_REG0, &sh_r0) < 0 ? -1 : 0;
 }
diff --git a/linux/sh/set_error.c b/linux/sh/set_error.c
index cb093b6..bad76ed 100644
--- a/linux/sh/set_error.c
+++ b/linux/sh/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	sh_r0 = -tcp->u_error;
-	return upoke(tcp->pid, 4 * REG_REG0, sh_r0);
+	return upoke(tcp, 4 * REG_REG0, sh_r0);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
 	sh_r0 = tcp->u_rval;
-	return upoke(tcp->pid, 4 * REG_REG0, sh_r0);
+	return upoke(tcp, 4 * REG_REG0, sh_r0);
 }
diff --git a/linux/sh/set_scno.c b/linux/sh/set_scno.c
index 5f71664..4c175ed 100644
--- a/linux/sh/set_scno.c
+++ b/linux/sh/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, 4 * (REG_REG0 + 3), scno);
+	return upoke(tcp, 4 * (REG_REG0 + 3), scno);
 }
diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index 74c07e1..c40b335 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -3,7 +3,7 @@
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 2000 PocketPenguins Inc.  Linux for Hitachi SuperH
  *                    port by Greg Banks <gbanks@pocketpenguins.com>
- * Copyright (c) 2000-2017 The strace developers.
+ * Copyright (c) 2000-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,11 +49,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -76,10 +76,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -93,8 +93,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -227,10 +227,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(getegid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(getegid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -251,7 +251,7 @@
 [220] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [221] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [222 ... 223] = { },
-[224] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[224] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [225] = { 4,	TD,		SEN(readahead),			"readahead"		},
 [226] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [227] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -303,12 +303,12 @@
 [274] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [275] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [276] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[277] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[277] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [278] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[279] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[280] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[281] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[282] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[279] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[280] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[281] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[282] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [283] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [284] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [285] = { 5,	0,		SEN(add_key),			"add_key"		},
diff --git a/linux/sh64/arch_defs_.h b/linux/sh64/arch_defs_.h
new file mode 100644
index 0000000..0c9ca19
--- /dev/null
+++ b/linux/sh64/arch_defs_.h
@@ -0,0 +1 @@
+#define HAVE_ARCH_UID16_SYSCALLS 1
diff --git a/linux/sh64/get_scno.c b/linux/sh64/get_scno.c
index 50a5223..bda2cd2 100644
--- a/linux/sh64/get_scno.c
+++ b/linux/sh64/get_scno.c
@@ -2,7 +2,7 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	if (upeek(tcp->pid, REG_SYSCALL, &tcp->scno) < 0)
+	if (upeek(tcp, REG_SYSCALL, &tcp->scno) < 0)
 		return -1;
 	tcp->scno &= 0xffff;
 	return 1;
diff --git a/linux/sh64/get_syscall_args.c b/linux/sh64/get_syscall_args.c
index 3970df8..e35c350 100644
--- a/linux/sh64/get_syscall_args.c
+++ b/linux/sh64/get_syscall_args.c
@@ -7,7 +7,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, REG_GENERAL(syscall_regs[i]),
+		if (upeek(tcp, REG_GENERAL(syscall_regs[i]),
 			  &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
diff --git a/linux/sh64/get_syscall_result.c b/linux/sh64/get_syscall_result.c
index 4264dcc..33c4247 100644
--- a/linux/sh64/get_syscall_result.c
+++ b/linux/sh64/get_syscall_result.c
@@ -2,5 +2,5 @@
 get_syscall_result_regs(struct tcb *tcp)
 {
 	/* ABI defines result returned in r9 */
-	return upeek(tcp->pid, REG_GENERAL(9), &sh64_r9) < 0 ? -1 : 0;
+	return upeek(tcp, REG_GENERAL(9), &sh64_r9) < 0 ? -1 : 0;
 }
diff --git a/linux/sh64/set_error.c b/linux/sh64/set_error.c
index 35271fb..29293b2 100644
--- a/linux/sh64/set_error.c
+++ b/linux/sh64/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	sh64_r9 = -tcp->u_error;
-	return upoke(tcp->pid, REG_GENERAL(9), sh64_r9);
+	return upoke(tcp, REG_GENERAL(9), sh64_r9);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
 	sh64_r9 = tcp->u_rval;
-	return upoke(tcp->pid, REG_GENERAL(9), sh64_r9);
+	return upoke(tcp, REG_GENERAL(9), sh64_r9);
 }
diff --git a/linux/sh64/set_scno.c b/linux/sh64/set_scno.c
index be4f1ed..0e7c18f 100644
--- a/linux/sh64/set_scno.c
+++ b/linux/sh64/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, REG_SYSCALL, scno);
+	return upoke(tcp, REG_SYSCALL, scno);
 }
diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h
index b1d141d..4905b0f 100644
--- a/linux/sh64/syscallent.h
+++ b/linux/sh64/syscallent.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,11 +47,11 @@
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
 [ 18] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
-[ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 22] = { 1,	TF,		SEN(umount),			"umount"		},
 [ 23] = { 1,	0,		SEN(setuid16),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid16),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -74,10 +74,10 @@
 [ 44] = { 0,	0,		SEN(prof),			"prof"			},
 [ 45] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 53] = { 0,	0,		SEN(lock),			"lock"			},
@@ -91,8 +91,8 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 64] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[ 65] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 66] = { 0,	0,		SEN(setsid),			"setsid"		},
 [ 67] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
@@ -225,10 +225,10 @@
 [196] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [197] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [198] = { 3,	TF,		SEN(chown),			"lchown32"		},
-[199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
-[200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
-[201] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[202] = { 0,	NF,		SEN(getegid),			"getegid32"		},
+[199] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
+[200] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
+[201] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[202] = { 0,	PU|NF,		SEN(getegid),			"getegid32"		},
 [203] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [204] = { 2,	0,		SEN(setregid),			"setregid32"		},
 [205] = { 2,	0,		SEN(getgroups),			"getgroups32"		},
@@ -277,7 +277,7 @@
 [248] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [249] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [250 ... 251] = { },
-[252] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[252] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [253] = { 3,	TD,		SEN(readahead),			"readahead"		},
 [254] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [255] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -329,12 +329,12 @@
 [302] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [303] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [304] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
-[305] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[305] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [306] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[307] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[308] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[309] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[310] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[307] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[308] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[309] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[310] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [311] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [312] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [313] = { 5,	0,		SEN(add_key),			"add_key"		},
diff --git a/linux/shuffle_scno.c b/linux/shuffle_scno.c
new file mode 100644
index 0000000..0e6feaf
--- /dev/null
+++ b/linux/shuffle_scno.c
@@ -0,0 +1,5 @@
+kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+	return scno;
+}
diff --git a/linux/sparc/arch_defs_.h b/linux/sparc/arch_defs_.h
new file mode 100644
index 0000000..e30336a
--- /dev/null
+++ b/linux/sparc/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_GETRVAL2 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define HAVE_ARCH_SA_RESTORER 1
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/sparc/gen.pl b/linux/sparc/gen.pl
deleted file mode 100644
index 8c2f75b..0000000
--- a/linux/sparc/gen.pl
+++ /dev/null
@@ -1,37 +0,0 @@
-open SPARC, "syscallent.h" || die "no puedo abrir el de la sparc";
-open ALPHA, "../alpha/syscallent.h" || die "no puedo abrir el de la alpha";
-open PC, "../i386/syscallent.h" || die "no puedo abrir PC\n";
-
-while (<SPARC>) {
-    chop;
-    ($i1, $i2, $i3, $syscall, $syscall_name) = split;
-    $strn[$index]   = $syscall_name;
-    $name[$index++] = $syscall;
-}
-
-while (<ALPHA>){
-    if (/\{/) {
-	($i1, $n, $pr, $syscall) = split;
-	$par{$syscall} = $n;
-	$prr{$syscall} = $pr;
-    }
-}
-
-while (<PC>){
-    if (/\{/) {
-	($i1, $n, $pr, $syscall) = split;
-	$par{$syscall} = $n;
-	$prr{$syscall} = $pr;
-    }
-}
-
-print "missing \n";
-
-for ($i = 0; $i < $index; $i++){
-    $x = $name[$i];
-    $y = $strn[$i];
-    $n = $par{$x};
-    $p = $prr{$x};
-    $j++;
-    print "\t{ $n\t$p\t$x\t$y },\t /* $j */\n";
-}
diff --git a/linux/sparc/get_error.c b/linux/sparc/get_error.c
index 1b960ac..b41bfb3 100644
--- a/linux/sparc/get_error.c
+++ b/linux/sparc/get_error.c
@@ -1,3 +1,5 @@
+#include <asm/psr.h>
+
 static void
 get_error(struct tcb *tcp, const bool check_errno)
 {
diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h
index 9c6fda5..a1974c2 100644
--- a/linux/sparc/syscallent.h
+++ b/linux/sparc/syscallent.h
@@ -18,11 +18,11 @@
 [ 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"		},
+[ 20] = { 0,	PU|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"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid16),			"getuid"		},
 [ 25] = { 4,	TD,		SEN(vmsplice),			"vmsplice"		},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -42,16 +42,16 @@
 [ 41] = { 1,	TD,		SEN(dup),			"dup"			},
 [ 42] = { 0,	TD,		SEN(pipe),			"pipe"			},
 [ 43] = { 1,	0,		SEN(times),			"times"			},
-[ 44] = { 0,	NF,		SEN(getuid),			"getuid32"		},
+[ 44] = { 0,	PU|NF,		SEN(getuid),			"getuid32"		},
 [ 45] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 46] = { 1,	0,		SEN(setgid16),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid16),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid16),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid16),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid16),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid16),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid16),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { },
-[ 53] = { 0,	NF,		SEN(getgid),			"getgid32"		},
+[ 53] = { 0,	PU|NF,		SEN(getgid),			"getgid32"		},
 [ 54] = { 3,	TD,		SEN(ioctl),			"ioctl"			},
 [ 55] = { 4,	0,		SEN(reboot),			"reboot"		},
 [ 56] = { 6,	TD|TM|SI,	SEN(mmap_4koff),		"mmap2"			},
@@ -62,13 +62,13 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [ 63] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
-[ 64] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
+[ 64] = { 0,	PU|NF,		SEN(getpagesize),		"getpagesize"		},
 [ 65] = { 3,	TM,		SEN(msync),			"msync"			},
 [ 66] = { 0,	TP,		SEN(vfork),			"vfork"			},
 [ 67] = { 5,	TD,		SEN(pread),			"pread64"		},
 [ 68] = { 5,	TD,		SEN(pwrite),			"pwrite64"		},
-[ 69] = { 0,	NF,		SEN(geteuid),			"geteuid32"		},
-[ 70] = { 0,	NF,		SEN(getegid),			"getegid32"		},
+[ 69] = { 0,	PU|NF,		SEN(geteuid),			"geteuid32"		},
+[ 70] = { 0,	PU|NF,		SEN(getegid),			"getegid32"		},
 [ 71] = { 6,	TD|TM|SI,	SEN(mmap),			"mmap"			},
 [ 72] = { 2,	0,		SEN(setreuid),			"setreuid32"		},
 [ 73] = { 2,	TM|SI,		SEN(munmap),			"munmap"		},
@@ -79,7 +79,7 @@
 [ 78] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [ 79] = { 2,	0,		SEN(getgroups16),		"getgroups"		},
 [ 80] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
-[ 81] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 81] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 82] = { 2,	0,		SEN(setgroups),			"setgroups32"		},
 [ 83] = { 3,	0,		SEN(setitimer),			"setitimer"		},
 [ 84] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
@@ -141,7 +141,7 @@
 [140] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
 [141] = { 3,	TN,		SEN(getpeername),		"getpeername"		},
 [142] = { 6,	0,		SEN(futex),			"futex"			},
-[143] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[143] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [144] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
 [145] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
 [146] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
@@ -195,7 +195,7 @@
 [194] = { 4,	TD,		SEN(epoll_ctl),			"epoll_ctl"		},
 [195] = { 4,	TD,		SEN(epoll_wait),		"epoll_wait"		},
 [196] = { 3,	0,		SEN(ioprio_set),		"ioprio_set"		},
-[197] = { 0,	NF,		SEN(getppid),			"getppid"		},
+[197] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
 [198] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [199] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
 [200] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
@@ -271,12 +271,12 @@
 [270] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [271] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
 [272] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
-[273] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[273] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [274] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[275] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[276] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[277] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[278] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[275] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[276] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[277] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[278] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [279] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [280] = { 4,	TD,		SEN(tee),			"tee"			},
 [281] = { 5,	0,		SEN(add_key),			"add_key"		},
@@ -338,7 +338,7 @@
 [337] = { 2,	TD,		SEN(setns),			"setns"			},
 [338] = { 6,	0,		SEN(process_vm_readv),		"process_vm_readv"	},
 [339] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
-[340] = { 0,	NF,		SEN(printargs),			"kern_features"		},
+[340] = { 0,	PU|NF,		SEN(printargs),			"kern_features"		},
 [341] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [342] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
 [343] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
diff --git a/linux/sparc64/arch_defs_.h b/linux/sparc64/arch_defs_.h
new file mode 100644
index 0000000..31ce9a2
--- /dev/null
+++ b/linux/sparc64/arch_defs_.h
@@ -0,0 +1,5 @@
+#define HAVE_ARCH_GETRVAL2 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define HAVE_ARCH_SA_RESTORER 1
+#define SUPPORTED_PERSONALITIES 2
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h
index 695aa19..0b3530e 100644
--- a/linux/sparc64/syscallent.h
+++ b/linux/sparc64/syscallent.h
@@ -18,11 +18,11 @@
 [ 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"		},
+[ 20] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 2,	0,		SEN(capget),			"capget"		},
 [ 22] = { 2,	0,		SEN(capset),			"capset"		},
 [ 23] = { 1,	0,		SEN(setuid),			"setuid"		},
-[ 24] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[ 24] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [ 25] = { 4,	TD,		SEN(vmsplice),			"vmsplice"		},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
@@ -44,10 +44,10 @@
 [ 44] = { },
 [ 45] = { 2,	TF,		SEN(umount2),			"umount2"		},
 [ 46] = { 1,	0,		SEN(setgid),			"setgid"		},
-[ 47] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[ 47] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [ 48] = { 2,	TS,		SEN(signal),			"signal"		},
-[ 49] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[ 50] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[ 49] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[ 50] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 2,	0,		SEN(printargs),			"memory_ordering"	},
 [ 53] = { },
@@ -61,7 +61,7 @@
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 62] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [ 63] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
-[ 64] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
+[ 64] = { 0,	PU|NF,		SEN(getpagesize),		"getpagesize"		},
 [ 65] = { 3,	TM,		SEN(msync),			"msync"			},
 [ 66] = { 0,	TP,		SEN(vfork),			"vfork"			},
 [ 67] = { 4,	TD,		SEN(pread),			"pread64"		},
@@ -77,7 +77,7 @@
 [ 78] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [ 79] = { 2,	0,		SEN(getgroups),			"getgroups"		},
 [ 80] = { 2,	0,		SEN(setgroups),			"setgroups"		},
-[ 81] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[ 81] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [ 82] = { },
 [ 83] = { 3,	0,		SEN(setitimer),			"setitimer"		},
 [ 84] = { },
@@ -139,7 +139,7 @@
 [140] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
 [141] = { 3,	TN,		SEN(getpeername),		"getpeername"		},
 [142] = { 6,	0,		SEN(futex),			"futex"			},
-[143] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[143] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [144] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
 [145] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
 [146] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
@@ -193,7 +193,7 @@
 [194] = { 4,	TD,		SEN(epoll_ctl),			"epoll_ctl"		},
 [195] = { 4,	TD,		SEN(epoll_wait),		"epoll_wait"		},
 [196] = { 3,	0,		SEN(ioprio_set),		"ioprio_set"		},
-[197] = { 0,	NF,		SEN(getppid),			"getppid"		},
+[197] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
 [198] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
 [199] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
 [200] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
@@ -269,12 +269,12 @@
 [270] = { 3,	0,		SEN(io_submit),			"io_submit"		},
 [271] = { 3,	0,		SEN(io_cancel),			"io_cancel"		},
 [272] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
-[273] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[273] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [274] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[275] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[276] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[277] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[278] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[275] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[276] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[277] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[278] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [279] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [280] = { 4,	TD,		SEN(tee),			"tee"			},
 [281] = { 5,	0,		SEN(add_key),			"add_key"		},
@@ -336,7 +336,7 @@
 [337] = { 2,	TD,		SEN(setns),			"setns"			},
 [338] = { 6,	0,		SEN(process_vm_readv),		"process_vm_readv"	},
 [339] = { 6,	0,		SEN(process_vm_writev),		"process_vm_writev"	},
-[340] = { 0,	NF,		SEN(printargs),			"kern_features"		},
+[340] = { 0,	PU|NF,		SEN(printargs),			"kern_features"		},
 [341] = { 5,	0,		SEN(kcmp),			"kcmp"			},
 [342] = { 3,	TD,		SEN(finit_module),		"finit_module"		},
 [343] = { 3,	0,		SEN(sched_setattr),		"sched_setattr"		},
diff --git a/linux/syscall.h b/linux/syscall.h
index bd15518..a1469b7 100644
--- a/linux/syscall.h
+++ b/linux/syscall.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2017 The strace developers.
+ * Copyright (c) 1995-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,7 +34,7 @@
 #include "sys_func.h"
 #include "sen.h"
 
-#if NEED_UID16_PARSERS
+#if HAVE_ARCH_UID16_SYSCALLS
 extern SYS_FUNC(chown16);
 extern SYS_FUNC(fchown16);
 extern SYS_FUNC(getgroups16);
@@ -45,6 +45,6 @@
 extern SYS_FUNC(setresuid16);
 extern SYS_FUNC(setreuid16);
 extern SYS_FUNC(setuid16);
-#endif
+#endif /* HAVE_ARCH_UID16_SYSCALLS */
 
 #endif /* !STRACE_LINUX_SYSCALL_H */
diff --git a/linux/tile/arch_defs_.h b/linux/tile/arch_defs_.h
new file mode 100644
index 0000000..34a5624
--- /dev/null
+++ b/linux/tile/arch_defs_.h
@@ -0,0 +1,5 @@
+#define SUPPORTED_PERSONALITIES 2
+
+#ifdef __tilepro__
+# define DEFAULT_PERSONALITY 1
+#endif
diff --git a/linux/ubi-user.h b/linux/ubi-user.h
deleted file mode 100644
index 0f5c775..0000000
--- a/linux/ubi-user.h
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Copyright (c) International Business Machines Corp., 2006
- * Copyright (c) 2006-2017 The strace developers.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
- * the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Author: Artem Bityutskiy (Битюцкий Артём)
- */
-
-#ifndef __UBI_USER_H__
-#define __UBI_USER_H__
-
-#include <linux/types.h>
-
-/*
- * UBI device creation (the same as MTD device attachment)
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * MTD devices may be attached using %UBI_IOCATT ioctl command of the UBI
- * control device. The caller has to properly fill and pass
- * &struct ubi_attach_req object - UBI will attach the MTD device specified in
- * the request and return the newly created UBI device number as the ioctl
- * return value.
- *
- * UBI device deletion (the same as MTD device detachment)
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * An UBI device maybe deleted with %UBI_IOCDET ioctl command of the UBI
- * control device.
- *
- * UBI volume creation
- * ~~~~~~~~~~~~~~~~~~~
- *
- * UBI volumes are created via the %UBI_IOCMKVOL ioctl command of UBI character
- * device. A &struct ubi_mkvol_req object has to be properly filled and a
- * pointer to it has to be passed to the ioctl.
- *
- * UBI volume deletion
- * ~~~~~~~~~~~~~~~~~~~
- *
- * To delete a volume, the %UBI_IOCRMVOL ioctl command of the UBI character
- * device should be used. A pointer to the 32-bit volume ID hast to be passed
- * to the ioctl.
- *
- * UBI volume re-size
- * ~~~~~~~~~~~~~~~~~~
- *
- * To re-size a volume, the %UBI_IOCRSVOL ioctl command of the UBI character
- * device should be used. A &struct ubi_rsvol_req object has to be properly
- * filled and a pointer to it has to be passed to the ioctl.
- *
- * UBI volumes re-name
- * ~~~~~~~~~~~~~~~~~~~
- *
- * To re-name several volumes atomically at one go, the %UBI_IOCRNVOL command
- * of the UBI character device should be used. A &struct ubi_rnvol_req object
- * has to be properly filled and a pointer to it has to be passed to the ioctl.
- *
- * UBI volume update
- * ~~~~~~~~~~~~~~~~~
- *
- * Volume update should be done via the %UBI_IOCVOLUP ioctl command of the
- * corresponding UBI volume character device. A pointer to a 64-bit update
- * size should be passed to the ioctl. After this, UBI expects user to write
- * this number of bytes to the volume character device. The update is finished
- * when the claimed number of bytes is passed. So, the volume update sequence
- * is something like:
- *
- * fd = open("/dev/my_volume");
- * ioctl(fd, UBI_IOCVOLUP, &image_size);
- * write(fd, buf, image_size);
- * close(fd);
- *
- * Logical eraseblock erase
- * ~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * To erase a logical eraseblock, the %UBI_IOCEBER ioctl command of the
- * corresponding UBI volume character device should be used. This command
- * unmaps the requested logical eraseblock, makes sure the corresponding
- * physical eraseblock is successfully erased, and returns.
- *
- * Atomic logical eraseblock change
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * Atomic logical eraseblock change operation is called using the %UBI_IOCEBCH
- * ioctl command of the corresponding UBI volume character device. A pointer to
- * a &struct ubi_leb_change_req object has to be passed to the ioctl. Then the
- * user is expected to write the requested amount of bytes (similarly to what
- * should be done in case of the "volume update" ioctl).
- *
- * Logical eraseblock map
- * ~~~~~~~~~~~~~~~~~~~~~
- *
- * To map a logical eraseblock to a physical eraseblock, the %UBI_IOCEBMAP
- * ioctl command should be used. A pointer to a &struct ubi_map_req object is
- * expected to be passed. The ioctl maps the requested logical eraseblock to
- * a physical eraseblock and returns.  Only non-mapped logical eraseblocks can
- * be mapped. If the logical eraseblock specified in the request is already
- * mapped to a physical eraseblock, the ioctl fails and returns error.
- *
- * Logical eraseblock unmap
- * ~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * To unmap a logical eraseblock to a physical eraseblock, the %UBI_IOCEBUNMAP
- * ioctl command should be used. The ioctl unmaps the logical eraseblocks,
- * schedules corresponding physical eraseblock for erasure, and returns. Unlike
- * the "LEB erase" command, it does not wait for the physical eraseblock being
- * erased. Note, the side effect of this is that if an unclean reboot happens
- * after the unmap ioctl returns, you may find the LEB mapped again to the same
- * physical eraseblock after the UBI is run again.
- *
- * Check if logical eraseblock is mapped
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * To check if a logical eraseblock is mapped to a physical eraseblock, the
- * %UBI_IOCEBISMAP ioctl command should be used. It returns %0 if the LEB is
- * not mapped, and %1 if it is mapped.
- *
- * Set an UBI volume property
- * ~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * To set an UBI volume property the %UBI_IOCSETPROP ioctl command should be
- * used. A pointer to a &struct ubi_set_vol_prop_req object is expected to be
- * passed. The object describes which property should be set, and to which value
- * it should be set.
- */
-
-/*
- * When a new UBI volume or UBI device is created, users may either specify the
- * volume/device number they want to create or to let UBI automatically assign
- * the number using these constants.
- */
-#define UBI_VOL_NUM_AUTO (-1)
-#define UBI_DEV_NUM_AUTO (-1)
-
-/* Maximum volume name length */
-#define UBI_MAX_VOLUME_NAME 127
-
-/* ioctl commands of UBI character devices */
-
-#define UBI_IOC_MAGIC 'o'
-
-/* Create an UBI volume */
-#define UBI_IOCMKVOL _IOW(UBI_IOC_MAGIC, 0, struct ubi_mkvol_req)
-/* Remove an UBI volume */
-#define UBI_IOCRMVOL _IOW(UBI_IOC_MAGIC, 1, __s32)
-/* Re-size an UBI volume */
-#define UBI_IOCRSVOL _IOW(UBI_IOC_MAGIC, 2, struct ubi_rsvol_req)
-/* Re-name volumes */
-#define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req)
-
-/* ioctl commands of the UBI control character device */
-
-#define UBI_CTRL_IOC_MAGIC 'o'
-
-/* Attach an MTD device */
-#define UBI_IOCATT _IOW(UBI_CTRL_IOC_MAGIC, 64, struct ubi_attach_req)
-/* Detach an MTD device */
-#define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, __s32)
-
-/* ioctl commands of UBI volume character devices */
-
-#define UBI_VOL_IOC_MAGIC 'O'
-
-/* Start UBI volume update */
-#define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, __s64)
-/* LEB erasure command, used for debugging, disabled by default */
-#define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, __s32)
-/* Atomic LEB change command */
-#define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, __s32)
-/* Map LEB command */
-#define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req)
-/* Unmap LEB command */
-#define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, __s32)
-/* Check if LEB is mapped command */
-#define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, __s32)
-/* Set an UBI volume property */
-#define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6, \
-			       struct ubi_set_vol_prop_req)
-
-/* Maximum MTD device name length supported by UBI */
-#define MAX_UBI_MTD_NAME_LEN 127
-
-/* Maximum amount of UBI volumes that can be re-named at one go */
-#define UBI_MAX_RNVOL 32
-
-/*
- * UBI volume type constants.
- *
- * @UBI_DYNAMIC_VOLUME: dynamic volume
- * @UBI_STATIC_VOLUME:  static volume
- */
-enum {
-	UBI_DYNAMIC_VOLUME = 3,
-	UBI_STATIC_VOLUME  = 4,
-};
-
-/*
- * UBI set volume property ioctl constants.
- *
- * @UBI_VOL_PROP_DIRECT_WRITE: allow (any non-zero value) or disallow (value 0)
- *                             user to directly write and erase individual
- *                             eraseblocks on dynamic volumes
- */
-enum {
-	UBI_VOL_PROP_DIRECT_WRITE = 1,
-};
-
-/**
- * struct ubi_attach_req - attach MTD device request.
- * @ubi_num: UBI device number to create
- * @mtd_num: MTD device number to attach
- * @vid_hdr_offset: VID header offset (use defaults if %0)
- * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs
- * @padding: reserved for future, not used, has to be zeroed
- *
- * This data structure is used to specify MTD device UBI has to attach and the
- * parameters it has to use. The number which should be assigned to the new UBI
- * device is passed in @ubi_num. UBI may automatically assign the number if
- * @UBI_DEV_NUM_AUTO is passed. In this case, the device number is returned in
- * @ubi_num.
- *
- * Most applications should pass %0 in @vid_hdr_offset to make UBI use default
- * offset of the VID header within physical eraseblocks. The default offset is
- * the next min. I/O unit after the EC header. For example, it will be offset
- * 512 in case of a 512 bytes page NAND flash with no sub-page support. Or
- * it will be 512 in case of a 2KiB page NAND flash with 4 512-byte sub-pages.
- *
- * But in rare cases, if this optimizes things, the VID header may be placed to
- * a different offset. For example, the boot-loader might do things faster if
- * the VID header sits at the end of the first 2KiB NAND page with 4 sub-pages.
- * As the boot-loader would not normally need to read EC headers (unless it
- * needs UBI in RW mode), it might be faster to calculate ECC. This is weird
- * example, but it real-life example. So, in this example, @vid_hdr_offer would
- * be 2KiB-64 bytes = 1984. Note, that this position is not even 512-bytes
- * aligned, which is OK, as UBI is clever enough to realize this is 4th
- * sub-page of the first page and add needed padding.
- *
- * The @max_beb_per1024 is the maximum amount of bad PEBs UBI expects on the
- * UBI device per 1024 eraseblocks.  This value is often given in an other form
- * in the NAND datasheet (min NVB i.e. minimal number of valid blocks). The
- * maximum expected bad eraseblocks per 1024 is then:
- *    1024 * (1 - MinNVB / MaxNVB)
- * Which gives 20 for most NAND devices.  This limit is used in order to derive
- * amount of eraseblock UBI reserves for handling new bad blocks. If the device
- * has more bad eraseblocks than this limit, UBI does not reserve any physical
- * eraseblocks for new bad eraseblocks, but attempts to use available
- * eraseblocks (if any). The accepted range is 0-768. If 0 is given, the
- * default kernel value of %CONFIG_MTD_UBI_BEB_LIMIT will be used.
- */
-struct ubi_attach_req {
-	__s32 ubi_num;
-	__s32 mtd_num;
-	__s32 vid_hdr_offset;
-	__s16 max_beb_per1024;
-	__s8 padding[10];
-};
-
-/**
- * struct ubi_mkvol_req - volume description data structure used in
- *                        volume creation requests.
- * @vol_id: volume number
- * @alignment: volume alignment
- * @bytes: volume size in bytes
- * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
- * @padding1: reserved for future, not used, has to be zeroed
- * @name_len: volume name length
- * @padding2: reserved for future, not used, has to be zeroed
- * @name: volume name
- *
- * This structure is used by user-space programs when creating new volumes. The
- * @used_bytes field is only necessary when creating static volumes.
- *
- * The @alignment field specifies the required alignment of the volume logical
- * eraseblock. This means, that the size of logical eraseblocks will be aligned
- * to this number, i.e.,
- *	(UBI device logical eraseblock size) mod (@alignment) = 0.
- *
- * To put it differently, the logical eraseblock of this volume may be slightly
- * shortened in order to make it properly aligned. The alignment has to be
- * multiple of the flash minimal input/output unit, or %1 to utilize the entire
- * available space of logical eraseblocks.
- *
- * The @alignment field may be useful, for example, when one wants to maintain
- * a block device on top of an UBI volume. In this case, it is desirable to fit
- * an integer number of blocks in logical eraseblocks of this UBI volume. With
- * alignment it is possible to update this volume using plane UBI volume image
- * BLOBs, without caring about how to properly align them.
- */
-struct ubi_mkvol_req {
-	__s32 vol_id;
-	__s32 alignment;
-	__s64 bytes;
-	__s8 vol_type;
-	__s8 padding1;
-	__s16 name_len;
-	__s8 padding2[4];
-	char name[UBI_MAX_VOLUME_NAME + 1];
-} ATTRIBUTE_PACKED;
-
-/**
- * struct ubi_rsvol_req - a data structure used in volume re-size requests.
- * @vol_id: ID of the volume to re-size
- * @bytes: new size of the volume in bytes
- *
- * Re-sizing is possible for both dynamic and static volumes. But while dynamic
- * volumes may be re-sized arbitrarily, static volumes cannot be made to be
- * smaller than the number of bytes they bear. To arbitrarily shrink a static
- * volume, it must be wiped out first (by means of volume update operation with
- * zero number of bytes).
- */
-struct ubi_rsvol_req {
-	__s64 bytes;
-	__s32 vol_id;
-} ATTRIBUTE_PACKED;
-
-/**
- * struct ubi_rnvol_req - volumes re-name request.
- * @count: count of volumes to re-name
- * @padding1:  reserved for future, not used, has to be zeroed
- * @vol_id: ID of the volume to re-name
- * @name_len: name length
- * @padding2:  reserved for future, not used, has to be zeroed
- * @name: new volume name
- *
- * UBI allows to re-name up to %32 volumes at one go. The count of volumes to
- * re-name is specified in the @count field. The ID of the volumes to re-name
- * and the new names are specified in the @vol_id and @name fields.
- *
- * The UBI volume re-name operation is atomic, which means that should power cut
- * happen, the volumes will have either old name or new name. So the possible
- * use-cases of this command is atomic upgrade. Indeed, to upgrade, say, volumes
- * A and B one may create temporary volumes %A1 and %B1 with the new contents,
- * then atomically re-name A1->A and B1->B, in which case old %A and %B will
- * be removed.
- *
- * If it is not desirable to remove old A and B, the re-name request has to
- * contain 4 entries: A1->A, A->A1, B1->B, B->B1, in which case old A1 and B1
- * become A and B, and old A and B will become A1 and B1.
- *
- * It is also OK to request: A1->A, A1->X, B1->B, B->Y, in which case old A1
- * and B1 become A and B, and old A and B become X and Y.
- *
- * In other words, in case of re-naming into an existing volume name, the
- * existing volume is removed, unless it is re-named as well at the same
- * re-name request.
- */
-struct ubi_rnvol_req {
-	__s32 count;
-	__s8 padding1[12];
-	struct {
-		__s32 vol_id;
-		__s16 name_len;
-		__s8  padding2[2];
-		char    name[UBI_MAX_VOLUME_NAME + 1];
-	} ents[UBI_MAX_RNVOL];
-} ATTRIBUTE_PACKED;
-
-/**
- * struct ubi_leb_change_req - a data structure used in atomic LEB change
- *                             requests.
- * @lnum: logical eraseblock number to change
- * @bytes: how many bytes will be written to the logical eraseblock
- * @dtype: pass "3" for better compatibility with old kernels
- * @padding: reserved for future, not used, has to be zeroed
- *
- * The @dtype field used to inform UBI about what kind of data will be written
- * to the LEB: long term (value 1), short term (value 2), unknown (value 3).
- * UBI tried to pick a PEB with lower erase counter for short term data and a
- * PEB with higher erase counter for long term data. But this was not really
- * used because users usually do not know this and could easily mislead UBI. We
- * removed this feature in May 2012. UBI currently just ignores the @dtype
- * field. But for better compatibility with older kernels it is recommended to
- * set @dtype to 3 (unknown).
- */
-struct ubi_leb_change_req {
-	__s32 lnum;
-	__s32 bytes;
-	__s8  dtype; /* obsolete, do not use! */
-	__s8  padding[7];
-} ATTRIBUTE_PACKED;
-
-/**
- * struct ubi_map_req - a data structure used in map LEB requests.
- * @dtype: pass "3" for better compatibility with old kernels
- * @lnum: logical eraseblock number to unmap
- * @padding: reserved for future, not used, has to be zeroed
- */
-struct ubi_map_req {
-	__s32 lnum;
-	__s8  dtype; /* obsolete, do not use! */
-	__s8  padding[3];
-} ATTRIBUTE_PACKED;
-
-
-/**
- * struct ubi_set_vol_prop_req - a data structure used to set an UBI volume
- *                               property.
- * @property: property to set (%UBI_VOL_PROP_DIRECT_WRITE)
- * @padding: reserved for future, not used, has to be zeroed
- * @value: value to set
- */
-struct ubi_set_vol_prop_req {
-	__u8  property;
-	__u8  padding[7];
-	__u64 value;
-}  ATTRIBUTE_PACKED;
-
-#endif /* __UBI_USER_H__ */
diff --git a/linux/x32/arch_defs_.h b/linux/x32/arch_defs_.h
new file mode 100644
index 0000000..40232fd
--- /dev/null
+++ b/linux/x32/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define SUPPORTED_PERSONALITIES 2
diff --git a/linux/x32/arch_kvm.c b/linux/x32/arch_kvm.c
new file mode 100644
index 0000000..e8e982e
--- /dev/null
+++ b/linux/x32/arch_kvm.c
@@ -0,0 +1 @@
+#include "x86_64/arch_kvm.c"
diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h
index 9d4041b..87870e6 100644
--- a/linux/x32/ioctls_inc0.h
+++ b/linux/x32/ioctls_inc0.h
@@ -85,6 +85,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x6454, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
@@ -93,6 +94,7 @@
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
+{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_SCHED", _IOC_WRITE, 0x6455, 0x10 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_VM", _IOC_READ|_IOC_WRITE, 0x6453, 0x08 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_FENCES", _IOC_READ|_IOC_WRITE, 0x6452, 0x18 },
@@ -111,6 +113,8 @@
 { "drm/drm.h", "DRM_IOCTL_AUTH_MAGIC", _IOC_WRITE, 0x6411, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_BLOCK", _IOC_READ|_IOC_WRITE, 0x6412, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_CONTROL", _IOC_WRITE, 0x6414, 0x08 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_GET_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643b, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_CRTC_QUEUE_SEQUENCE", _IOC_READ|_IOC_WRITE, 0x643c, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_DMA", _IOC_READ|_IOC_WRITE, 0x6429, 0x28 },
 { "drm/drm.h", "DRM_IOCTL_DROP_MASTER", _IOC_NONE, 0x641f, 0x00 },
 { "drm/drm.h", "DRM_IOCTL_FINISH", _IOC_WRITE, 0x642c, 0x08 },
@@ -138,6 +142,7 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c6, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
 { "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
 { "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
@@ -154,10 +159,13 @@
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64ac, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64aa, 0x40 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETRESOURCES", _IOC_READ|_IOC_WRITE, 0x64a0, 0x40 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GET_LEASE", _IOC_READ|_IOC_WRITE, 0x64c8, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_LIST_LESSEES", _IOC_READ|_IOC_WRITE, 0x64c7, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_MAP_DUMB", _IOC_READ|_IOC_WRITE, 0x64b3, 0x10 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", _IOC_READ|_IOC_WRITE, 0x64b9, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_OBJ_SETPROPERTY", _IOC_READ|_IOC_WRITE, 0x64ba, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_PAGE_FLIP", _IOC_READ|_IOC_WRITE, 0x64b0, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_MODE_REVOKE_LEASE", _IOC_READ|_IOC_WRITE, 0x64c9, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_RMFB", _IOC_READ|_IOC_WRITE, 0x64af, 0x04 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETCRTC", _IOC_READ|_IOC_WRITE, 0x64a2, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_SETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a5, 0x20 },
@@ -195,10 +203,12 @@
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x38 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_DOM", _IOC_READ|_IOC_WRITE, 0x644a, 0x48 },
+{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_PM_QUERY_SIG", _IOC_READ|_IOC_WRITE, 0x644b, 0x4c },
 { "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
 { "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
@@ -304,7 +314,9 @@
 { "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, 0x28 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x18 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6484, 0x28 },
@@ -408,6 +420,7 @@
 { "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "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_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
 { "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_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
@@ -606,6 +619,7 @@
 { "linux/btrfs.h", "BTRFS_IOC_INO_LOOKUP", _IOC_READ|_IOC_WRITE, 0x9412, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_INO_PATHS", _IOC_READ|_IOC_WRITE, 0x9423, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO", _IOC_READ|_IOC_WRITE, 0x9424, 0x38 },
+{ "linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO_V2", _IOC_READ|_IOC_WRITE, 0x943b, 0x38 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_ASSIGN", _IOC_WRITE, 0x9429, 0x18 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_CREATE", _IOC_WRITE, 0x942a, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_QGROUP_LIMIT", _IOC_READ, 0x942b, 0x30 },
@@ -2400,6 +2414,7 @@
 { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
 { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
 { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
+{ "linux/wmi.h", "DELL_WMI_SMBIOS_CMD", _IOC_READ|_IOC_WRITE, 0x5700, 0x34 },
 { "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
 { "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
 { "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
diff --git a/linux/x32/shuffle_scno.c b/linux/x32/shuffle_scno.c
new file mode 100644
index 0000000..d0db368
--- /dev/null
+++ b/linux/x32/shuffle_scno.c
@@ -0,0 +1,8 @@
+kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+	if (current_personality == 0 && scno != (kernel_ulong_t) -1)
+		scno ^= __X32_SYSCALL_BIT;
+
+	return scno;
+}
diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h
index bbc2447..e448dc5 100644
--- a/linux/x32/syscallent.h
+++ b/linux/x32/syscallent.h
@@ -37,7 +37,7 @@
 [ 36] = { 2,	0,		SEN(getitimer),			"getitimer"		},
 [ 37] = { 1,	0,		SEN(alarm),			"alarm"			},
 [ 38] = { 3,	0,		SEN(setitimer),			"setitimer"		},
-[ 39] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 39] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 40] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile"		},
 [ 41] = { 3,	TN,		SEN(socket),			"socket"		},
 [ 42] = { 3,	TN,		SEN(connect),			"connect"		},
@@ -100,16 +100,16 @@
 [ 99] = { 1,	0,		SEN(sysinfo),			"sysinfo"		},
 [100] = { 1,	0,		SEN(times),			"times"			},
 [101] = { 4,	0,		SEN(printargs),			"64:ptrace"		},
-[102] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[102] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [103] = { 3,	0,		SEN(syslog),			"syslog"		},
-[104] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[104] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [105] = { 1,	0,		SEN(setuid),			"setuid"		},
 [106] = { 1,	0,		SEN(setgid),			"setgid"		},
-[107] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[108] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[107] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[108] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [109] = { 2,	0,		SEN(setpgid),			"setpgid"		},
-[110] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[111] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[110] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[111] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [112] = { 0,	0,		SEN(setsid),			"setsid"		},
 [113] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [114] = { 2,	0,		SEN(setregid),			"setregid"		},
@@ -184,7 +184,7 @@
 [183] = { 5,	0,		SEN(afs_syscall),		"afs_syscall"		},
 [184] = { 3,	0,		SEN(tuxcall),			"tuxcall"		},
 [185] = { 3,	0,		SEN(security),			"security"		},
-[186] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[186] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [187] = { 3,	TD,		SEN(readahead),			"readahead"		},
 [188] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [189] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -238,12 +238,12 @@
 [237] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [238] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
 [239] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
-[240] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[240] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [241] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[242] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[243] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[242] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[243] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
 [244] = { 2,	0,		SEN(printargs),			"64:mq_notify"		},
-[245] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[245] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [246] = { 4,	0,		SEN(printargs),			"64:kexec_load"		},
 [247] = { 5,	TP,		SEN(printargs),			"64:waitid"		},
 [248] = { 5,	0,		SEN(add_key),			"add_key"		},
@@ -351,7 +351,7 @@
 [524] = { 3,	CST|TS,		SEN(rt_sigqueueinfo),		"rt_sigqueueinfo"	},
 [525] = { 2,	CST|TS,		SEN(sigaltstack),		"sigaltstack"		},
 [526] = { 3,	CST,		SEN(timer_create),		"timer_create"		},
-[527] = { 2,	CST,		SEN(mq_notify),			"mq_notify"		},
+[527] = { 2,	CST|TD,		SEN(mq_notify),			"mq_notify"		},
 [528] = { 4,	CST,		SEN(kexec_load),		"kexec_load"		},
 [529] = { 5,	CST|TP,		SEN(waitid),			"waitid"		},
 [530] = { 2,	CST,		SEN(set_robust_list),		"set_robust_list"	},
diff --git a/linux/x86_64/arch_defs_.h b/linux/x86_64/arch_defs_.h
new file mode 100644
index 0000000..169e089
--- /dev/null
+++ b/linux/x86_64/arch_defs_.h
@@ -0,0 +1,4 @@
+#define HAVE_ARCH_OLD_MMAP 1
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_UID16_SYSCALLS 1
+#define SUPPORTED_PERSONALITIES 3
diff --git a/linux/x86_64/arch_kvm.c b/linux/x86_64/arch_kvm.c
new file mode 100644
index 0000000..f0075ca
--- /dev/null
+++ b/linux/x86_64/arch_kvm.c
@@ -0,0 +1,110 @@
+#ifdef HAVE_STRUCT_KVM_REGS
+static void
+arch_print_kvm_regs(struct tcb *const tcp,
+		    const kernel_ulong_t addr,
+		    const struct kvm_regs *const regs)
+{
+	PRINT_FIELD_X("{", *regs, rax);
+	if (abbrev(tcp))
+		tprints(", ...");
+	else {
+		PRINT_FIELD_X(", ",  *regs, rbx);
+		PRINT_FIELD_X(", ",  *regs, rcx);
+		PRINT_FIELD_X(", ",  *regs, rdx);
+		PRINT_FIELD_X(", ",  *regs, rsi);
+		PRINT_FIELD_X(", ",  *regs, rdi);
+	}
+	PRINT_FIELD_X(", ",  *regs, rsp);
+	PRINT_FIELD_X(", ",  *regs, rbp);
+	if (abbrev(tcp))
+		tprints(", ...");
+	else {
+		PRINT_FIELD_X(", ",  *regs, r8);
+		PRINT_FIELD_X(", ",  *regs, r9);
+		PRINT_FIELD_X(", ",  *regs, r10);
+		PRINT_FIELD_X(", ",  *regs, r11);
+		PRINT_FIELD_X(", ",  *regs, r12);
+		PRINT_FIELD_X(", ",  *regs, r13);
+		PRINT_FIELD_X(", ",  *regs, r14);
+		PRINT_FIELD_X(", ",  *regs, r15);
+	}
+	PRINT_FIELD_X(", ",  *regs, rip);
+
+	/* TODO: we can decode this more */
+	PRINT_FIELD_X(", ",  *regs, rflags);
+
+	tprints("}");
+}
+#endif	/* HAVE_STRUCT_KVM_REGS */
+
+#ifdef HAVE_STRUCT_KVM_SREGS
+static void
+kvm_ioctl_decode_regs_segment(const char *prefix,
+			      const struct kvm_segment *const segment)
+{
+	tprints(prefix);
+	PRINT_FIELD_X("={", *segment, base);
+	PRINT_FIELD_U(", ", *segment, limit);
+	PRINT_FIELD_U(", ", *segment, selector);
+	PRINT_FIELD_U(", ", *segment, type);
+	PRINT_FIELD_U(", ", *segment, present);
+	PRINT_FIELD_U(", ", *segment, dpl);
+	PRINT_FIELD_U(", ", *segment, db);
+	PRINT_FIELD_U(", ", *segment, s);
+	PRINT_FIELD_U(", ", *segment, l);
+	PRINT_FIELD_U(", ", *segment, g);
+	PRINT_FIELD_U(", ", *segment, avl);
+	tprints("}");
+}
+
+static void
+kvm_ioctl_decode_regs_dtable(const char *prefix,
+			     const struct kvm_dtable *const dtable)
+{
+	tprints(prefix);
+	PRINT_FIELD_X("={", *dtable, base);
+	PRINT_FIELD_U(", ", *dtable, limit);
+	tprints("}");
+}
+
+# define PRINT_FIELD_KVM_SREGS_STRUCT(prefix_, where_, type_, field_)	\
+	kvm_ioctl_decode_regs_ ## type_(prefix_ #field_, &(where_)->field_)
+
+static void
+arch_print_kvm_sregs(struct tcb *const tcp,
+		     const kernel_ulong_t addr,
+		     const struct kvm_sregs *const sregs)
+{
+	PRINT_FIELD_KVM_SREGS_STRUCT("{", sregs, segment, cs);
+	if (abbrev(tcp)) {
+		tprints(", ...}");
+		return;
+	}
+
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, ds);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, es);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, fs);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, gs);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, ss);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, tr);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, segment, ldt);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, dtable, gdt);
+	PRINT_FIELD_KVM_SREGS_STRUCT(", ", sregs, dtable, idt);
+	PRINT_FIELD_U(", ", *sregs, cr0);
+	PRINT_FIELD_U(", ", *sregs, cr2);
+	PRINT_FIELD_U(", ", *sregs, cr3);
+	PRINT_FIELD_U(", ", *sregs, cr4);
+	PRINT_FIELD_U(", ", *sregs, cr8);
+	PRINT_FIELD_U(", ", *sregs, efer);
+	PRINT_FIELD_X(", ", *sregs, apic_base);
+	tprints(", interrupt_bitmap=[");
+
+	unsigned int i;
+	for (i = 0; i < ARRAY_SIZE(sregs->interrupt_bitmap); i++) {
+		if (i != 0)
+			tprints(", ");
+		tprintf("%#" PRI__x64, sregs->interrupt_bitmap[i]);
+	}
+	tprints("]}");
+}
+#endif	/* HAVE_STRUCT_KVM_SREGS */
diff --git a/linux/x86_64/gentab.pl b/linux/x86_64/gentab.pl
deleted file mode 100644
index 52f7aa9..0000000
--- a/linux/x86_64/gentab.pl
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/perl -w
-#generate syscall table from a template file (usually the master i386 syscall
-#ent.h) and the x86_64 unistd.h
-%conv =  (
-	"exit" => "_exit",
-);
-
-%known = (
-	"mmap" => "sys_mmap",
-	"sched_yield" => "printargs",
-);
-
-# only used when the template file has no entry
-%args = (
-	"arch_prctl" => 2,
-	"tkill" => 2,
-	"gettid" => 0,
-	"readahead" => 3,
-	# should decode all these:
-	"setxattr" => 5,
-	"lsetxattr" => 5,
-	"fsetxattr" => 5,
-	"getxattr" => 4,
-	"lgetxattr" => 4,
-	"fgetxattr" => 4,
-	"listxattr" => 3,
-	"llistxattr" => 3,
-	"flistxattr" => 3,
-	"removexattr" => 2,
-	"lremovexattr" => 2,
-	"fremovexattr" => 2,
-	"mmap" => 6,
-	"sched_yield" => 0,
-);
-
-open(F,$ARGV[0]) || die "cannot open template file $ARGV[0]\n";
-
-while (<F>) {
-	next unless /{/;
-	s/\/\*.*\*\///;
-	($name) = /"([^"]+)"/;
-	chomp;
-	$call{$name} = $_;
-}
-
-open(SL, ">syscallnum.h") || die "cannot create syscallnum.h\n";
-
-open(S,$ARGV[1]) || die "cannot open syscall file $ARGV[1]\n";
-while (<S>) {
-	$name = "";
-	next unless  (($name, $num) = /define\s+__NR_(\S+)\s+(\d+)/);
-	next if $name eq "";
-
-	$name = $conv{$name} if defined($conv{$name});
-
-	if (!defined($call{$name})) {
-		unless (defined($args{$name})) {
-			print STDERR "unknown call $name $num\n";
-			$na = 3;
-		} else {
-			$na = $args{$name};
-		}
-		if (defined($known{$name})) {
-			$func = $known{$name};
-		} else {
-			$func = "printargs";
-		}
-		print "\t{ $na,\t0,\t$func,\t\"$name\" }, /* $num */\n";
-	} else {
-		print "$call{$name} /* $num */\n";
-	}
-	print SL "#define SYS_$name $num\n"
-}
diff --git a/linux/x86_64/get_error.c b/linux/x86_64/get_error.c
index 440fdc7..ac47ab5 100644
--- a/linux/x86_64/get_error.c
+++ b/linux/x86_64/get_error.c
@@ -20,6 +20,9 @@
 		tcp->u_rval = -1;
 		tcp->u_error = -rax;
 	} else {
-		tcp->u_rval = rax;
+		if (x86_io.iov_len == sizeof(i386_regs))
+			tcp->u_rval = (uint32_t) rax;
+		else
+			tcp->u_rval = rax;
 	}
 }
diff --git a/linux/x86_64/get_scno.c b/linux/x86_64/get_scno.c
index 687f843..4b06638 100644
--- a/linux/x86_64/get_scno.c
+++ b/linux/x86_64/get_scno.c
@@ -5,7 +5,7 @@
  * Copyright (c) 2008-2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
  * Copyright (c) 2010-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -75,7 +75,6 @@
 			 * __X32_SYSCALL_BIT logic does not apply.
 			 */
 			if ((long long) x86_64_regs.orig_rax != -1) {
-				scno -= __X32_SYSCALL_BIT;
 				currpers = 2;
 			} else {
 # ifdef X32
@@ -99,7 +98,6 @@
 		case 0x33:
 			if (x86_64_regs.ds == 0x2b) {
 				currpers = 2;
-				scno &= ~__X32_SYSCALL_BIT;
 			} else
 				currpers = 0;
 			break;
diff --git a/linux/x86_64/getregs_old.c b/linux/x86_64/getregs_old.c
index 9f7c248..b96a0d5 100644
--- a/linux/x86_64/getregs_old.c
+++ b/linux/x86_64/getregs_old.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -31,10 +32,10 @@
  * a PTRACE_GETREGS based fallback is provided for old kernels.
  */
 static int
-getregs_old(pid_t pid)
+getregs_old(struct tcb *tcp)
 {
 	/* Use old method, with unreliable heuristical detection of 32-bitness. */
-	long r = ptrace(PTRACE_GETREGS, pid, NULL, &x86_64_regs);
+	long r = ptrace(PTRACE_GETREGS, tcp->pid, NULL, &x86_64_regs);
 	if (r)
 		return r;
 
diff --git a/linux/x86_64/getregs_old.h b/linux/x86_64/getregs_old.h
index 8030301..f13fe24 100644
--- a/linux/x86_64/getregs_old.h
+++ b/linux/x86_64/getregs_old.h
@@ -1,2 +1,2 @@
 #define HAVE_GETREGS_OLD
-static int getregs_old(pid_t);
+static int getregs_old(struct tcb *);
diff --git a/linux/x86_64/set_error.c b/linux/x86_64/set_error.c
index 6c31bd8..0c7e188 100644
--- a/linux/x86_64/set_error.c
+++ b/linux/x86_64/set_error.c
@@ -10,13 +10,19 @@
 arch_set_error(struct tcb *tcp)
 {
 #ifdef HAVE_GETREGS_OLD
-	x86_64_regs.rax = -(long long) tcp->u_error;
-	return upoke(tcp->pid, 8 * RAX, x86_64_regs.rax);
+	kernel_ulong_t	rval = -(kernel_long_t) tcp->u_error;
+
+	if (x86_io.iov_len == sizeof(i386_regs))
+		i386_regs.eax = rval;
+	else
+		x86_64_regs.rax = rval;
+
+	return upoke(tcp, 8 * RAX, rval);
 #else
 	if (x86_io.iov_len == sizeof(i386_regs))
 		return i386_set_error(tcp);
 
-	x86_64_regs.rax = -(long long) tcp->u_error;
+	x86_64_regs.rax = -(kernel_long_t) tcp->u_error;
 	return set_regs(tcp->pid);
 #endif
 }
@@ -25,13 +31,19 @@
 arch_set_success(struct tcb *tcp)
 {
 #ifdef HAVE_GETREGS_OLD
-	x86_64_regs.rax = (long long) tcp->u_rval;
-	return upoke(tcp->pid, 8 * RAX, x86_64_regs.rax);
+	kernel_ulong_t  rval = (kernel_ulong_t) tcp->u_rval;
+
+	if (x86_io.iov_len == sizeof(i386_regs))
+		i386_regs.eax = rval;
+	else
+		x86_64_regs.rax = rval;
+
+	return upoke(tcp, 8 * RAX, rval);
 #else
 	if (x86_io.iov_len == sizeof(i386_regs))
 		return i386_set_success(tcp);
 
-	x86_64_regs.rax = (long long) tcp->u_rval;
+	x86_64_regs.rax = (kernel_ulong_t) tcp->u_rval;
 	return set_regs(tcp->pid);
 #endif
 }
diff --git a/linux/x86_64/set_scno.c b/linux/x86_64/set_scno.c
index 6438c52..3ca402e 100644
--- a/linux/x86_64/set_scno.c
+++ b/linux/x86_64/set_scno.c
@@ -8,7 +8,7 @@
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
 #ifdef HAVE_GETREGS_OLD
-	return upoke(tcp->pid, 8 * ORIG_RAX, scno);
+	return upoke(tcp, 8 * ORIG_RAX, scno);
 #else
 	if (x86_io.iov_len == sizeof(i386_regs))
 		return i386_set_scno(tcp, scno);
diff --git a/linux/x86_64/shuffle_scno.c b/linux/x86_64/shuffle_scno.c
new file mode 100644
index 0000000..77840c2
--- /dev/null
+++ b/linux/x86_64/shuffle_scno.c
@@ -0,0 +1,8 @@
+kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+	if (current_personality == 2)
+		scno ^= __X32_SYSCALL_BIT;
+
+	return scno;
+}
diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h
index 0fafe03..8d95c1d 100644
--- a/linux/x86_64/syscallent.h
+++ b/linux/x86_64/syscallent.h
@@ -37,7 +37,7 @@
 [ 36] = { 2,	0,		SEN(getitimer),			"getitimer"		},
 [ 37] = { 1,	0,		SEN(alarm),			"alarm"			},
 [ 38] = { 3,	0,		SEN(setitimer),			"setitimer"		},
-[ 39] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[ 39] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [ 40] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile"		},
 [ 41] = { 3,	TN,		SEN(socket),			"socket"		},
 [ 42] = { 3,	TN,		SEN(connect),			"connect"		},
@@ -100,16 +100,16 @@
 [ 99] = { 1,	0,		SEN(sysinfo),			"sysinfo"		},
 [100] = { 1,	0,		SEN(times),			"times"			},
 [101] = { 4,	0,		SEN(ptrace),			"ptrace"		},
-[102] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[102] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [103] = { 3,	0,		SEN(syslog),			"syslog"		},
-[104] = { 0,	NF,		SEN(getgid),			"getgid"		},
+[104] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
 [105] = { 1,	0,		SEN(setuid),			"setuid"		},
 [106] = { 1,	0,		SEN(setgid),			"setgid"		},
-[107] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[108] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[107] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[108] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [109] = { 2,	0,		SEN(setpgid),			"setpgid"		},
-[110] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[111] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[110] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[111] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [112] = { 0,	0,		SEN(setsid),			"setsid"		},
 [113] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [114] = { 2,	0,		SEN(setregid),			"setregid"		},
@@ -184,7 +184,7 @@
 [183] = { 5,	0,		SEN(afs_syscall),		"afs_syscall"		},
 [184] = { 3,	0,		SEN(tuxcall),			"tuxcall"		},
 [185] = { 3,	0,		SEN(security),			"security"		},
-[186] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[186] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [187] = { 3,	TD,		SEN(readahead),			"readahead"		},
 [188] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [189] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
@@ -238,12 +238,12 @@
 [237] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [238] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
 [239] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
-[240] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[240] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [241] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[242] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[243] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[244] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[245] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[242] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[243] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[244] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[245] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [246] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [247] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [248] = { 5,	0,		SEN(add_key),			"add_key"		},
diff --git a/linux/xtensa/arch_rt_sigframe.c b/linux/xtensa/arch_rt_sigframe.c
index a40c76a..97ffe6c 100644
--- a/linux/xtensa/arch_rt_sigframe.c
+++ b/linux/xtensa/arch_rt_sigframe.c
@@ -29,5 +29,5 @@
 {
 	unsigned long addr;
 
-	return upeek(tcp->pid, REG_A_BASE + 3, &addr) ? 0 : addr;
+	return upeek(tcp, REG_A_BASE + 3, &addr) ? 0 : addr;
 }
diff --git a/linux/xtensa/get_scno.c b/linux/xtensa/get_scno.c
index d230f73..854a279 100644
--- a/linux/xtensa/get_scno.c
+++ b/linux/xtensa/get_scno.c
@@ -2,5 +2,5 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-	return upeek(tcp->pid, SYSCALL_NR, &tcp->scno) < 0 ? -1 : 1;
+	return upeek(tcp, SYSCALL_NR, &tcp->scno) < 0 ? -1 : 1;
 }
diff --git a/linux/xtensa/get_syscall_args.c b/linux/xtensa/get_syscall_args.c
index a9c933a..2a20cdb 100644
--- a/linux/xtensa/get_syscall_args.c
+++ b/linux/xtensa/get_syscall_args.c
@@ -14,7 +14,7 @@
 	unsigned int i;
 
 	for (i = 0; i < tcp->s_ent->nargs; ++i)
-		if (upeek(tcp->pid, xtensaregs[i], &tcp->u_arg[i]) < 0)
+		if (upeek(tcp, xtensaregs[i], &tcp->u_arg[i]) < 0)
 			return -1;
 	return 1;
 }
diff --git a/linux/xtensa/get_syscall_result.c b/linux/xtensa/get_syscall_result.c
index 51ad6de..6eb513b 100644
--- a/linux/xtensa/get_syscall_result.c
+++ b/linux/xtensa/get_syscall_result.c
@@ -1,5 +1,5 @@
 static int
 get_syscall_result_regs(struct tcb *tcp)
 {
-	return upeek(tcp->pid, REG_A_BASE + 2, &xtensa_a2) < 0 ? -1 : 0;
+	return upeek(tcp, REG_A_BASE + 2, &xtensa_a2) < 0 ? -1 : 0;
 }
diff --git a/linux/xtensa/set_error.c b/linux/xtensa/set_error.c
index 4eb5917..e786b8c 100644
--- a/linux/xtensa/set_error.c
+++ b/linux/xtensa/set_error.c
@@ -2,12 +2,12 @@
 arch_set_error(struct tcb *tcp)
 {
 	xtensa_a2 = -tcp->u_error;
-	return upoke(tcp->pid, REG_A_BASE + 2, xtensa_a2);
+	return upoke(tcp, REG_A_BASE + 2, xtensa_a2);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
 	xtensa_a2 = tcp->u_rval;
-	return upoke(tcp->pid, REG_A_BASE + 2, xtensa_a2);
+	return upoke(tcp, REG_A_BASE + 2, xtensa_a2);
 }
diff --git a/linux/xtensa/set_scno.c b/linux/xtensa/set_scno.c
index 54c948d..ca442fc 100644
--- a/linux/xtensa/set_scno.c
+++ b/linux/xtensa/set_scno.c
@@ -1,5 +1,5 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-	return upoke(tcp->pid, SYSCALL_NR, scno);
+	return upoke(tcp, SYSCALL_NR, scno);
 }
diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h
index 961cdaf..4d69d2e 100644
--- a/linux/xtensa/syscallent.h
+++ b/linux/xtensa/syscallent.h
@@ -113,14 +113,14 @@
 [117] = { 3,	TF|TP|SE|SI,	SEN(execve),			"execve"		},
 [118] = { 1,	TP|SE,		SEN(exit),			"exit"			},
 [119] = { 1,	TP|SE,		SEN(exit),			"exit_group"		},
-[120] = { 0,	NF,		SEN(getpid),			"getpid"		},
+[120] = { 0,	PU|NF,		SEN(getpid),			"getpid"		},
 [121] = { 4,	TP,		SEN(wait4),			"wait4"			},
 [122] = { 5,	TP,		SEN(waitid),			"waitid"		},
 [123] = { 2,	TS,		SEN(kill),			"kill"			},
 [124] = { 2,	TS,		SEN(kill),			"tkill"			},
 [125] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [126] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
-[127] = { 0,	NF,		SEN(gettid),			"gettid"		},
+[127] = { 0,	PU|NF,		SEN(gettid),			"gettid"		},
 [128] = { 0,	0,		SEN(setsid),			"setsid"		},
 [129] = { 1,	0,		SEN(getsid),			"getsid"		},
 [130] = { 5,	0,		SEN(prctl),			"prctl"			},
@@ -130,11 +130,11 @@
 [134] = { 3,	0,		SEN(setitimer),			"setitimer"		},
 [135] = { 2,	0,		SEN(getitimer),			"getitimer"		},
 [136] = { 1,	0,		SEN(setuid),			"setuid"		},
-[137] = { 0,	NF,		SEN(getuid),			"getuid"		},
+[137] = { 0,	PU|NF,		SEN(getuid),			"getuid"		},
 [138] = { 1,	0,		SEN(setgid),			"setgid"		},
-[139] = { 0,	NF,		SEN(getgid),			"getgid"		},
-[140] = { 0,	NF,		SEN(geteuid),			"geteuid"		},
-[141] = { 0,	NF,		SEN(getegid),			"getegid"		},
+[139] = { 0,	PU|NF,		SEN(getgid),			"getgid"		},
+[140] = { 0,	PU|NF,		SEN(geteuid),			"geteuid"		},
+[141] = { 0,	PU|NF,		SEN(getegid),			"getegid"		},
 [142] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [143] = { 2,	0,		SEN(setregid),			"setregid"		},
 [144] = { 3,	0,		SEN(setresuid),			"setresuid"		},
@@ -143,8 +143,8 @@
 [147] = { 3,	0,		SEN(getresgid),			"getresgid"		},
 [148] = { 2,	0,		SEN(setpgid),			"setpgid"		},
 [149] = { 1,	0,		SEN(getpgid),			"getpgid"		},
-[150] = { 0,	NF,		SEN(getppid),			"getppid"		},
-[151] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
+[150] = { 0,	PU|NF,		SEN(getppid),			"getppid"		},
+[151] = { 0,	PU|NF,		SEN(getpgrp),			"getpgrp"		},
 [152 ... 153] = { },
 [154] = { 1,	0,		SEN(times),			"times"			},
 [155] = { 1,	TF,		SEN(acct),			"acct"			},
@@ -222,12 +222,12 @@
 [229] = { 4,	TS,		SEN(rt_sigtimedwait),		"rt_sigtimedwait"	},
 [230] = { 3,	TS,		SEN(rt_sigqueueinfo),		"rt_sigqueueinfo"	},
 [231] = { 2,	TS,		SEN(rt_sigsuspend),		"rt_sigsuspend"		},
-[232] = { 4,	0,		SEN(mq_open),			"mq_open"		},
+[232] = { 4,	TD,		SEN(mq_open),			"mq_open"		},
 [233] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
-[234] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
-[235] = { 5,	0,		SEN(mq_timedreceive),		"mq_timedreceive"	},
-[236] = { 2,	0,		SEN(mq_notify),			"mq_notify"		},
-[237] = { 3,	0,		SEN(mq_getsetattr),		"mq_getsetattr"		},
+[234] = { 5,	TD,		SEN(mq_timedsend),		"mq_timedsend"		},
+[235] = { 5,	TD,		SEN(mq_timedreceive),		"mq_timedreceive"	},
+[236] = { 2,	TD,		SEN(mq_notify),			"mq_notify"		},
+[237] = { 3,	TD,		SEN(mq_getsetattr),		"mq_getsetattr"		},
 [238] = { },
 [239] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
 [240] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
diff --git a/m4/mpers.m4 b/m4/mpers.m4
index 1244682..6b47185 100644
--- a/m4/mpers.m4
+++ b/m4/mpers.m4
@@ -2,6 +2,7 @@
 #
 # Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+# Copyright (c) 2015-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -82,13 +83,16 @@
 pushdef([MPERS_NAME], translit([$1], [a-z], [A-Z]))
 pushdef([HAVE_MPERS], [HAVE_]MPERS_NAME[_MPERS])
 pushdef([HAVE_RUNTIME], [HAVE_]MPERS_NAME[_RUNTIME])
-pushdef([CFLAG], [-$1])
+pushdef([MPERS_CFLAGS], [$cc_flags_$1])
 pushdef([st_cv_cc], [st_cv_$1_cc])
 pushdef([st_cv_runtime], [st_cv_$1_runtime])
 pushdef([st_cv_mpers], [st_cv_$1_mpers])
 
 case "$arch" in
 	[$2])
+	case "$enable_mpers" in
+	yes|check|[$1])
+
 	AH_TEMPLATE([HAVE_GNU_STUBS_32_H],
 		    [Define to 1 if you have the <gnu/stubs-32.h> header file.])
 	AH_TEMPLATE([HAVE_GNU_STUBS_X32_H],
@@ -101,29 +105,32 @@
 			  IFLAG=-I.])
 	popdef([gnu_stubs])
 	saved_CFLAGS="$CFLAGS"
-	CFLAGS="$CFLAGS CFLAG $IFLAG"
-	AC_CACHE_CHECK([for CFLAG compile support], [st_cv_cc],
+	CFLAGS="$CFLAGS MPERS_CFLAGS $IFLAG"
+	AC_CACHE_CHECK([for mpers_name personality compile support], [st_cv_cc],
 		[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdint.h>
 						     int main(){return 0;}]])],
 				   [st_cv_cc=yes],
 				   [st_cv_cc=no])])
 	if test $st_cv_cc = yes; then
-		AC_CACHE_CHECK([for CFLAG runtime support], [st_cv_runtime],
+		AC_CACHE_CHECK([for mpers_name personality runtime support],
+			[st_cv_runtime],
 			[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdint.h>
 							 int main(){return 0;}]])],
 				       [st_cv_runtime=yes],
 				       [st_cv_runtime=no],
 				       [st_cv_runtime=no])])
-		AC_CACHE_CHECK([whether mpers.sh CFLAG works], [st_cv_mpers],
-			[if CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
-			    $srcdir/mpers_test.sh [$1]; then
+		AC_CACHE_CHECK([whether mpers.sh mpers_name MPERS_CFLAGS works],
+			[st_cv_mpers],
+			[if READELF="$READELF" \
+			    CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
+			    $srcdir/mpers_test.sh [$1] MPERS_CFLAGS; then
 				st_cv_mpers=yes
 			 else
 				st_cv_mpers=no
 			 fi])
 		if test $st_cv_mpers = yes; then
 			AC_DEFINE(HAVE_MPERS, [1],
-				  [Define to 1 if you have CFLAG mpers support])
+				  [Define to 1 if you have mpers_name mpers support])
 			st_MPERS_STRUCT_STAT([])
 			st_MPERS_STRUCT_STAT([64])
 
@@ -148,7 +155,25 @@
 	CFLAGS="$saved_CFLAGS"
 	;;
 
-	*)
+	*) # case "$enable_mpers"
+	st_cv_runtime=no
+	st_cv_mpers=no
+	;;
+	esac
+
+	test "$st_cv_mpers" = yes ||
+		st_cv_mpers=no
+	AC_MSG_CHECKING([whether to enable $1 personality support])
+	AC_MSG_RESULT([$st_cv_mpers])
+
+	case "$enable_mpers,$st_cv_mpers" in
+	yes,no|[$1],no)
+		AC_MSG_ERROR([Cannot enable $1 personality support])
+		;;
+	esac
+	;;
+
+	*) # case "$arch"
 	st_cv_runtime=no
 	st_cv_mpers=no
 	;;
@@ -160,7 +185,7 @@
 popdef([st_cv_mpers])
 popdef([st_cv_runtime])
 popdef([st_cv_cc])
-popdef([CFLAG])
+popdef([MPERS_CFLAGS])
 popdef([HAVE_RUNTIME])
 popdef([HAVE_MPERS])
 popdef([MPERS_NAME])
diff --git a/mem.c b/mem.c
index 00f5610..aeb4cae 100644
--- a/mem.c
+++ b/mem.c
@@ -5,7 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2000 PocketPenguins Inc.  Linux for Hitachi SuperH
  *                    port by Greg Banks <gbanks@pocketpenguins.com>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,7 +32,7 @@
  */
 
 #include "defs.h"
-#include <asm/mman.h>
+#include <linux/mman.h>
 #include <sys/mman.h>
 
 unsigned long
@@ -55,6 +55,31 @@
 #include "xlat/mmap_prot.h"
 #include "xlat/mmap_flags.h"
 
+#ifndef MAP_HUGE_SHIFT
+# define MAP_HUGE_SHIFT 26
+#endif
+
+#ifndef MAP_HUGE_MASK
+# define MAP_HUGE_MASK 0x3f
+#endif
+
+static void
+print_mmap_flags(kernel_ulong_t flags)
+{
+	printxval64(mmap_flags, flags & MAP_TYPE, "MAP_???");
+	flags &= ~MAP_TYPE;
+
+	const unsigned int mask = MAP_HUGE_MASK << MAP_HUGE_SHIFT;
+	const unsigned int hugetlb_value = flags & mask;
+
+	flags &= ~mask;
+	addflags(mmap_flags, flags);
+
+	if (hugetlb_value)
+		tprintf("|%u<<MAP_HUGE_SHIFT",
+			hugetlb_value >> MAP_HUGE_SHIFT);
+}
+
 static void
 print_mmap(struct tcb *tcp, kernel_ulong_t *u_arg, unsigned long long offset)
 {
@@ -68,12 +93,7 @@
 	tprintf(", %" PRI_klu ", ", len);
 	printflags64(mmap_prot, prot, "PROT_???");
 	tprints(", ");
-#ifdef MAP_TYPE
-	printxval64(mmap_flags, flags & MAP_TYPE, "MAP_???");
-	addflags(mmap_flags, flags & ~MAP_TYPE);
-#else
-	printflags64(mmap_flags, flags, "MAP_???");
-#endif
+	print_mmap_flags(flags);
 	tprints(", ");
 	printfd(tcp, fd);
 	tprintf(", %#llx", offset);
@@ -87,51 +107,43 @@
  * Confused? Me too!
  */
 
-#if defined AARCH64 || defined ARM \
- || defined I386 || defined X86_64 || defined X32 \
- || defined M68K \
- || defined S390 || defined S390X
+#if HAVE_ARCH_OLD_MMAP
 /* Params are pointed to by u_arg[0], offset is in bytes */
 SYS_FUNC(old_mmap)
 {
-	kernel_ulong_t u_arg[6];
-# if ANY_WORDSIZE_LESS_THAN_KERNEL_LONG
-	/* We are here only in a 32-bit personality. */
-	unsigned int narrow_arg[6];
-	if (umove_or_printaddr(tcp, tcp->u_arg[0], &narrow_arg))
-		return RVAL_DECODED | RVAL_HEX;
-	unsigned int i;
-	for (i = 0; i < 6; i++)
-		u_arg[i] = narrow_arg[i];
-# else
-	if (umove_or_printaddr(tcp, tcp->u_arg[0], &u_arg))
-		return RVAL_DECODED | RVAL_HEX;
-# endif
-	print_mmap(tcp, u_arg, u_arg[5]);
+	kernel_ulong_t *args =
+		fetch_indirect_syscall_args(tcp, tcp->u_arg[0], 6);
+
+	if (args)
+		print_mmap(tcp, args, args[5]);
+	else
+		printaddr(tcp->u_arg[0]);
 
 	return RVAL_DECODED | RVAL_HEX;
 }
-#endif /* old_mmap architectures */
 
-#ifdef S390
+# if HAVE_ARCH_OLD_MMAP_PGOFF
 /* Params are pointed to by u_arg[0], offset is in pages */
 SYS_FUNC(old_mmap_pgoff)
 {
-	kernel_ulong_t u_arg[5];
-	int i;
-	unsigned int narrow_arg[6];
-	unsigned long long offset;
-	if (umove_or_printaddr(tcp, tcp->u_arg[0], &narrow_arg))
-		return RVAL_DECODED | RVAL_HEX;
-	for (i = 0; i < 5; i++)
-		u_arg[i] = narrow_arg[i];
-	offset = narrow_arg[5];
-	offset *= get_pagesize();
-	print_mmap(tcp, u_arg, offset);
+	kernel_ulong_t *args =
+		fetch_indirect_syscall_args(tcp, tcp->u_arg[0], 6);
+
+	if (args) {
+		unsigned long long offset;
+
+		offset = args[5];
+		offset *= get_pagesize();
+
+		print_mmap(tcp, args, offset);
+	} else {
+		printaddr(tcp->u_arg[0]);
+	}
 
 	return RVAL_DECODED | RVAL_HEX;
 }
-#endif /* S390 */
+# endif /* HAVE_ARCH_OLD_MMAP_PGOFF */
+#endif /* HAVE_ARCH_OLD_MMAP */
 
 /* Params are passed directly, offset is in bytes */
 SYS_FUNC(mmap)
@@ -297,14 +309,6 @@
 	return 0;
 }
 
-#if defined ALPHA || defined IA64 || defined M68K \
- || defined SPARC || defined SPARC64
-SYS_FUNC(getpagesize)
-{
-	return RVAL_DECODED | RVAL_HEX;
-}
-#endif
-
 SYS_FUNC(remap_file_pages)
 {
 	const kernel_ulong_t addr = tcp->u_arg[0];
@@ -317,12 +321,7 @@
 	tprintf(", %" PRI_klu ", ", size);
 	printflags64(mmap_prot, prot, "PROT_???");
 	tprintf(", %" PRI_klu ", ", pgoff);
-#ifdef MAP_TYPE
-	printxval64(mmap_flags, flags & MAP_TYPE, "MAP_???");
-	addflags(mmap_flags, flags & ~MAP_TYPE);
-#else
-	printflags64(mmap_flags, flags, "MAP_???");
-#endif
+	print_mmap_flags(flags);
 
 	return RVAL_DECODED;
 }
diff --git a/memfd_create.c b/memfd_create.c
index 1691352..1f6a6d6 100644
--- a/memfd_create.c
+++ b/memfd_create.c
@@ -28,13 +28,37 @@
 
 #include "defs.h"
 
+#ifdef HAVE_LINUX_MEMFD_H
+# include <linux/memfd.h>
+#endif
+
 #include "xlat/memfd_create_flags.h"
 
+#ifndef MFD_HUGE_SHIFT
+# define MFD_HUGE_SHIFT 26
+#endif
+
+#ifndef MFD_HUGE_MASK
+# define MFD_HUGE_MASK 0x3f
+#endif
+
 SYS_FUNC(memfd_create)
 {
-	printstr(tcp, tcp->u_arg[0]);
+	printpathn(tcp, tcp->u_arg[0], 255 - (sizeof("memfd:") - 1));
 	tprints(", ");
-	printflags(memfd_create_flags, tcp->u_arg[1], "MFD_???");
+
+	unsigned int flags = tcp->u_arg[1];
+	const unsigned int mask = MFD_HUGE_MASK << MFD_HUGE_SHIFT;
+	const unsigned int hugetlb_value = flags & mask;
+	flags &= ~mask;
+
+	if (flags || !hugetlb_value)
+		printflags(memfd_create_flags, flags, "MFD_???");
+
+	if (hugetlb_value)
+		tprintf("%s%u<<MFD_HUGE_SHIFT",
+			flags ? "|" : "",
+			hugetlb_value >> MFD_HUGE_SHIFT);
 
 	return RVAL_DECODED | RVAL_FD;
 }
diff --git a/mmsghdr.c b/mmsghdr.c
index c9e6cf0..9b78a1e 100644
--- a/mmsghdr.c
+++ b/mmsghdr.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2012-2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
  * Copyright (c) 2010-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,6 +31,7 @@
 
 #include "defs.h"
 #include "msghdr.h"
+#include "xstring.h"
 #include <limits.h>
 
 static int
@@ -240,8 +242,7 @@
 			return 0;
 		/* timeout on exit */
 		static char str[sizeof("left") + TIMESPEC_TEXT_BUFSIZE];
-		snprintf(str, sizeof(str), "left %s",
-			 sprint_timespec(tcp, tcp->u_arg[4]));
+		xsprintf(str, "left %s", sprint_timespec(tcp, tcp->u_arg[4]));
 		tcp->auxstr = str;
 		return RVAL_STR;
 	}
diff --git a/mpers.awk b/mpers.awk
index 6545052..fcc562e 100644
--- a/mpers.awk
+++ b/mpers.awk
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
 # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2017 The strace developers.
+# Copyright (c) 2015-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -27,19 +27,10 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-function compare_indices(i1, v1, i2, v2, \
-			 c1, c2)
-{
-	c1 = strtonum(sprintf("%s", i1))
-	c2 = strtonum(sprintf("%s", i2))
-	if (c1 < c2)
-		return -1
-	return (c1 != c2)
-}
 function array_get(array_idx, array_member, \
 		   array_return)
 {
-	array_return = array[array_idx][array_member]
+	array_return = array[array_idx, array_member]
 	if ("" == array_return) {
 		printf("%s: index [%s] without %s\n",
 		       FILENAME, array_idx, array_member) > "/dev/stderr"
@@ -47,12 +38,16 @@
 	}
 	return array_return
 }
+function norm_idx(idx)
+{
+	return sprintf("%016s", idx)
+}
 function array_seq(array_idx)
 {
-	if ("seq" in array[array_idx])
-		return array[array_idx]["seq"]
+	if ((array_idx, "seq") in array)
+		return array[array_idx, "seq"]
 	index_seq++
-	array[array_idx]["seq"] = index_seq
+	array[array_idx, "seq"] = index_seq
 	return index_seq
 }
 function enter(array_idx,
@@ -75,72 +70,63 @@
 function update_upper_bound(idx, val, \
 			    count)
 {
-	count = array[idx]["count"]
+	count = array[idx, "count"]
 	if (count == "")
 		count = 1
-	array[idx]["count"] = count * val
-	array[idx]["upper_bound"] = array[idx]["upper_bound"] "[" val "]"
+	array[idx, "count"] = count * val
+	array[idx, "upper_bound"] = array[idx, "upper_bound"] "[" val "]"
 }
 function what_is(what_idx, \
 		 item, loc_diff, location, prev_location, prev_returned_size, \
-		 special, to_return, type_idx)
+		 special, to_return, type_idx, enc, i)
 {
 	enter(what_idx)
 	special = array_get(what_idx, "special")
-	switch (special) {
-	case "base_type":
-		switch (array_get(what_idx, "encoding")) {
-		case 5: # signed
+	if (special == "base_type") {
+		enc = array_get(what_idx, "encoding")
+		if (enc == 5) { # signed
 			printf("int%s_t ",
 			       8 * array_get(what_idx, "byte_size"))
-			break
-		case 7: # unsigned
+		} else if (enc == 7) { # unsigned
 			printf("uint%s_t ",
 			       8 * array_get(what_idx, "byte_size"))
-			break
-		default: # float, signed/unsigned char
+		} else { # float, signed/unsigned char
 			printf("%s ", array_get(what_idx, "name"))
-			break
 		}
 		returned_size = array_get(what_idx, "byte_size")
-		break
-	case "enumeration_type":
+	} else if (special == "enumeration_type") {
 		returned_size = array_get(what_idx, "byte_size")
 		printf("uint%s_t ", 8 * returned_size)
-		break
-	case "pointer_type":
+	} else if (special == "pointer_type") {
 		printf("mpers_ptr_t ")
 		returned_size = array_get(what_idx, "byte_size")
-		break
-	case "array_type":
+	} else if (special == "array_type") {
 		type_idx = array_get(what_idx, "type")
 		what_is(type_idx)
-		to_return = array[what_idx]["upper_bound"]
+		to_return = array[what_idx, "upper_bound"]
 		if ("" == to_return)
 			to_return = "[0]"
-		returned_size = array[what_idx]["count"] * returned_size
+		returned_size = array[what_idx, "count"] * returned_size
 		return leave(what_idx, to_return)
-		break
-	case "structure_type":
+	} else if (special == "structure_type") {
 		print "struct {"
 		prev_location = 0
 		location = 0
 		returned_size = 0
 		prev_returned_size = 0
-		for (item in array) {
-			if ("parent" in array[item] && \
-				array_get(item, "parent") == what_idx) {
-				location = array_get(item, "location")
+		for (i = 1; i <= parents_cnt; i += 1) {
+			if (array_parents[aparents_keys[i]] == what_idx) {
+				location = array_get(aparents_keys[i], "location")
 				loc_diff = location - prev_location - \
 					prev_returned_size
 				if (loc_diff != 0) {
 					printf("unsigned char mpers_%s_%s[%s];\n",
-					       "filler", array_seq(item), loc_diff)
+					       "filler", array_seq(aparents_keys[i]), loc_diff)
 				}
 				prev_location = location
-				returned = what_is(item)
+				returned = what_is(aparents_keys[i])
 				prev_returned_size = returned_size
-				printf("%s%s;\n", array[item]["name"], returned)
+				printf("%s%s;\n", array[aparents_keys[i], "name"], returned)
 			}
 		}
 		returned_size = array_get(what_idx, "byte_size")
@@ -150,31 +136,25 @@
 			       "end_filler", array_seq(item), loc_diff)
 		}
 		printf("} ATTRIBUTE_PACKED ")
-		break
-	case "union_type":
+	} else if (special == "union_type") {
 		print "union {"
-		for (item in array) {
-			if ("parent" in array[item] && \
-				array_get(item, "parent") == what_idx) {
-				returned = what_is(item)
-				printf("%s%s;\n", array[item]["name"], returned)
+		for (i = 1; i <= parents_cnt; i += 1) {
+			if (array_parents[aparents_keys[i]] == what_idx) {
+				returned = what_is(aparents_keys[i])
+				printf("%s%s;\n", array[aparents_keys[i], "name"], returned)
 			}
 		}
 		printf("} ")
 		returned_size = array_get(what_idx, "byte_size")
-		break
-	case "typedef":
+	} else if (special == "typedef") {
 		type_idx = array_get(what_idx, "type")
 		return leave(what_idx, what_is(type_idx))
-		break
-	case "member":
+	} else if (special == "member") {
 		type_idx = array_get(what_idx, "type")
 		return leave(what_idx, what_is(type_idx))
-		break
-	default:
+	} else {
 		type_idx = array_get(what_idx, "type")
 		what_is(type_idx)
-		break
 	}
 	return leave(what_idx, "")
 }
@@ -186,31 +166,32 @@
 /^<[[:xdigit:]]+>/ {
 	match($0, /([[:alnum:]]+)><([[:alnum:]]+)/, matches)
 	level = matches[1]
-	idx = "0x" matches[2]
-	array[idx]["idx"] = idx
+	idx = norm_idx(matches[2])
+	array[idx, "idx"] = idx
 	parent[level] = idx
 }
 /^DW_AT_data_member_location/ {
 	if (!match($0, /\(DW_OP_plus_uconst:[[:space:]]+([[:digit:]]+)\)/, temparray))
 		match($0, /([[:digit:]]+)/, temparray)
-	array[idx]["location"] = temparray[1]
+	array[idx, "location"] = temparray[1]
 }
 /^DW_AT_name/ {
 	match($0, /:[[:space:]]+([[:alpha:]_][[:alnum:]_[:space:]]*)/, \
 		temparray)
-	array[idx]["name"] = temparray[1]
+	array_names[idx] = 1
+	array[idx, "name"] = temparray[1]
 }
 /^DW_AT_byte_size/ {
 	match($0, /[[:digit:]]+/, temparray)
-	array[idx]["byte_size"] = temparray[0]
+	array[idx, "byte_size"] = temparray[0]
 }
 /^DW_AT_encoding/ {
 	match($0, /[[:digit:]]+/, temparray)
-	array[idx]["encoding"] = temparray[0]
+	array[idx, "encoding"] = temparray[0]
 }
 /^DW_AT_type/ {
-	match($0, /:[[:space:]]+<(0x[[:xdigit:]]*)>$/, temparray)
-	array[idx]["type"] = temparray[1]
+	match($0, /:[[:space:]]+<0x([[:xdigit:]]*)>$/, temparray)
+	array[idx, "type"] = norm_idx(temparray[1])
 }
 /^DW_AT_upper_bound/ {
 	match($0, /[[:digit:]]+/, temparray)
@@ -223,24 +204,30 @@
 /^Abbrev Number:[^(]+\(DW_TAG_/ {
 	if (match($0, /typedef|union_type|structure_type|pointer_type\
 |enumeration_type|array_type|base_type|member/, temparray)) {
-		array[idx]["special"] = temparray[0]
+		array_special[idx] = temparray[0]
+		array[idx, "special"] = temparray[0]
 		if ("pointer_type" == temparray[0])
-			array[idx]["byte_size"] = default_pointer_size
+			array[idx, "byte_size"] = default_pointer_size
 		if (level > 1 && "member" == temparray[0])
-			array[idx]["parent"] = parent[level-1]
+			array_parents[idx] = parent[level-1]
 	}
 }
 END {
-	PROCINFO["sorted_in"] = "compare_indices"
-	for (item in array) {
-		if (array[item]["special"] == "pointer_type") {
-			print "typedef uint" \
-				8 * array_get(item, "byte_size") "_t mpers_ptr_t;"
+	parents_cnt = asorti(array_parents, aparents_keys)
+
+	for (item in array_special) {
+		if (array[item, "special"] == "pointer_type") {
+			mpers_ptr_t = \
+				"uint" 8 * array_get(item, "byte_size") "_t"
+			print "#ifndef mpers_ptr_t_is_" mpers_ptr_t
+			print "typedef " mpers_ptr_t " mpers_ptr_t;"
+			print "#define mpers_ptr_t_is_" mpers_ptr_t
+			print "#endif"
 			break
 		}
 	}
-	for (item in array) {
-		if (array[item]["name"] == VAR_NAME) {
+	for (item in array_names) {
+		if (array[item, "name"] == VAR_NAME) {
 			type = array_get(item, "type")
 			print "typedef"
 			what_is(type)
diff --git a/mpers.sh b/mpers.sh
index 714ad1b..f01f6c9 100755
--- a/mpers.sh
+++ b/mpers.sh
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 #
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2015-2017 The strace developers.
+# Copyright (c) 2015-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -30,15 +30,17 @@
 
 MPERS_AWK="${0%/*}/mpers.awk"
 ARCH_FLAG=$1
-PARSER_FILE=$2
+CC_ARCH_FLAG=$2
+PARSER_FILE=$3
 
+READELF="${READELF:-readelf}"
 CC="${CC-gcc}"
 CFLAGS="$CFLAGS -gdwarf-2 -c"
 CPP="${CPP-$CC -E}"
 CPPFLAGS="$CPPFLAGS -MM -MG"
 
 VAR_NAME='mpers_target_var'
-BITS_DIR="mpers${ARCH_FLAG}"
+BITS_DIR="mpers-${ARCH_FLAG}"
 
 mkdir -p ${BITS_DIR}
 set -- $(sed -r -n \
@@ -61,8 +63,8 @@
 	grep -F -q "${m_type}.h" "${f_i}" ||
 		continue
 	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}"
+	$CC $CFLAGS $CC_ARCH_FLAG "${f_c}" -o "${f_o}"
+	$READELF --debug-dump=info "${f_o}" > "${f_d1}"
 	sed -r -n '
 		/^[[:space:]]*<1>/,/^[[:space:]]*<1><[^>]+>: Abbrev Number: 0/!d
 		/^[[:space:]]*<[^>]*><[^>]*>: Abbrev Number: 0/d
@@ -70,6 +72,6 @@
 		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#-}" \
+	gawk -v VAR_NAME="$VAR_NAME" -v ARCH_FLAG="${ARCH_FLAG}" \
 		-f "$MPERS_AWK" "${f_d2}" > "${f_h}"
 done
diff --git a/mpers_test.sh b/mpers_test.sh
index 66588ee..982f0a0 100755
--- a/mpers_test.sh
+++ b/mpers_test.sh
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2017 The strace developers.
+# Copyright (c) 2015-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -28,6 +28,7 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 mpers_name="$1"; shift
+mpers_cc_flags="$1"; shift
 size="$(printf %s "$mpers_name" |tr -cd '[0-9]')"
 [ "$size" -gt 0 ]
 
@@ -80,9 +81,13 @@
 EOF
 
 expected="$mpers_dir/sample.expected"
+mpers_ptr_t="uint${size}_t"
 cat > "$expected" <<EOF
 #include <inttypes.h>
-typedef uint${size}_t mpers_ptr_t;
+#ifndef mpers_ptr_t_is_${mpers_ptr_t}
+typedef ${mpers_ptr_t} mpers_ptr_t;
+#define mpers_ptr_t_is_${mpers_ptr_t}
+#endif
 typedef
 struct {
 struct {
@@ -124,5 +129,5 @@
 
 CFLAGS="$CPPFLAGS -I${srcdir} -DMPERS_IS_${mpers_name}" \
 CPPFLAGS="$CPPFLAGS -I${srcdir} -DIN_MPERS -DMPERS_IS_${mpers_name}" \
-"$mpers_sh" "-$mpers_name" "$sample"
+"$mpers_sh" "$mpers_name" "$mpers_cc_flags" "$sample"
 cmp "$expected" "$mpers_dir"/sample_struct.h > /dev/null
diff --git a/mq.c b/mq.c
index 1bcb515..85438f1 100644
--- a/mq.c
+++ b/mq.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,12 +43,13 @@
 		tprints(", ");
 		printmqattr(tcp, tcp->u_arg[3], false);
 	}
-	return RVAL_DECODED;
+	return RVAL_DECODED | RVAL_FD;
 }
 
 SYS_FUNC(mq_timedsend)
 {
-	tprintf("%d, ", (int) tcp->u_arg[0]);
+	printfd(tcp, tcp->u_arg[0]);
+	tprints(", ");
 	printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]);
 	tprintf(", %" PRI_klu ", %u, ", tcp->u_arg[2],
 		(unsigned int) tcp->u_arg[3]);
@@ -59,7 +60,8 @@
 SYS_FUNC(mq_timedreceive)
 {
 	if (entering(tcp)) {
-		tprintf("%d, ", (int) tcp->u_arg[0]);
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			printaddr(tcp->u_arg[1]);
@@ -82,7 +84,8 @@
 
 SYS_FUNC(mq_notify)
 {
-	tprintf("%d, ", (int) tcp->u_arg[0]);
+	printfd(tcp, tcp->u_arg[0]);
+	tprints(", ");
 	print_sigevent(tcp, tcp->u_arg[1]);
 	return RVAL_DECODED;
 }
@@ -90,7 +93,8 @@
 SYS_FUNC(mq_getsetattr)
 {
 	if (entering(tcp)) {
-		tprintf("%d, ", (int) tcp->u_arg[0]);
+		printfd(tcp, tcp->u_arg[0]);
+		tprints(", ");
 		printmqattr(tcp, tcp->u_arg[1], true);
 		tprints(", ");
 	} else {
diff --git a/msghdr.c b/msghdr.c
index dd9c430..c698e54 100644
--- a/msghdr.c
+++ b/msghdr.c
@@ -262,12 +262,12 @@
 }
 
 static unsigned int
-get_optmem_max(void)
+get_optmem_max(struct tcb *tcp)
 {
 	static int optmem_max;
 
 	if (!optmem_max) {
-		if (read_int_from_file("/proc/sys/net/core/optmem_max",
+		if (read_int_from_file(tcp, "/proc/sys/net/core/optmem_max",
 				       &optmem_max) || optmem_max <= 0) {
 			optmem_max = sizeof(long long) * (2 * IOV_MAX + 512);
 		} else {
@@ -293,8 +293,8 @@
 #endif
 			sizeof(struct cmsghdr);
 
-	unsigned int control_len = in_control_len > get_optmem_max()
-				   ? get_optmem_max() : in_control_len;
+	unsigned int control_len = in_control_len > get_optmem_max(tcp)
+				   ? get_optmem_max(tcp) : in_control_len;
 	unsigned int buf_len = control_len;
 	char *buf = buf_len < cmsg_size ? NULL : malloc(buf_len);
 	if (!buf || umoven(tcp, addr, buf_len, buf) < 0) {
diff --git a/mtd.c b/mtd.c
index 8e5fe46..52957f9 100644
--- a/mtd.c
+++ b/mtd.c
@@ -27,28 +27,27 @@
 
 #include "defs.h"
 
-#include DEF_MPERS_TYPE(struct_mtd_oob_buf)
+#ifdef HAVE_STRUCT_MTD_WRITE_REQ
 
-#include <linux/ioctl.h>
+# include DEF_MPERS_TYPE(struct_mtd_oob_buf)
 
-/* The mtd api changes quickly, so we have to keep a local copy */
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
-# include "mtd-abi.h"
-#else
+# include <linux/ioctl.h>
 # include <mtd/mtd-abi.h>
-#endif
 
 typedef struct mtd_oob_buf struct_mtd_oob_buf;
 
+#endif /* HAVE_STRUCT_MTD_WRITE_REQ */
+
 #include MPERS_DEFS
 
-#include "xlat/mtd_mode_options.h"
-#include "xlat/mtd_file_mode_options.h"
-#include "xlat/mtd_type_options.h"
-#include "xlat/mtd_flags_options.h"
-#include "xlat/mtd_otp_options.h"
-#include "xlat/mtd_nandecc_options.h"
+#ifdef HAVE_STRUCT_MTD_WRITE_REQ
+
+# include "xlat/mtd_mode_options.h"
+# include "xlat/mtd_file_mode_options.h"
+# include "xlat/mtd_type_options.h"
+# include "xlat/mtd_flags_options.h"
+# include "xlat/mtd_otp_options.h"
+# include "xlat/mtd_nandecc_options.h"
 
 static void
 decode_erase_info_user(struct tcb *const tcp, const kernel_ulong_t addr)
@@ -362,3 +361,5 @@
 
 	return RVAL_IOCTL_DECODED;
 }
+
+#endif /* HAVE_STRUCT_MTD_WRITE_REQ */
diff --git a/negated_errno.h b/negated_errno.h
index 9ec851b..cdc0210 100644
--- a/negated_errno.h
+++ b/negated_errno.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -35,8 +36,7 @@
 static inline bool
 is_negated_errno(kernel_ulong_t val)
 {
-	/* Linux kernel defines MAX_ERRNO to 4095. */
-	kernel_ulong_t max = -(kernel_long_t) 4095;
+	kernel_ulong_t max = -(kernel_long_t) MAX_ERRNO_VALUE;
 
 #ifndef current_klongsize
 	if (current_klongsize < sizeof(val)) {
diff --git a/net.c b/net.c
index 34a394d..6745296 100644
--- a/net.c
+++ b/net.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -354,7 +354,7 @@
 
 SYS_FUNC(pipe)
 {
-#ifdef HAVE_GETRVAL2
+#if HAVE_ARCH_GETRVAL2
 	if (exiting(tcp) && !syserror(tcp))
 		printpair_fd(tcp, tcp->u_rval, getrval2(tcp));
 	return 0;
@@ -390,8 +390,9 @@
 #include "xlat/getsockipv6options.h"
 #include "xlat/setsockipv6options.h"
 #include "xlat/sockipxoptions.h"
-#include "xlat/sockrawoptions.h"
+#include "xlat/socknetlinkoptions.h"
 #include "xlat/sockpacketoptions.h"
+#include "xlat/sockrawoptions.h"
 #include "xlat/socksctpoptions.h"
 #include "xlat/socktcpoptions.h"
 
@@ -431,6 +432,9 @@
 	case SOL_RAW:
 		printxval(sockrawoptions, name, "RAW_???");
 		break;
+	case SOL_NETLINK:
+		printxval(socknetlinkoptions, name, "NETLINK_???");
+		break;
 
 		/* Other SOL_* protocol levels still need work. */
 
@@ -552,27 +556,35 @@
 	tprints(")");
 }
 
+static bool
+print_uint32(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+	tprintf("%u", *(uint32_t *) elem_buf);
+
+	return true;
+}
+
 static void
 print_getsockopt(struct tcb *const tcp, const unsigned int level,
 		 const unsigned int name, const kernel_ulong_t addr,
-		 const int len)
+		 const int ulen, const int rlen)
 {
 	if (addr && verbose(tcp))
 	switch (level) {
 	case SOL_SOCKET:
 		switch (name) {
 		case SO_LINGER:
-			print_get_linger(tcp, addr, len);
+			print_get_linger(tcp, addr, rlen);
 			return;
 #ifdef SO_PEERCRED
 		case SO_PEERCRED:
-			print_ucred(tcp, addr, len);
+			print_ucred(tcp, addr, rlen);
 			return;
 #endif
 #ifdef SO_ATTACH_FILTER
 		case SO_ATTACH_FILTER:
-			if (len && (unsigned short) len == (unsigned int) len)
-				print_sock_fprog(tcp, addr, len);
+			if (rlen && (unsigned short) rlen == (unsigned int) rlen)
+				print_sock_fprog(tcp, addr, rlen);
 			else
 				printaddr(addr);
 			return;
@@ -584,7 +596,7 @@
 		switch (name) {
 #ifdef PACKET_STATISTICS
 		case PACKET_STATISTICS:
-			print_tpacket_stats(tcp, addr, len);
+			print_tpacket_stats(tcp, addr, rlen);
 			return;
 #endif
 		}
@@ -593,19 +605,44 @@
 	case SOL_RAW:
 		switch (name) {
 		case ICMP_FILTER:
-			print_icmp_filter(tcp, addr, len);
+			print_icmp_filter(tcp, addr, rlen);
 			return;
 		}
 		break;
+
+	case SOL_NETLINK:
+		if (ulen < 0 || rlen < 0) {
+			/*
+			 * As the kernel neither accepts nor returns a negative
+			 * length, in case of successful getsockopt syscall
+			 * invocation these negative values must have come
+			 * from userspace.
+			 */
+			printaddr(addr);
+			return;
+		}
+		switch (name) {
+		case NETLINK_LIST_MEMBERSHIPS: {
+			uint32_t buf;
+			print_array(tcp, addr, MIN(ulen, rlen) / sizeof(buf),
+				    &buf, sizeof(buf),
+				    umoven_or_printaddr, print_uint32, 0);
+			break;
+			}
+		default:
+			printnum_int(tcp, addr, "%d");
+			break;
+		}
+		return;
 	}
 
 	/* default arg printing */
 
 	if (verbose(tcp)) {
-		if (len == sizeof(int)) {
+		if (rlen == sizeof(int)) {
 			printnum_int(tcp, addr, "%d");
 		} else {
-			printstrn(tcp, addr, len);
+			printstrn(tcp, addr, rlen);
 		}
 	} else {
 		printaddr(addr);
@@ -638,7 +675,7 @@
 			tprintf(", [%d]", ulen);
 		} else {
 			print_getsockopt(tcp, tcp->u_arg[1], tcp->u_arg[2],
-					 tcp->u_arg[3], rlen);
+					 tcp->u_arg[3], ulen, rlen);
 			if (ulen != rlen)
 				tprintf(", [%d->%d]", ulen, rlen);
 			else
@@ -821,6 +858,13 @@
 			return;
 		}
 		break;
+
+	case SOL_NETLINK:
+		if (len < (int) sizeof(int))
+			printaddr(addr);
+		else
+			printnum_int(tcp, addr, "%d");
+		return;
 	}
 
 	/* default arg printing */
diff --git a/netlink.c b/netlink.c
index 6b9a1f5..beb6ea4 100644
--- a/netlink.c
+++ b/netlink.c
@@ -107,7 +107,7 @@
 }
 
 static void
-decode_nlmsg_type_default(const struct xlat *const xlat,
+decode_nlmsg_type_default(struct tcb *tcp, const struct xlat *const xlat,
 			  const uint16_t type,
 			  const char *const dflt)
 {
@@ -115,11 +115,11 @@
 }
 
 static void
-decode_nlmsg_type_generic(const struct xlat *const xlat,
+decode_nlmsg_type_generic(struct tcb *tcp, const struct xlat *const xlat,
 			  const uint16_t type,
 			  const char *const dflt)
 {
-	printxval(genl_families_xlat(), type, dflt);
+	printxval(genl_families_xlat(tcp), type, dflt);
 }
 
 static const struct {
@@ -155,7 +155,7 @@
 };
 
 static void
-decode_nlmsg_type_netfilter(const struct xlat *const xlat,
+decode_nlmsg_type_netfilter(struct tcb *tcp, const struct xlat *const xlat,
 			    const uint16_t type,
 			    const char *const dflt)
 {
@@ -183,7 +183,7 @@
 		tprintf("%#x", msg_type);
 }
 
-typedef void (*nlmsg_types_decoder_t)(const struct xlat *,
+typedef void (*nlmsg_types_decoder_t)(struct tcb *, const struct xlat *,
 				      uint16_t type,
 				      const char *dflt);
 
@@ -215,7 +215,8 @@
  * for family here to filter out -1.
  */
 static void
-decode_nlmsg_type(const uint16_t type, const unsigned int family)
+decode_nlmsg_type(struct tcb *tcp, const uint16_t type,
+		  const unsigned int family)
 {
 	nlmsg_types_decoder_t decoder = decode_nlmsg_type_default;
 	const struct xlat *xlat = netlink_types;
@@ -234,7 +235,7 @@
 			dflt = nlmsg_types[family].dflt;
 	}
 
-	decoder(xlat, type, dflt);
+	decoder(tcp, xlat, type, dflt);
 }
 
 static const struct xlat *
@@ -443,7 +444,7 @@
 
 	tprintf("{len=%u, type=", nlmsghdr->nlmsg_len);
 
-	decode_nlmsg_type(nlmsghdr->nlmsg_type, family);
+	decode_nlmsg_type(tcp, nlmsghdr->nlmsg_type, family);
 
 	tprints(", flags=");
 	decode_nlmsg_flags(nlmsghdr->nlmsg_flags,
diff --git a/netlink_inet_diag.c b/netlink_inet_diag.c
index cffe3f5..a54ba22 100644
--- a/netlink_inet_diag.c
+++ b/netlink_inet_diag.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017 The strace developers.
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -202,7 +202,7 @@
 	if (len >= sizeof(req)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(req) - offset,
-					 (void *) &req + offset)) {
+					 (char *) &req + offset)) {
 			PRINT_FIELD_U("", req, idiag_src_len);
 			PRINT_FIELD_U(", ", req, idiag_dst_len);
 			PRINT_FIELD_FLAGS(", ", req, idiag_ext,
@@ -245,7 +245,7 @@
 	if (len >= sizeof(req)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(req) - offset,
-					 (void *) &req + offset)) {
+					 (char *) &req + offset)) {
 			PRINT_FIELD_XVAL("", req, sdiag_protocol,
 					 inet_protocols, "IPPROTO_???");
 			PRINT_FIELD_FLAGS(", ", req, idiag_ext,
@@ -275,11 +275,9 @@
 {
 	if (nlmsghdr->nlmsg_type == TCPDIAG_GETSOCK
 	    || nlmsghdr->nlmsg_type == DCCPDIAG_GETSOCK)
-		return decode_inet_diag_req_compat(tcp, nlmsghdr,
-						   family, addr, len);
+		decode_inet_diag_req_compat(tcp, nlmsghdr, family, addr, len);
 	else
-		return decode_inet_diag_req_v2(tcp, nlmsghdr,
-					       family, addr, len);
+		decode_inet_diag_req_v2(tcp, nlmsghdr, family, addr, len);
 }
 
 static bool
@@ -403,7 +401,7 @@
 	if (len >= sizeof(msg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(msg) - offset,
-					 (void *) &msg + offset)) {
+					 (char *) &msg + offset)) {
 			PRINT_FIELD_XVAL("", msg, idiag_state,
 					 tcp_states, "TCP_???");
 			PRINT_FIELD_U(", ", msg, idiag_timer);
diff --git a/netlink_netlink_diag.c b/netlink_netlink_diag.c
index 65d4195..eb689b8 100644
--- a/netlink_netlink_diag.c
+++ b/netlink_netlink_diag.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017 The strace developers.
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -51,7 +51,7 @@
 	if (len >= sizeof(req)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(req) - offset,
-					 (void *) &req + offset)) {
+					 (char *) &req + offset)) {
 			if (NDIAG_PROTO_ALL == req.sdiag_protocol)
 				tprintf("%s=%s",
 					"sdiag_protocol", "NDIAG_PROTO_ALL");
@@ -162,7 +162,7 @@
 	if (len >= sizeof(msg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(msg) - offset,
-					 (void *) &msg + offset)) {
+					 (char *) &msg + offset)) {
 			PRINT_FIELD_XVAL("", msg, ndiag_type,
 					 socktypes, "SOCK_???");
 			PRINT_FIELD_XVAL(", ", msg, ndiag_protocol,
diff --git a/netlink_packet_diag.c b/netlink_packet_diag.c
index 8a69d4c..4952383 100644
--- a/netlink_packet_diag.c
+++ b/netlink_packet_diag.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017 The strace developers.
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -51,7 +51,7 @@
 	if (len >= sizeof(req)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(req) - offset,
-					 (void *) &req + offset)) {
+					 (char *) &req + offset)) {
 			PRINT_FIELD_XVAL("", req, sdiag_protocol,
 					 ethernet_protocols, "ETH_P_???");
 			PRINT_FIELD_U(", ", req, pdiag_ino);
@@ -187,7 +187,7 @@
 	if (len >= sizeof(msg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(msg) - offset,
-					 (void *) &msg + offset)) {
+					 (char *) &msg + offset)) {
 			PRINT_FIELD_XVAL("", msg, pdiag_type,
 					 socktypes, "SOCK_???");
 			PRINT_FIELD_U(", ", msg, pdiag_num);
diff --git a/netlink_unix_diag.c b/netlink_unix_diag.c
index 254a659..4f3fbcc 100644
--- a/netlink_unix_diag.c
+++ b/netlink_unix_diag.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017 The strace developers.
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,7 +49,7 @@
 	if (len >= sizeof(req)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(req) - offset,
-					 (void *) &req + offset)) {
+					 (char *) &req + offset)) {
 			PRINT_FIELD_U("", req, sdiag_protocol);
 			PRINT_FIELD_FLAGS(", ", req, udiag_states,
 					  tcp_state_flags, "1<<TCP_???");
@@ -153,7 +153,7 @@
 	if (len >= sizeof(msg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(msg) - offset,
-					 (void *) &msg + offset)) {
+					 (char *) &msg + offset)) {
 			PRINT_FIELD_XVAL("", msg, udiag_type,
 					 socktypes, "SOCK_???");
 			PRINT_FIELD_XVAL(", ", msg, udiag_state,
diff --git a/nlattr.c b/nlattr.c
index 6f35b99..ac430f4 100644
--- a/nlattr.c
+++ b/nlattr.c
@@ -208,6 +208,22 @@
 }
 
 bool
+decode_nla_fd(struct tcb *const tcp,
+	      const kernel_ulong_t addr,
+	      const unsigned int len,
+	      const void *const opaque_data)
+{
+	int fd;
+
+	if (len < sizeof(fd))
+		return false;
+	else if (!umove_or_printaddr(tcp, addr, &fd))
+		printfd(tcp, fd);
+
+	return true;
+}
+
+bool
 decode_nla_ifindex(struct tcb *const tcp,
 	       const kernel_ulong_t addr,
 	       const unsigned int len,
diff --git a/nlattr.h b/nlattr.h
index 323f1d6..00cbfd5 100644
--- a/nlattr.h
+++ b/nlattr.h
@@ -60,6 +60,7 @@
 DECL_NLA(be64);
 DECL_NLA(str);
 DECL_NLA(strn);
+DECL_NLA(fd);
 DECL_NLA(ifindex);
 DECL_NLA(meminfo);
 DECL_NLA(rt_class);
diff --git a/open.c b/open.c
index 2822266..afa5020 100644
--- a/open.c
+++ b/open.c
@@ -7,7 +7,7 @@
  * Copyright (c) 2006-2007 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2009-2013 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,8 +34,9 @@
  */
 
 #include "defs.h"
+#include "xstring.h"
 
-#include <fcntl.h>
+#include <asm/fcntl.h>
 
 /* some libcs are guilty of messing up with O_ACCMODE */
 #undef O_ACCMODE
@@ -44,11 +45,6 @@
 #ifdef O_LARGEFILE
 # if O_LARGEFILE == 0		/* biarch platforms in 64-bit mode */
 #  undef O_LARGEFILE
-#  ifdef SPARC64
-#   define O_LARGEFILE 0x40000
-#  elif defined X86_64 || defined S390X
-#   define O_LARGEFILE 0100000
-#  endif
 # endif
 #endif
 
@@ -110,7 +106,7 @@
 	}
 	/* flags is still nonzero */
 	*p++ = sep;
-	sprintf(p, "%#x", flags);
+	p = xappendstr(outstr, p, "%#x", flags);
 	return outstr;
 }
 
diff --git a/pathtrace.c b/pathtrace.c
index 5258238..c0c16f5 100644
--- a/pathtrace.c
+++ b/pathtrace.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011 Comtrol Corp.
- * Copyright (c) 2011-2017 The strace developers.
+ * Copyright (c) 2011-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,10 +28,11 @@
  */
 
 #include "defs.h"
-#include <sys/param.h>
+#include <limits.h>
 #include <poll.h>
 
 #include "syscall.h"
+#include "xstring.h"
 
 struct path_set global_path_set;
 
@@ -82,16 +83,15 @@
 static void
 storepath(const char *path, struct path_set *set)
 {
-	unsigned i;
-
 	if (pathmatch(path, set))
 		return; /* already in table */
 
-	i = set->num_selected++;
-	set->paths_selected = xreallocarray(set->paths_selected,
-					    set->num_selected,
-					    sizeof(set->paths_selected[0]));
-	set->paths_selected[i] = path;
+	if (set->num_selected >= set->size)
+		set->paths_selected =
+			xgrowarray(set->paths_selected, &set->size,
+				   sizeof(set->paths_selected[0]));
+
+	set->paths_selected[set->num_selected++] = path;
 }
 
 /*
@@ -106,7 +106,7 @@
 	if (fd < 0)
 		return -1;
 
-	sprintf(linkpath, "/proc/%u/fd/%u", tcp->pid, fd);
+	xsprintf(linkpath, "/proc/%u/fd/%u", tcp->pid, fd);
 	n = readlink(linkpath, buf, bufsize - 1);
 	/*
 	 * NB: if buf is too small, readlink doesn't fail,
@@ -143,6 +143,41 @@
 	storepath(rpath, set);
 }
 
+static bool
+match_xselect_args(struct tcb *tcp, const kernel_ulong_t *args,
+		   struct path_set *set)
+{
+	/* Kernel truncates arg[0] to int, we do the same. */
+	int nfds = (int) args[0];
+	/* Kernel rejects negative nfds, so we don't parse it either. */
+	if (nfds <= 0)
+		return false;
+	/* Beware of select(2^31-1, NULL, NULL, NULL) and similar... */
+	if (nfds > 1024*1024)
+		nfds = 1024*1024;
+	unsigned int fdsize = (((nfds + 7) / 8) + current_wordsize-1) & -current_wordsize;
+	fd_set *fds = xmalloc(fdsize);
+
+	for (unsigned int i = 1; i <= 3; ++i) {
+		if (args[i] == 0)
+			continue;
+		if (umoven(tcp, args[i], fdsize, fds) < 0)
+			continue;
+		for (int j = 0;; ++j) {
+			j = next_set_bit(fds, j, nfds);
+			if (j < 0)
+				break;
+			if (fdmatch(tcp, j, set)) {
+				free(fds);
+				return true;
+			}
+		}
+	}
+
+	free(fds);
+	return false;
+}
+
 /*
  * Return true if syscall accesses a selected path
  * (or if no paths have been specified for tracing).
@@ -214,10 +249,19 @@
 			upathmatch(tcp, tcp->u_arg[1], set) ||
 			upathmatch(tcp, tcp->u_arg[3], set);
 
+#if HAVE_ARCH_OLD_MMAP
 	case SEN_old_mmap:
-#if defined(S390)
+# if HAVE_ARCH_OLD_MMAP_PGOFF
 	case SEN_old_mmap_pgoff:
-#endif
+# endif
+	{
+		kernel_ulong_t *args =
+			fetch_indirect_syscall_args(tcp, tcp->u_arg[0], 6);
+
+		return args && fdmatch(tcp, args[4], set);
+	}
+#endif /* HAVE_ARCH_OLD_MMAP */
+
 	case SEN_mmap:
 	case SEN_mmap_4koff:
 	case SEN_mmap_pgoff:
@@ -249,70 +293,18 @@
 		return fdmatch(tcp, tcp->u_arg[argn], set) ||
 			upathmatch(tcp, tcp->u_arg[argn + 1], set);
 	}
+#if HAVE_ARCH_OLD_SELECT
 	case SEN_oldselect:
+	{
+		kernel_ulong_t *args =
+			fetch_indirect_syscall_args(tcp, tcp->u_arg[0], 5);
+
+		return args && match_xselect_args(tcp, args, set);
+	}
+#endif
 	case SEN_pselect6:
 	case SEN_select:
-	{
-		int     i, j;
-		int     nfds;
-		kernel_ulong_t *args;
-		kernel_ulong_t select_args[5];
-		unsigned int oldselect_args[5];
-		unsigned int fdsize;
-		fd_set *fds;
-
-		if (SEN_oldselect == s->sen) {
-			if (sizeof(*select_args) == sizeof(*oldselect_args)) {
-				if (umove(tcp, tcp->u_arg[0], &select_args)) {
-					return false;
-				}
-			} else {
-				unsigned int n;
-
-				if (umove(tcp, tcp->u_arg[0], &oldselect_args)) {
-					return false;
-				}
-
-				for (n = 0; n < 5; ++n) {
-					select_args[n] = oldselect_args[n];
-				}
-			}
-			args = select_args;
-		} else {
-			args = tcp->u_arg;
-		}
-
-		/* Kernel truncates arg[0] to int, we do the same. */
-		nfds = (int) args[0];
-		/* Kernel rejects negative nfds, so we don't parse it either. */
-		if (nfds <= 0)
-			return false;
-		/* Beware of select(2^31-1, NULL, NULL, NULL) and similar... */
-		if (nfds > 1024*1024)
-			nfds = 1024*1024;
-		fdsize = (((nfds + 7) / 8) + current_wordsize-1) & -current_wordsize;
-		fds = xmalloc(fdsize);
-
-		for (i = 1; i <= 3; ++i) {
-			if (args[i] == 0)
-				continue;
-			if (umoven(tcp, args[i], fdsize, fds) < 0) {
-				continue;
-			}
-			for (j = 0;; j++) {
-				j = next_set_bit(fds, j, nfds);
-				if (j < 0)
-					break;
-				if (fdmatch(tcp, j, set)) {
-					free(fds);
-					return true;
-				}
-			}
-		}
-		free(fds);
-		return false;
-	}
-
+		return match_xselect_args(tcp, tcp->u_arg, set);
 	case SEN_poll:
 	case SEN_ppoll:
 	{
@@ -340,6 +332,8 @@
 		return false;
 	}
 
+	case SEN_accept4:
+	case SEN_accept:
 	case SEN_bpf:
 	case SEN_epoll_create:
 	case SEN_epoll_create1:
@@ -349,10 +343,17 @@
 	case SEN_inotify_init:
 	case SEN_inotify_init1:
 	case SEN_memfd_create:
+	case SEN_mq_getsetattr:
+	case SEN_mq_notify:
+	case SEN_mq_open:
+	case SEN_mq_timedreceive:
+	case SEN_mq_timedsend:
 	case SEN_perf_event_open:
 	case SEN_pipe:
 	case SEN_pipe2:
 	case SEN_printargs:
+	case SEN_signalfd4:
+	case SEN_signalfd:
 	case SEN_socket:
 	case SEN_socketpair:
 	case SEN_timerfd_create:
diff --git a/perf.c b/perf.c
index 6af0f42..b37f54a 100644
--- a/perf.c
+++ b/perf.c
@@ -2,7 +2,7 @@
  * Copyright (c) 2013 Ben Noordhuis <info@bnoordhuis.nl>
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -304,7 +304,8 @@
 		", comm_exec=%u"
 		", use_clockid=%u"
 		", context_switch=%u"
-		", write_backward=%u",
+		", write_backward=%u"
+		", namespaces=%u",
 		attr->mmap_data,
 		attr->sample_id_all,
 		attr->exclude_host,
@@ -315,7 +316,8 @@
 		attr->comm_exec,
 		attr->use_clockid,
 		attr->context_switch,
-		attr->write_backward);
+		attr->write_backward,
+		attr->namespaces);
 
 	/*
 	 * Print it only in case it is non-zero, since it may contain flags we
@@ -324,7 +326,7 @@
 	if (attr->__reserved_1) {
 		tprintf(", __reserved_1=%#" PRIx64,
 			(uint64_t) attr->__reserved_1);
-		tprints_comment("Bits 63..28");
+		tprints_comment("Bits 63..29");
 	}
 
 	if (attr->watermark)
@@ -422,10 +424,11 @@
 		print_perf_event_attr(tcp, tcp->u_arg[0]);
 	}
 
-	tprintf(", %d, %d, %d, ",
+	tprintf(", %d, %d, ",
 		(int) tcp->u_arg[1],
-		(int) tcp->u_arg[2],
-		(int) tcp->u_arg[3]);
+		(int) tcp->u_arg[2]);
+	printfd(tcp, tcp->u_arg[3]);
+	tprints(", ");
 	printflags64(perf_event_open_flags, tcp->u_arg[4], "PERF_FLAG_???");
 
 	return RVAL_DECODED | RVAL_FD;
diff --git a/perf_event_struct.h b/perf_event_struct.h
index b5a15bb..a75b88a 100644
--- a/perf_event_struct.h
+++ b/perf_event_struct.h
@@ -40,7 +40,8 @@
 		 use_clockid			:1,
 		 context_switch			:1,
 		 write_backward			:1,
-		 __reserved_1			:36;
+		 namespaces			:1,
+		 __reserved_1			:35;
 	union {
 		uint32_t wakeup_events;
 		uint32_t wakeup_watermark;
diff --git a/personality.c b/personality.c
index 44ed5e3..c366680 100644
--- a/personality.c
+++ b/personality.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,9 +27,8 @@
  */
 
 #include "defs.h"
-#include <linux/personality.h>
-#include "xlat/personality_types.h"
 #include "xlat/personality_flags.h"
+#include "xlat/personality_types.h"
 
 
 SYS_FUNC(personality)
@@ -54,13 +54,9 @@
 		return 0;
 
 	pers = tcp->u_rval;
-	const char *type = xlookup(personality_types, pers & PER_MASK);
-	char *p;
 	static char outstr[1024];
-	if (type)
-		p = stpcpy(outstr, type);
-	else
-		p = outstr + sprintf(outstr, "%#x /* %s */", pers & PER_MASK, "PER_???");
+	char *p = outstr + sprintxval(outstr, sizeof(outstr), personality_types,
+				      pers & PER_MASK, "PER_???");
 	pers &= ~PER_MASK;
 	if (pers)
 		strcpy(p, sprintflags("|", personality_flags, pers));
diff --git a/poll.c b/poll.c
index e3b497c..6939e3e 100644
--- a/poll.c
+++ b/poll.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,6 +29,7 @@
 
 #include "defs.h"
 #include <poll.h>
+#include "xstring.h"
 
 #include "xlat/pollflags.h"
 
@@ -96,7 +97,7 @@
 				*outptr++ = '[';
 			else
 				outptr = stpcpy(outptr, ", ");
-			outptr += sprintf(outptr, "%#" PRI_klx, cur);
+			outptr = xappendstr(outstr, outptr, "%#" PRI_klx, cur);
 			break;
 		}
 		if (!fds.revents)
@@ -112,7 +113,7 @@
 
 		static const char fmt[] = "{fd=%d, revents=";
 		char fdstr[sizeof(fmt) + sizeof(int) * 3];
-		sprintf(fdstr, fmt, fds.fd);
+		xsprintf(fdstr, fmt, fds.fd);
 
 		const char *flagstr = sprintflags("", pollflags,
 						  (unsigned short) fds.revents);
diff --git a/print_fields.h b/print_fields.h
index 35859c9..401ff04 100644
--- a/print_fields.h
+++ b/print_fields.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,6 +45,10 @@
 	STRACE_PRINTF("%s%s=%llu", (prefix_), #field_,			\
 		      zero_extend_signed_to_ull((where_).field_))
 
+#define PRINT_FIELD_U_CAST(prefix_, where_, field_, type_)		\
+	STRACE_PRINTF("%s%s=%llu", (prefix_), #field_,			\
+		      zero_extend_signed_to_ull((type_) (where_).field_))
+
 #define PRINT_FIELD_X(prefix_, where_, field_)				\
 	STRACE_PRINTF("%s%s=%#llx", (prefix_), #field_,			\
 		      zero_extend_signed_to_ull((where_).field_))
@@ -74,7 +79,11 @@
 			    (dflt_));		\
 	} while (0)
 
-#define PRINT_FIELD_UID(prefix_, where_, field_)					\
+/*
+ * Generic "ID" printing. ID is considered unsigned except for the special value
+ * of -1.
+ */
+#define PRINT_FIELD_ID(prefix_, where_, field_)					\
 	do {										\
 		if (sign_extend_unsigned_to_ll((where_).field_) == -1LL)		\
 			STRACE_PRINTF("%s%s=-1", (prefix_), #field_);			\
@@ -83,6 +92,8 @@
 				      zero_extend_signed_to_ull((where_).field_));	\
 	} while (0)
 
+#define PRINT_FIELD_UID PRINT_FIELD_ID
+
 #define PRINT_FIELD_STRING(prefix_, where_, field_, len_, style_)	\
 	do {								\
 		STRACE_PRINTF("%s%s=", (prefix_), #field_);		\
@@ -97,6 +108,15 @@
 				     sizeof((where_).field_));		\
 	} while (0)
 
+#define PRINT_FIELD_HEX_ARRAY(prefix_, where_, field_)			\
+	do {								\
+		STRACE_PRINTF("%s%s=", (prefix_), #field_);		\
+		print_quoted_string((const char *)(where_).field_,	\
+				     sizeof((where_).field_) +		\
+					    MUST_BE_ARRAY((where_).field_), \
+				    QUOTE_FORCE_HEX); \
+	} while (0)
+
 #define PRINT_FIELD_INET_ADDR(prefix_, where_, field_, af_)		\
 	do {								\
 		STRACE_PRINTF(prefix_);					\
diff --git a/print_timespec.c b/print_timespec.c
index c8ab5b7..a482f10 100644
--- a/print_timespec.c
+++ b/print_timespec.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,8 @@
 
 #include MPERS_DEFS
 
+#include "xstring.h"
+
 #ifndef UTIME_NOW
 # define UTIME_NOW ((1l << 30) - 1l)
 #endif
@@ -125,9 +127,9 @@
 		strcpy(buf, "NULL");
 	} else if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)) ||
 		   umove(tcp, addr, &t)) {
-		snprintf(buf, sizeof(buf), "%#" PRI_klx, addr);
+		xsprintf(buf, "%#" PRI_klx, addr);
 	} else {
-		snprintf(buf, sizeof(buf), timespec_fmt,
+		xsprintf(buf, timespec_fmt,
 			 (long long) t.tv_sec,
 			 zero_extend_signed_to_ull(t.tv_nsec));
 	}
diff --git a/print_timeval.c b/print_timeval.c
index 8e0708f..3690ce7 100644
--- a/print_timeval.c
+++ b/print_timeval.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,6 +34,8 @@
 
 #include MPERS_DEFS
 
+#include "xstring.h"
+
 static const char timeval_fmt[]  = "{tv_sec=%lld, tv_usec=%llu}";
 
 static void
@@ -103,9 +106,9 @@
 		strcpy(buf, "NULL");
 	} else if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)) ||
 		   umove(tcp, addr, &t)) {
-		snprintf(buf, sizeof(buf), "%#" PRI_klx, addr);
+		xsprintf(buf, "%#" PRI_klx, addr);
 	} else {
-		snprintf(buf, sizeof(buf), timeval_fmt,
+		xsprintf(buf, timeval_fmt,
 			 (long long) t.tv_sec,
 			 zero_extend_signed_to_ull(t.tv_usec));
 	}
@@ -196,9 +199,9 @@
 		strcpy(buf, "NULL");
 	} else if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)) ||
 		   umove(tcp, addr, &t)) {
-		snprintf(buf, sizeof(buf), "%#" PRI_klx, addr);
+		xsprintf(buf, "%#" PRI_klx, addr);
 	} else {
-		snprintf(buf, sizeof(buf), timeval_fmt,
+		xsprintf(buf, timeval_fmt,
 			 (long long) t.tv_sec,
 			 zero_extend_signed_to_ull(t.tv_usec));
 	}
diff --git a/printsiginfo.c b/printsiginfo.c
index 2c7b203..bab9e22 100644
--- a/printsiginfo.c
+++ b/printsiginfo.c
@@ -7,7 +7,7 @@
  * Copyright (c) 2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2011-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,6 +42,8 @@
 
 #include MPERS_DEFS
 
+#include "nr_prefix.c"
+
 #ifndef IN_MPERS
 #include "printsiginfo.h"
 #endif
@@ -191,14 +193,31 @@
 			break;
 #ifdef HAVE_SIGINFO_T_SI_SYSCALL
 		case SIGSYS: {
-			const char *scname =
-				syscall_name((unsigned) sip->si_syscall);
+			/*
+			 * Note that we can safely use the personlity set in
+			 * current_personality  here (and don't have to guess it
+			 * based on X32_SYSCALL_BIT and si_arch, for example):
+			 *  - The signal is delivered as a result of seccomp
+			 *    filtering to the process executing forbidden
+			 *    syscall.
+			 *  - We have set the personality for the tracee during
+			 *    the syscall entering.
+			 *  - The current_personality is reliably switched in
+			 *    the next_event routine, it is set to the
+			 *    personality of the last call made (the one that
+			 *    triggered the signal delivery).
+			 *  - Looks like there are no other cases where SIGSYS
+			 *    is delivered from the kernel so far.
+			 */
+			const char *scname = syscall_name(shuffle_scno(
+				(unsigned) sip->si_syscall));
 
 			tprints(", si_call_addr=");
 			printaddr(ptr_to_kulong(sip->si_call_addr));
 			tprints(", si_syscall=");
 			if (scname)
-				tprintf("__NR_%s", scname);
+				tprintf("%s%s",
+					nr_prefix(sip->si_syscall), scname);
 			else
 				tprintf("%u", (unsigned) sip->si_syscall);
 			tprints(", si_arch=");
diff --git a/process.c b/process.c
index b36cd4b..895fc4b 100644
--- a/process.c
+++ b/process.c
@@ -8,7 +8,7 @@
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * Copyright (c) 2000 PocketPenguins Inc.  Linux for Hitachi SuperH
  *                    port by Greg Banks <gbanks@pocketpenguins.com>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  *
  * All rights reserved.
  *
@@ -41,10 +41,10 @@
 # include <elf.h>
 #endif
 
-#include "xlat/nt_descriptor_types.h"
-
-#include "regs.h"
 #include "ptrace.h"
+#include "regs.h"
+
+#include "xlat/nt_descriptor_types.h"
 #include "xlat/ptrace_cmds.h"
 #include "xlat/ptrace_setoptions_flags.h"
 #include "xlat/ptrace_peeksiginfo_flags.h"
diff --git a/ptp.c b/ptp.c
index fce6e0e..3cb3ae8 100644
--- a/ptp.c
+++ b/ptp.c
@@ -28,10 +28,13 @@
  */
 
 #include "defs.h"
-#include <linux/ioctl.h>
-#include <linux/ptp_clock.h>
 
-#include "xlat/ptp_flags_options.h"
+#ifdef HAVE_STRUCT_PTP_SYS_OFFSET
+
+# include <linux/ioctl.h>
+# include <linux/ptp_clock.h>
+
+# include "xlat/ptp_flags_options.h"
 
 int
 ptp_ioctl(struct tcb *const tcp, const unsigned int code,
@@ -138,3 +141,5 @@
 
 	return RVAL_IOCTL_DECODED;
 }
+
+#endif /* HAVE_STRUCT_PTP_SYS_OFFSET */
diff --git a/reboot.c b/reboot.c
index 381e4e8..12de30b 100644
--- a/reboot.c
+++ b/reboot.c
@@ -10,14 +10,19 @@
 	const unsigned int magic2 = tcp->u_arg[1];
 	const unsigned int cmd = tcp->u_arg[2];
 
-	printflags(bootflags1, magic1, "LINUX_REBOOT_MAGIC_???");
+	printxval(bootflags1, magic1, "LINUX_REBOOT_MAGIC_???");
 	tprints(", ");
-	printflags(bootflags2, magic2, "LINUX_REBOOT_MAGIC_???");
+	printxval(bootflags2, magic2, "LINUX_REBOOT_MAGIC_???");
 	tprints(", ");
-	printflags(bootflags3, cmd, "LINUX_REBOOT_CMD_???");
+	printxval(bootflags3, cmd, "LINUX_REBOOT_CMD_???");
 	if (cmd == LINUX_REBOOT_CMD_RESTART2) {
 		tprints(", ");
-		printstr(tcp, tcp->u_arg[3]);
+		/*
+		 * The size of kernel buffer is 256 bytes and
+		 * the last byte is always zero, at most 255 bytes
+		 * are copied from the user space.
+		 */
+		printstr_ex(tcp, tcp->u_arg[3], 255, QUOTE_0_TERMINATED);
 	}
 	return RVAL_DECODED;
 }
diff --git a/resource.c b/resource.c
index 27d653e..022e346 100644
--- a/resource.c
+++ b/resource.c
@@ -3,7 +3,7 @@
  * 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) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +32,8 @@
 #include "defs.h"
 #include <sys/resource.h>
 
+#include "xstring.h"
+
 #include "xlat/resources.h"
 
 static const char *
@@ -43,9 +45,9 @@
 		return "RLIM64_INFINITY";
 
 	if (lim > 1024 && lim % 1024 == 0)
-		sprintf(buf, "%" PRIu64 "*1024", lim / 1024);
+		xsprintf(buf, "%" PRIu64 "*1024", lim / 1024);
 	else
-		sprintf(buf, "%" PRIu64, lim);
+		xsprintf(buf, "%" PRIu64, lim);
 	return buf;
 }
 
@@ -74,9 +76,9 @@
 		return "RLIM_INFINITY";
 
 	if (lim > 1024 && lim % 1024 == 0)
-		sprintf(buf, "%" PRIu32 "*1024", lim / 1024);
+		xsprintf(buf, "%" PRIu32 "*1024", lim / 1024);
 	else
-		sprintf(buf, "%" PRIu32, lim);
+		xsprintf(buf, "%" PRIu32, lim);
 	return buf;
 }
 
diff --git a/linux/crisv10/arch_rt_sigframe.c b/riscv.c
similarity index 74%
rename from linux/crisv10/arch_rt_sigframe.c
rename to riscv.c
index f3d5f10..aaa3932 100644
--- a/linux/crisv10/arch_rt_sigframe.c
+++ b/riscv.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * RISC-V-specific syscall decoders.
+ *
+ * Copyright (c) 2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,9 +27,27 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-FUNC_GET_RT_SIGFRAME_ADDR
-{
-	unsigned long addr;
+#include "defs.h"
 
-	return upeek(tcp->pid, 4 * PT_USP, &addr) ? 0 : addr;
+#ifdef RISCV
+
+# include "xlat/riscv_flush_icache_flags.h"
+
+SYS_FUNC(riscv_flush_icache)
+{
+	/* uintptr_t start */
+	printaddr(tcp->u_arg[0]);
+
+	/* uintptr_t end */
+	tprints(", ");
+	printaddr(tcp->u_arg[1]);
+
+	/* uintptr_t flags */
+	tprints(", ");
+	printflags64(riscv_flush_icache_flags, tcp->u_arg[2],
+		     "SYS_RISCV_FLUSH_ICACHE_???");
+
+	return RVAL_DECODED;
 }
+
+#endif /* RISCV */
diff --git a/rt_sigframe.c b/rt_sigframe.c
index d9bcb4f..6375dbc 100644
--- a/rt_sigframe.c
+++ b/rt_sigframe.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,8 +27,8 @@
  */
 
 #include "defs.h"
-#include "regs.h"
 #include "ptrace.h"
+#include "regs.h"
 
 #define	DEF_FUNC_GET_RT_SIGFRAME_ADDR	\
 		kernel_ulong_t get_rt_sigframe_addr(struct tcb *tcp)
diff --git a/rtnl_addr.c b/rtnl_addr.c
index a05cfbe..6594cc6 100644
--- a/rtnl_addr.c
+++ b/rtnl_addr.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -115,7 +115,7 @@
 	if (len >= sizeof(ifaddr)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(ifaddr) - offset,
-					 (void *) &ifaddr + offset)) {
+					 (char *) &ifaddr + offset)) {
 			PRINT_FIELD_U("", ifaddr, ifa_prefixlen);
 			PRINT_FIELD_FLAGS(", ", ifaddr, ifa_flags,
 					  ifaddrflags, "IFA_F_???");
diff --git a/rtnl_addrlabel.c b/rtnl_addrlabel.c
index 7fc4875..d418766 100644
--- a/rtnl_addrlabel.c
+++ b/rtnl_addrlabel.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -70,7 +70,7 @@
 	if (len >= sizeof(ifal)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(ifal) - offset,
-					 (void *) &ifal + offset)) {
+					 (char *) &ifal + offset)) {
 			PRINT_FIELD_U("", ifal, ifal_prefixlen);
 			PRINT_FIELD_U(", ", ifal, ifal_flags);
 			PRINT_FIELD_IFINDEX(", ", ifal, ifal_index);
diff --git a/rtnl_dcb.c b/rtnl_dcb.c
index 0724dcb..7d1a29a 100644
--- a/rtnl_dcb.c
+++ b/rtnl_dcb.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -53,7 +53,7 @@
 	if (len >= sizeof(dcb)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(dcb) - offset,
-					 (void *) &dcb + offset)) {
+					 (char *) &dcb + offset)) {
 			PRINT_FIELD_XVAL("", dcb, cmd,
 					 dcb_commands, "DCB_CMD_???");
 			decode_nla = true;
diff --git a/rtnl_link.c b/rtnl_link.c
index 13e56e0..2e13fce 100644
--- a/rtnl_link.c
+++ b/rtnl_link.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -356,7 +356,7 @@
 }
 
 static const nla_decoder_t ifla_xdp_nla_decoders[] = {
-	[IFLA_XDP_FD]		= decode_nla_s32,
+	[IFLA_XDP_FD]		= decode_nla_fd,
 	[IFLA_XDP_ATTACHED]	= decode_nla_u8,
 	[IFLA_XDP_FLAGS]	= decode_ifla_xdp_flags,
 	[IFLA_XDP_PROG_ID]	= decode_nla_u32
@@ -403,7 +403,7 @@
 	[IFLA_PORT_SELF]	= decode_ifla_port,
 	[IFLA_AF_SPEC]		= NULL, /* unimplemented */
 	[IFLA_GROUP]		= decode_nla_u32,
-	[IFLA_NET_NS_FD]	= decode_nla_u32,
+	[IFLA_NET_NS_FD]	= decode_nla_fd,
 	[IFLA_EXT_MASK]		= decode_nla_u32,
 	[IFLA_PROMISCUITY]	= decode_nla_u32,
 	[IFLA_NUM_TX_QUEUES]	= decode_nla_u32,
@@ -434,7 +434,7 @@
 	if (len >= sizeof(ifinfo)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(ifinfo) - offset,
-					 (void *) &ifinfo + offset)) {
+					 (char *) &ifinfo + offset)) {
 			PRINT_FIELD_XVAL("", ifinfo, ifi_type,
 					 arp_hardware_types, "ARPHRD_???");
 			PRINT_FIELD_IFINDEX(", ", ifinfo, ifi_index);
diff --git a/rtnl_mdb.c b/rtnl_mdb.c
index 30c3473..c28b9e0 100644
--- a/rtnl_mdb.c
+++ b/rtnl_mdb.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -215,7 +215,7 @@
 	if (len >= sizeof(bpm)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(bpm) - offset,
-					 (void *) &bpm + offset)) {
+					 (char *) &bpm + offset)) {
 			PRINT_FIELD_IFINDEX("", bpm, ifindex);
 			decode_nla = true;
 		}
diff --git a/rtnl_neigh.c b/rtnl_neigh.c
index 0eaadc5..3108774 100644
--- a/rtnl_neigh.c
+++ b/rtnl_neigh.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -102,7 +102,7 @@
 	if (len >= sizeof(ndmsg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(ndmsg) - offset,
-					 (void *) &ndmsg + offset)) {
+					 (char *) &ndmsg + offset)) {
 			PRINT_FIELD_IFINDEX("", ndmsg, ndm_ifindex);
 			PRINT_FIELD_FLAGS(", ", ndmsg, ndm_state,
 					  neighbor_cache_entry_states,
diff --git a/rtnl_nsid.c b/rtnl_nsid.c
index 51ce37b..cf8cc99 100644
--- a/rtnl_nsid.c
+++ b/rtnl_nsid.c
@@ -40,7 +40,7 @@
 static const nla_decoder_t rtgenmsg_nla_decoders[] = {
 	[NETNSA_NSID]	= decode_nla_s32,
 	[NETNSA_PID]	= decode_nla_u32,
-	[NETNSA_FD]	= decode_nla_u32
+	[NETNSA_FD]	= decode_nla_fd
 };
 
 DECL_NETLINK_ROUTE_DECODER(decode_rtgenmsg)
diff --git a/rtnl_route.c b/rtnl_route.c
index 102b805..93205c9 100644
--- a/rtnl_route.c
+++ b/rtnl_route.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -283,7 +283,7 @@
 	if (len >= sizeof(rtmsg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(rtmsg) - offset,
-					 (void *) &rtmsg + offset)) {
+					 (char *) &rtmsg + offset)) {
 			PRINT_FIELD_U("", rtmsg, rtm_dst_len);
 			PRINT_FIELD_U(", ", rtmsg, rtm_src_len);
 			PRINT_FIELD_FLAGS(", ", rtmsg, rtm_tos,
diff --git a/rtnl_rule.c b/rtnl_rule.c
index bd955ea..1ab4fd2 100644
--- a/rtnl_rule.c
+++ b/rtnl_rule.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -116,7 +116,7 @@
 	if (len >= sizeof(msg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(msg) - offset,
-					 (void *) &msg + offset)) {
+					 (char *) &msg + offset)) {
 			tprintf("dst_len=%u, src_len=%u",
 				msg.rtm_dst_len, msg.rtm_src_len);
 			tprints(", tos=");
diff --git a/rtnl_tc.c b/rtnl_tc.c
index e1bda75..f6e766d 100644
--- a/rtnl_tc.c
+++ b/rtnl_tc.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -308,7 +308,7 @@
 	if (len >= sizeof(tcmsg)) {
 		if (!umoven_or_printaddr(tcp, addr + offset,
 					 sizeof(tcmsg) - offset,
-					 (void *) &tcmsg + offset)) {
+					 (char *) &tcmsg + offset)) {
 			PRINT_FIELD_IFINDEX("", tcmsg, tcm_ifindex);
 			PRINT_FIELD_U(", ", tcmsg, tcm_handle);
 			PRINT_FIELD_U(", ", tcmsg, tcm_parent);
diff --git a/s390.c b/s390.c
new file mode 100644
index 0000000..a934993
--- /dev/null
+++ b/s390.c
@@ -0,0 +1,1277 @@
+/*
+ * s390-specific syscalls decoders.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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"
+
+#if defined S390 || defined S390X
+
+#include <sys/user.h>
+
+#include "print_fields.h"
+
+#include "xlat/s390_guarded_storage_commands.h"
+#include "xlat/s390_runtime_instr_commands.h"
+#include "xlat/s390_sthyi_function_codes.h"
+
+/*
+ * Since, for some reason, kernel doesn't expose all these nice constants and
+ * structures in UAPI, we have to re-declare them ourselves.
+ */
+
+/**
+ * "The header section is placed at the beginning of the response buffer and
+ * identifies the location and length of all other sections. Valid sections have
+ * nonzero offset values in the header. Each section provides information about
+ * validity of fields within that section."
+ */
+struct sthyi_hdr {
+	/**
+	 * Header Flag Byte 1 - These flag settings indicate the environment
+	 * that the instruction was executed in and may influence the value of
+	 * the validity bits. The validity bits, and not these flags, should be
+	 * used to determine if a field is valid.
+	 *  - 0x80 - Global Performance Data unavailable
+	 *  - 0x40 - One or more hypervisor levels below this level does not
+	 *           support the STHYI instruction. When this flag is set the
+	 *           value of INFGPDU is not meaningful because the state of the
+	 *           Global Performance Data setting cannot be determined.
+	 *  - 0x20 - Virtualization stack is incomplete. This bit indicates one
+	 *           of two cases:
+	 *   - One or more hypervisor levels does not support the STHYI
+	 *     instruction. For this case, INFSTHYI will also be set.
+	 *   - There were more than three levels of guest/hypervisor information
+	 *     to report.
+	 *  - 0x10 - Execution environment is not within a logical partition.
+	 */
+	uint8_t  infhflg1;
+	uint8_t  infhflg2; /**< Header Flag Byte 2 reserved for IBM(R) use */
+	uint8_t  infhval1; /**< Header Validity Byte 1 reserved for IBM use */
+	uint8_t  infhval2; /**< Header Validity Byte 2 reserved for IBM use */
+	char     reserved_1__[3]; /**< Reserved for future IBM use */
+	uint8_t  infhygct; /**< Count of Hypervisor and Guest Sections */
+	uint16_t infhtotl; /**< Total length of response buffer */
+	uint16_t infhdln;  /**< Length of Header Section mapped by INF0HDR */
+	uint16_t infmoff;  /**< Offset to Machine Section mapped by INF0MAC */
+	uint16_t infmlen;  /**< Length of Machine Section */
+	uint16_t infpoff;  /**< Offset to Partition Section mapped by INF0PAR */
+	uint16_t infplen;  /**< Length of Partition Section */
+	uint16_t infhoff1; /**< Offset to Hypervisor Section1 mapped by INF0HYP */
+	uint16_t infhlen1; /**< Length of Hypervisor Section1 */
+	uint16_t infgoff1; /**< Offset to Guest Section1 mapped by INF0GST */
+	uint16_t infglen1; /**< Length of Guest Section1 */
+	uint16_t infhoff2; /**< Offset to Hypervisor Section2 mapped by INF0HYP */
+	uint16_t infhlen2; /**< Length of Hypervisor Section2 */
+	uint16_t infgoff2; /**< Offset to Guest Section2 mapped by INF0GST */
+	uint16_t infglen2; /**< Length of Guest Section2 */
+	uint16_t infhoff3; /**< Offset to Hypervisor Section3 mapped by INF0HYP */
+	uint16_t infhlen3; /**< Length of Hypervisor Section3 */
+	uint16_t infgoff3; /**< Offset to Guest Section3 mapped by INF0GST */
+	uint16_t infglen3; /**< Length of Guest Section3 */
+	/* 44 bytes in total */
+} ATTRIBUTE_PACKED;
+
+struct sthyi_machine {
+	uint8_t  infmflg1; /**< Machine Flag Byte 1 reserved for IBM use */
+	uint8_t  infmflg2; /**< Machine Flag Byte 2 reserved for IBM use */
+	/**
+	 * Machine Validity Byte 1
+	 *  - 0x80 - Processor Count Validity. When this bit is on, it indicates
+	 *           that INFMSCPS, INFMDCPS, INFMSIFL, and INFMDIFL contain
+	 *           valid counts. The validity bit may be off when:
+	 *   - STHYI support is not available on a lower level hypervisor, or
+	 *   - Global Performance Data is not enabled.
+	 *  - 0x40 - Machine ID Validity. This bit being on indicates that a
+	 *           SYSIB 1.1.1 was obtained from STSI and information reported
+	 *           in the following fields is valid: INFMTYPE, INFMMANU,
+	 *           INFMSEQ, and INFMPMAN.
+	 *  - 0x20 - Machine Name Validity. This bit being on indicates that the
+	 *           INFMNAME field is valid.
+	 */
+	uint8_t  infmval1;
+	uint8_t  infmval2; /**< Machine Validity Byte 2 reserved for IBM use */
+	/**
+	 * Number of shared CPs configured in the machine or in the physical
+	 * partition if the system is physically partitioned.
+	 */
+	uint16_t infmscps;
+	/**
+	 * Number of dedicated CPs configured in this machine or in the physical
+	 * partition if the system is physically partitioned.
+	 */
+	uint16_t infmdcps;
+	/**
+	 * Number of shared IFLs configured in this machine or in the physical
+	 * partition if the system is physically partitioned.
+	 */
+	uint16_t infmsifl;
+	/**
+	 * Number of dedicated IFLs configured in this machine or in the
+	 * physical partition if the system is physically partitioned.
+	 */
+	uint16_t infmdifl;
+	char     infmname[8];  /**< EBCDIC Machine Name */
+	char     infmtype[4];  /**< EBCDIC Type */
+	char     infmmanu[16]; /**< EBCDIC Manufacturer */
+	char     infmseq[16];  /**< EBCDIC Sequence Code */
+	char     infmpman[4];  /**< EBCDIC Plant of Manufacture */
+	/* 60 bytes in total*/
+} ATTRIBUTE_PACKED;
+
+struct sthyi_partition {
+	/**
+	 * Partition Flag Byte 1
+	 *  - 0x80 - Multithreading (MT) is enabled.
+	 */
+	uint8_t  infpflg1;
+	/** Partition Flag Byte 2 reserved for IBM use */
+	uint8_t  infpflg2;
+	/**
+	 * Partition Validity Byte 1
+	 *  - 0x80 - Processor count validity. This bit being on indicates that
+	 *           INFPSCPS, INFPDCPS, INFPSIFL, and INFPDIFL contain valid
+	 *           counts.
+	 *  - 0x40 - Partition weight-based capped capacity validity. This bit
+	 *           being on indicates that INFPWBCP and INFPWBIF are valid
+	 *  - 0x20 - Partition absolute capped capacity validity. This bit being
+	 *           on indicates that INFPABCP and INFPABIF are valid.
+	 *  - 0x10 - Partition ID validity. This bit being on indicates that a
+	 *           SYSIB 2.2.2 was obtained from STSI and information reported
+	 *           in the following fields is valid: INFPPNUM and INFPPNAM.
+	 *  - 0x08 - LPAR group absolute capacity capping information validity.
+	 *           This bit being on indicates that INFPLGNM, INFPLGCP, and
+	 *           INFPLGIF are valid.
+	 */
+	uint8_t  infpval1;
+	/** Partition Validity Byte 2 reserved for IBM use */
+	uint8_t  infpval2;
+	/** Logical partition number */
+	uint16_t infppnum;
+	/**
+	 * Number of shared logical CPs configured for this partition.  Count
+	 * of cores when MT is enabled.
+	 */
+	uint16_t infpscps;
+	/**
+	 * Number of dedicated logical CPs configured for this partition.  Count
+	 * of cores when MT is enabled.
+	 */
+	uint16_t infpdcps;
+	/**
+	 * Number of shared logical IFLs configured for this partition.  Count
+	 * of cores when MT is enabled.
+	 */
+	uint16_t infpsifl;
+	/**
+	 * Number of dedicated logical IFLs configured for this partition.
+	 * Count of cores when MT is enabled.
+	 */
+	uint16_t infpdifl;
+	/** Reserved for future IBM use */
+	char     reserved_1__[2];
+	/** EBCIDIC Logical partition name */
+	char     infppnam[8];
+	/**
+	 * Partition weight-based capped capacity for CPs, a scaled number where
+	 * 0x00010000 represents one  core.  Zero if not capped.
+	 */
+	uint32_t infpwbcp;
+	/**
+	 * Partition absolute capped capacity for CPs, a scaled number where
+	 * 0x00010000 represents one  core.  Zero if not capped.
+	 */
+	uint32_t infpabcp;
+	/**
+	 * Partition weight-based capped capacity for IFLs, a scaled number
+	 * where 0x00010000 represents one  core.  Zero if not capped.
+	 */
+	uint32_t infpwbif;
+	/**
+	 * Partition absolute capped capacity for IFLs, a scaled number where
+	 * 0x00010000 represents one  core.  Zero if not capped.
+	 */
+	uint32_t infpabif;
+	/**
+	 * EBCIDIC LPAR group name. Binary zeros when the partition is not in
+	 * an LPAR group. EBCDIC and padded with blanks on the right when in a
+	 * group. The group name is reported only when there is a group cap on
+	 * CP or IFL CPU types and the partition has the capped CPU type.
+	 */
+	char     infplgnm[8];
+	/**
+	 * LPAR group absolute capacity value for CP CPU type when nonzero. This
+	 * field will be nonzero only when INFPLGNM is nonzero and a cap is
+	 * defined for the LPAR group for the CP CPU type. When nonzero,
+	 * contains a scaled number where 0x00010000 represents one core.
+	 */
+	uint32_t infplgcp;
+	/**
+	 * LPAR group absolute capacity value for IFL CPU type when nonzero.
+	 * This field will be nonzero only when INFPLGNM is nonzero and a cap
+	 * is defined for the LPAR group for the IFL CPU type. When nonzero,
+	 * contains a scaled number where 0x00010000 represents one core.
+	 */
+	uint32_t infplgif;
+	/* 56 bytes */
+} ATTRIBUTE_PACKED;
+
+struct sthyi_hypervisor {
+	/**
+	 * Hypervisor Flag Byte 1
+	 *  - 0x80 - Guest CPU usage hard limiting is using the consumption
+	 *           method.
+	 *  - 0x40 - If on, LIMITHARD caps use prorated core time for capping.
+	 *           If off, raw CPU time is used.
+	 */
+	uint8_t infyflg1;
+	uint8_t infyflg2; /**< Hypervisor Flag Byte 2 reserved for IBM use */
+	uint8_t infyval1; /**< Hypervisor Validity Byte 1 reserved for IBM use */
+	uint8_t infyval2; /**< Hypervisor Validity Byte 2 reserved for IBM use */
+	/**
+	 * Hypervisor Type
+	 *  - 1 - z/VM is the hypervisor.
+	 */
+	uint8_t infytype;
+	char    reserved_1__[1]; /**< Reserved for future IBM use */
+	/**
+	 * Threads in use per CP core. Only valid when MT enabled
+	 * (INFPFLG1 0x80 is ON).
+	 */
+	uint8_t infycpt;
+	/**
+	 * Threads in use per IFL core. Only valid when MT enabled
+	 * (INFPFLG1 0x80 is ON).
+	 */
+	uint8_t infyiflt;
+	/**
+	 * EBCID System Identifier. Left justified and padded with blanks.
+	 * This field will be blanks if non-existent.
+	 */
+	char     infysyid[8];
+	/**
+	 * EBCID Cluster Name. Left justified and padded with blanks. This is
+	 * the name on the SSI statement in the system configuration file. This
+	 * field will be blanks if nonexistent.
+	 */
+	char     infyclnm[8];
+	/**
+	 * Total number of CPs shared among guests of this hypervisor.
+	 * Number of cores when MT enabled.
+	 */
+	uint16_t infyscps;
+	/**
+	 * Total number of CPs dedicated to guests of this hypervisor.
+	 * Number of cores when MT enabled.
+	 */
+	uint16_t infydcps;
+	/**
+	 * Total number of IFLs shared among guests of this hypervisor.
+	 * Number of cores when MT enabled.
+	 */
+	uint16_t infysifl;
+	/**
+	 * Total number of IFLs dedicated to guests of this hypervisor.
+	 * Number of cores when MT enabled.
+	 */
+	uint16_t infydifl;
+	/* 32 bytes */
+} ATTRIBUTE_PACKED;
+
+struct sthyi_guest {
+	/**
+	 * Guest Flag Byte 1
+	 *  - 0x80 - Guest is mobility enabled
+	 *  - 0x40 - Guest has multiple virtual CPU types
+	 *  - 0x20 - Guest CP dispatch type has LIMITHARD cap
+	 *  - 0x10 - Guest IFL dispatch type has LIMITHARD cap
+	 *  - 0x08 - Virtual CPs are thread dispatched
+	 *  - 0x04 - Virtual IFLs are thread dispatched
+	 */
+	uint8_t  infgflg1;
+	uint8_t  infgflg2;    /**< Guest Flag Byte 2 reserved for IBM use */
+	uint8_t  infgval1;    /**< Guest Validity Byte 1 reserved for IBM use */
+	uint8_t  infgval2;    /**< Guest Validity Byte 2 reserved for IBM use */
+	char     infgusid[8]; /**< EBCDIC Userid */
+	uint16_t infgscps;    /**< Number of guest shared CPs */
+	uint16_t infgdcps;    /**< Number of guest dedicated CPs */
+	/**
+	 * Dispatch type for guest CPs.  This field is valid if INFGSCPS or
+	 * INFGDCPS is greater than zero.
+	 *  - 0 - General Purpose (CP)
+	 */
+	uint8_t  infgcpdt;
+	char     reserved_1__[3]; /**< Reserved for future IBM use */
+	/**
+	 * Guest current capped capacity for shared virtual CPs, a scaled number
+	 * where 0x00010000 represents one  core.   This field is zero to
+	 * indicate not capped when:
+	 *  - There is no CP individual limit (that is, the "Guest CP dispatch
+	 *    type has LIMITHARD cap" bit in field INFGFLG1 is OFF).
+	 *  - There are no shared CPs on the system (that is, INFYSCPS = 0).
+	 *    If there is a CP limit but there are no shared CPs or virtual CPs,
+	 *    the limit is meaningless and does not apply to anything.
+	 */
+	uint32_t infgcpcc;
+	uint16_t infgsifl; /**< Number of guest shared IFLs */
+	uint16_t infgdifl; /**< Number of guest dedicated IFLs */
+	/**
+	 * Dispatch type for guest IFLs. This field is valid if INFGSIFL or
+	 * INFGDIFL is greater than zero.
+	 *  - 0 - General Purpose (CP)
+	 *  - 3 - Integrated Facility for Linux (IFL)
+	 */
+	uint8_t  infgifdt;
+	char     reserved_2__[3]; /**< Reserved for future IBM use */
+	/**
+	 * Guest current capped capacity for shared virtual IFLs,  a scaled
+	 * number where 0x00010000 represents one core.   This field is zero
+	 * to indicate not capped with an IFL limit when:
+	 *  - There is no IFL individual limit (that is, the "Guest IFL dispatch
+	 *    type has LIMITHARD cap" bit in field INFGFLG1 is OFF).
+	 *  - The guest's IFLs are dispatched on CPs (that is, INFGIFDT = 00).
+	 *    When the guest's IFLs are dispatched on CPs, the CP individual
+	 *    limit (in INFGCPCC) is applied to the guest's virtual IFLs and
+	 *    virtual CPs.
+	 */
+	uint32_t infgifcc;
+	/**
+	 * CPU Pool Capping Flags
+	 *  - 0x80 - CPU Pool's CP virtual type has LIMITHARD cap
+	 *  - 0x40 - CPU Pool's CP virtual type has CAPACITY cap
+	 *  - 0x20 - CPU Pool's IFL virtual type has LIMITHARD cap
+	 *  - 0x10 - CPU Pool's IFL virtual type has CAPACITY cap
+	 *  - 0x08 - CPU Pool uses prorated core time.
+	 */
+	uint8_t  infgpflg;
+	char     reserved_3__[3]; /**< Reserved for future IBM use */
+	/**
+	 * EBCDIC CPU Pool Name. This field will be blanks if the guest is not
+	 * in a CPU Pool.
+	 */
+	char     infgpnam[8];
+	/**
+	 * CPU Pool capped capacity for shared virtual CPs, a scaled number
+	 * where 0x00010000 represents one  core.  This field will be zero if
+	 * not capped.
+	 */
+	uint32_t infgpccc;
+	/**
+	 * CPU Pool capped capacity for shared virtual IFLs, a scaled number
+	 * where 0x00010000 represents one  core.  This field will be zero if
+	 * not capped.
+	 */
+	uint32_t infgpicc;
+	/* 56 bytes */
+} ATTRIBUTE_PACKED;
+
+
+static void
+decode_ebcdic(const char *ebcdic, char *ascii, size_t size)
+{
+	/*
+	 * This is mostly Linux's EBCDIC-ASCII conversion table, except for
+	 * various non-representable characters that are converted to spaces for
+	 * readability purposes, as it is intended to be a hint for the string
+	 * contents and not precise conversion.
+	 */
+	static char conv_table[] =
+		 "\0\1\2\3 \11 \177   \13\14\15\16\17"
+		 "\20\21\22\23 \n\10 \30\31  \34\35\36\37"
+		 "  \34  \n\27\33     \5\6\7"
+		 "  \26    \4    \24\25 \32"
+		 "          " " .<(+|"
+		 "&         " "!$*);~"
+		 "-/        " "|,%_>?"
+		 "         `" ":#@'=\""
+		 " abcdefghi" "      "
+		 " jklmnopqr" "      "
+		 " ~stuvwxyz" "      "
+		 "^         " "[]    "
+		 "{ABCDEFGHI" "      "
+		 "}JKLMNOPQR" "      "
+		"\\ STUVWXYZ" "      "
+		 "0123456789" "      ";
+
+	while (size--)
+		*ascii++ = conv_table[(unsigned char) *ebcdic++];
+}
+
+#define DECODE_EBCDIC(ebcdic_, ascii_) \
+	decode_ebcdic((ebcdic_), (ascii_), \
+		      sizeof(ebcdic_) + MUST_BE_ARRAY(ebcdic_))
+#define PRINT_EBCDIC(ebcdic_) \
+	do { \
+		char ascii_str[sizeof(ebcdic_) + MUST_BE_ARRAY(ebcdic_)]; \
+		\
+		DECODE_EBCDIC(ebcdic_, ascii_str); \
+		print_quoted_string(ascii_str, sizeof(ascii_str), \
+				    QUOTE_EMIT_COMMENT); \
+	} while (0)
+
+#define PRINT_FIELD_EBCDIC(prefix_, where_, field_) \
+	do { \
+		PRINT_FIELD_HEX_ARRAY(prefix_, where_, field_); \
+		PRINT_EBCDIC((where_).field_); \
+	} while (0)
+
+#define PRINT_FIELD_WEIGHT(prefix_, where_, field_) \
+	do { \
+		PRINT_FIELD_X(prefix_, where_, field_); \
+		if ((where_).field_) \
+			tprintf_comment("%u %u/65536 cores", \
+				(where_).field_ >> 16, \
+				(where_).field_ & 0xFFFF); \
+		else \
+			tprints_comment("unlimited"); \
+	} while (0)
+
+
+static bool
+is_filled(char *ptr, char fill, size_t size)
+{
+	while (size--)
+		if (*ptr++ != fill)
+			return false;
+
+	return true;
+}
+
+#define IS_ZERO(arr_) \
+	is_filled(arr_, '\0', sizeof(arr_) + MUST_BE_ARRAY(arr_))
+#define IS_BLANK(arr_) /* 0x40 is space in EBCDIC */ \
+	is_filled(arr_, '\x40', sizeof(arr_) + MUST_BE_ARRAY(arr_))
+
+#define CHECK_SIZE(hdr_, size_, name_, ...) \
+	do { \
+		if ((size_) < sizeof(*(hdr_))) { \
+			tprintf_comment("Invalid " name_ " with size " \
+					"%hu < %zu expected", \
+					##__VA_ARGS__, \
+					(size_), sizeof(*(hdr_))); \
+			print_quoted_string((char *) (hdr_), (size_), \
+					    QUOTE_FORCE_HEX); \
+			\
+			return; \
+		} \
+	} while (0)
+
+#define PRINT_UNKNOWN_TAIL(hdr_, size_) \
+	do { \
+		if ((size_) > sizeof(*(hdr_)) && \
+		    !is_filled((char *) ((hdr_) + 1), '\0', \
+		               (size_) - sizeof(*(hdr_)))) \
+			print_quoted_string((char *) ((hdr_) + 1), \
+					    (size_) - sizeof(*(hdr_)), \
+					    QUOTE_FORCE_HEX); \
+	} while (0)
+
+static void
+print_sthyi_machine(struct tcb *tcp, struct sthyi_machine *hdr, uint16_t size,
+		    bool *dummy)
+{
+	int cnt_val, name_val, id_val;
+
+	CHECK_SIZE(hdr, size, "machine structure");
+
+	tprints("/* machine */ {");
+	if (!abbrev(tcp)) {
+		if (hdr->infmflg1) { /* Reserved */
+			PRINT_FIELD_0X("", *hdr, infmflg1);
+			tprints(", ");
+		}
+		if (hdr->infmflg2) { /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infmflg2);
+			tprints(", ");
+		}
+	}
+
+	PRINT_FIELD_0X("", *hdr, infmval1);
+	cnt_val  = !!(hdr->infmval1 & 0x80);
+	id_val   = !!(hdr->infmval1 & 0x40);
+	name_val = !!(hdr->infmval1 & 0x20);
+
+	if (!abbrev(tcp)) {
+		if (hdr->infmval1)
+			tprintf_comment("processor count validity: %d, "
+					"machine ID validity: %d, "
+					"machine name validity: %d%s%#.0x%s",
+					cnt_val, id_val, name_val,
+					hdr->infmval1 & 0x1F ? ", " : "",
+					hdr->infmval1 & 0x1F,
+					hdr->infmval1 & 0x1F ? " - ???" : "");
+		if (hdr->infmval2)
+			PRINT_FIELD_0X(", ", *hdr, infmval2);
+	}
+
+	if (cnt_val || hdr->infmscps)
+		PRINT_FIELD_U(", ", *hdr, infmscps);
+	if (cnt_val || hdr->infmdcps)
+		PRINT_FIELD_U(", ", *hdr, infmdcps);
+	if (cnt_val || hdr->infmsifl)
+		PRINT_FIELD_U(", ", *hdr, infmsifl);
+	if (cnt_val || hdr->infmdifl)
+		PRINT_FIELD_U(", ", *hdr, infmdifl);
+
+	if (!abbrev(tcp)) {
+		if (name_val || hdr->infmname)
+			PRINT_FIELD_EBCDIC(", ", *hdr, infmname);
+
+		if (id_val || !IS_ZERO(hdr->infmtype))
+			PRINT_FIELD_EBCDIC(", ", *hdr, infmtype);
+		if (id_val || !IS_ZERO(hdr->infmmanu))
+			PRINT_FIELD_EBCDIC(", ", *hdr, infmmanu);
+		if (id_val || !IS_ZERO(hdr->infmseq))
+			PRINT_FIELD_EBCDIC(", ", *hdr, infmseq);
+		if (id_val || !IS_ZERO(hdr->infmpman))
+			PRINT_FIELD_EBCDIC(", ", *hdr, infmpman);
+
+		PRINT_UNKNOWN_TAIL(hdr, size);
+	} else {
+		tprints(", ...");
+	}
+
+	tprints("}");
+}
+
+static void
+print_sthyi_partition(struct tcb *tcp, struct sthyi_partition *hdr,
+		      uint16_t size, bool *mt)
+{
+	int cnt_val, wcap_val, acap_val, id_val, lpar_val;
+
+	*mt = false;
+
+	CHECK_SIZE(hdr, size, "partition structure");
+
+	*mt = !!(hdr->infpflg1 & 0x80);
+
+	PRINT_FIELD_0X("/* partition */ {", *hdr, infpflg1);
+	if (!abbrev(tcp) && hdr->infpflg1)
+		tprintf_comment("%s%s%#.0x%s",
+			hdr->infpflg1 & 0x80 ?
+				"0x80 - multithreading is enabled" : "",
+			(hdr->infpflg1 & 0x80) && (hdr->infpflg1 & 0x7F) ?
+				", " : "",
+			hdr->infpflg1 & 0x7F,
+			hdr->infpflg1 & 0x7F ? " - ???" : "");
+	if (!abbrev(tcp) && hdr->infpflg2) /* Reserved */
+		PRINT_FIELD_0X(", ", *hdr, infpflg2);
+
+	PRINT_FIELD_0X(", ", *hdr, infpval1);
+	cnt_val  = !!(hdr->infpval1 & 0x80);
+	wcap_val = !!(hdr->infpval1 & 0x40);
+	acap_val = !!(hdr->infpval1 & 0x20);
+	id_val   = !!(hdr->infpval1 & 0x10);
+	lpar_val = !!(hdr->infpval1 & 0x08);
+
+	if (!abbrev(tcp) && hdr->infpval1)
+		tprintf_comment("processor count validity: %d, "
+				"partition weight-based capacity validity: %d, "
+				"partition absolute capacity validity: %d, "
+				"partition ID validity: %d, "
+				"LPAR group absolute capacity capping "
+				"information validity: %d%s%#.0x%s",
+				cnt_val, wcap_val, acap_val, id_val, lpar_val,
+				hdr->infpval1 & 0x07 ? ", " : "",
+				hdr->infpval1 & 0x07,
+				hdr->infpval1 & 0x07 ? " - ???" : "");
+	if (!abbrev(tcp) && hdr->infpval2) /* Reserved */
+		PRINT_FIELD_0X(", ", *hdr, infpval2);
+
+	if (id_val || hdr->infppnum)
+		PRINT_FIELD_U(", ", *hdr, infppnum);
+
+	if (cnt_val || hdr->infpscps)
+		PRINT_FIELD_U(", ", *hdr, infpscps);
+	if (cnt_val || hdr->infpdcps)
+		PRINT_FIELD_U(", ", *hdr, infpdcps);
+	if (cnt_val || hdr->infpsifl)
+		PRINT_FIELD_U(", ", *hdr, infpsifl);
+	if (cnt_val || hdr->infpdifl)
+		PRINT_FIELD_U(", ", *hdr, infpdifl);
+
+	if (!abbrev(tcp) && !IS_ZERO(hdr->reserved_1__))
+		PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_1__);
+
+	if (id_val || !IS_ZERO(hdr->infppnam))
+		PRINT_FIELD_EBCDIC(", ", *hdr, infppnam);
+
+	if (!abbrev(tcp)) {
+		if (wcap_val || hdr->infpwbcp)
+			PRINT_FIELD_WEIGHT(", ", *hdr, infpwbcp);
+		if (acap_val || hdr->infpabcp)
+			PRINT_FIELD_WEIGHT(", ", *hdr, infpabcp);
+		if (wcap_val || hdr->infpwbif)
+			PRINT_FIELD_WEIGHT(", ", *hdr, infpwbif);
+		if (acap_val || hdr->infpabif)
+			PRINT_FIELD_WEIGHT(", ", *hdr, infpabif);
+
+		if (!IS_ZERO(hdr->infplgnm)) {
+			PRINT_FIELD_EBCDIC(", ", *hdr, infplgnm);
+
+			PRINT_FIELD_WEIGHT(", ", *hdr, infplgcp);
+			PRINT_FIELD_WEIGHT(", ", *hdr, infplgif);
+		} else {
+			if (lpar_val)
+				PRINT_FIELD_HEX_ARRAY(", ", *hdr, infplgnm);
+			if (hdr->infplgcp)
+				PRINT_FIELD_X(", ", *hdr, infplgcp);
+			if (hdr->infplgif)
+				PRINT_FIELD_X(", ", *hdr, infplgif);
+		}
+
+		PRINT_UNKNOWN_TAIL(hdr, size);
+	} else {
+		tprints(", ...");
+	}
+
+	tprints("}");
+}
+
+static void
+print_sthyi_hypervisor(struct tcb *tcp, struct sthyi_hypervisor *hdr,
+		       uint16_t size, int num, bool mt)
+{
+	CHECK_SIZE(hdr, size, "hypervisor %d structure", num);
+
+	tprintf("/* hypervisor %d */ ", num);
+	PRINT_FIELD_0X("{", *hdr, infyflg1);
+	if (!abbrev(tcp) && hdr->infyflg1)
+		tprintf_comment("%s%s%s%s%#.0x%s",
+			hdr->infyflg1 & 0x80 ?
+				"0x80 - guest CPU usage had limiting is using "
+				"the consumption method" : "",
+			(hdr->infyflg1 & 0x80) && (hdr->infyflg1 & 0x40) ?
+				", " : "",
+			hdr->infyflg1 & 0x40 ?
+				"0x40 - LIMITHARD caps use prorated core time "
+				"for capping" : "",
+			(hdr->infyflg1 & 0xC0) && (hdr->infyflg1 & 0x3F) ?
+				", " : "",
+			hdr->infyflg1 & 0x3F,
+			hdr->infyflg1 & 0x3F ? " - ???" : "");
+
+	if (!abbrev(tcp)) {
+		if (hdr->infyflg2) /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infyflg2);
+		if (hdr->infyval1) /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infyval1);
+		if (hdr->infyval2) /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infyval2);
+
+		PRINT_FIELD_U(", ", *hdr, infytype);
+		switch (hdr->infytype) {
+		case 1:
+			tprints_comment("z/VM is the hypervisor");
+			break;
+		default:
+			tprints_comment("unknown hypervisor type");
+		}
+
+		if (!IS_ZERO(hdr->reserved_1__))
+			PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_1__);
+
+		if (mt || hdr->infycpt)
+			PRINT_FIELD_U(", ", *hdr, infycpt);
+		if (mt || hdr->infyiflt)
+			PRINT_FIELD_U(", ", *hdr, infyiflt);
+	}
+
+	if (!abbrev(tcp) || !IS_BLANK(hdr->infysyid))
+		PRINT_FIELD_EBCDIC(", ", *hdr, infysyid);
+	if (!abbrev(tcp) || !IS_BLANK(hdr->infyclnm))
+		PRINT_FIELD_EBCDIC(", ", *hdr, infyclnm);
+
+	if (!abbrev(tcp) || hdr->infyscps)
+		PRINT_FIELD_U(", ", *hdr, infyscps);
+	if (!abbrev(tcp) || hdr->infydcps)
+		PRINT_FIELD_U(", ", *hdr, infydcps);
+	if (!abbrev(tcp) || hdr->infysifl)
+		PRINT_FIELD_U(", ", *hdr, infysifl);
+	if (!abbrev(tcp) || hdr->infydifl)
+		PRINT_FIELD_U(", ", *hdr, infydifl);
+
+	if (!abbrev(tcp)) {
+		PRINT_UNKNOWN_TAIL(hdr, size);
+	} else {
+		tprints(", ...");
+	}
+
+	tprints("}");
+}
+
+static void
+print_sthyi_guest(struct tcb *tcp, struct sthyi_guest *hdr, uint16_t size,
+		  int num, bool mt)
+{
+	CHECK_SIZE(hdr, size, "guest %d structure", num);
+
+	tprintf("/* guest %d */ ", num);
+	PRINT_FIELD_0X("{", *hdr, infgflg1);
+	if (!abbrev(tcp) && hdr->infgflg1)
+		tprintf_comment("%s%s%s%s%s%s%s%s%s%s%s%s%#.0x%s",
+			hdr->infgflg1 & 0x80 ?
+				"0x80 - guest is mobility enabled" : "",
+			(hdr->infgflg1 & 0x80) && (hdr->infgflg1 & 0x40) ?
+				", " : "",
+			hdr->infgflg1 & 0x40 ?
+				"0x40 - guest has multiple virtual CPU types" :
+				"",
+			(hdr->infgflg1 & 0xC0) && (hdr->infgflg1 & 0x20) ?
+				", " : "",
+			hdr->infgflg1 & 0x20 ?
+				"0x20 - guest CP dispatch type has LIMITHARD "
+				"cap" : "",
+			(hdr->infgflg1 & 0xE0) && (hdr->infgflg1 & 0x10) ?
+				", " : "",
+			hdr->infgflg1 & 0x10 ?
+				"0x10 - guest IFL dispatch type has LIMITHARD "
+				"cap" : "",
+			(hdr->infgflg1 & 0xF0) && (hdr->infgflg1 & 0x08) ?
+				", " : "",
+			hdr->infgflg1 & 0x08 ?
+				"0x08 - virtual CPs are thread dispatched" :
+				"",
+			(hdr->infgflg1 & 0xF8) && (hdr->infgflg1 & 0x04) ?
+				", " : "",
+			hdr->infgflg1 & 0x04 ?
+				"0x04 - virtual IFLs are thread dispatched" :
+				"",
+			(hdr->infgflg1 & 0xFC) && (hdr->infgflg1 & 0x03) ?
+				", " : "",
+			hdr->infgflg1 & 0x03,
+			hdr->infgflg1 & 0x03 ? " - ???" : "");
+	if (!abbrev(tcp)) {
+		if (hdr->infgflg2) /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infgflg2);
+		if (hdr->infgval1) /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infgval1);
+		if (hdr->infgval2) /* Reserved */
+			PRINT_FIELD_0X(", ", *hdr, infgval2);
+	}
+
+	PRINT_FIELD_EBCDIC(", ", *hdr, infgusid);
+
+	if (!abbrev(tcp) || hdr->infgscps)
+		PRINT_FIELD_U(", ", *hdr, infgscps);
+	if (!abbrev(tcp) || hdr->infgdcps)
+		PRINT_FIELD_U(", ", *hdr, infgdcps);
+
+	if (!abbrev(tcp)) {
+		PRINT_FIELD_U(", ", *hdr, infgcpdt);
+		switch (hdr->infgcpdt) {
+		case 0:
+			tprints_comment("General Purpose (CP)");
+			break;
+		default:
+			tprints_comment("unknown");
+		}
+
+		if (!IS_ZERO(hdr->reserved_1__))
+			PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_1__);
+	}
+
+	if (!abbrev(tcp) || hdr->infgcpcc)
+		PRINT_FIELD_WEIGHT(", ", *hdr, infgcpcc);
+
+	if (!abbrev(tcp) || hdr->infgsifl)
+		PRINT_FIELD_U(", ", *hdr, infgsifl);
+	if (!abbrev(tcp) || hdr->infgdifl)
+		PRINT_FIELD_U(", ", *hdr, infgdifl);
+
+	if (!abbrev(tcp)) {
+		PRINT_FIELD_U(", ", *hdr, infgifdt);
+		switch (hdr->infgifdt) {
+		case 0:
+			tprints_comment("General Purpose (CP)");
+			break;
+		case 3:
+			tprints_comment("Integrated Facility for Linux (IFL)");
+			break;
+		default:
+			tprints_comment("unknown");
+		}
+
+		if (!IS_ZERO(hdr->reserved_2__))
+			PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_2__);
+	}
+
+	if (!abbrev(tcp) || hdr->infgifcc)
+		PRINT_FIELD_WEIGHT(", ", *hdr, infgifcc);
+
+	PRINT_FIELD_0X(", ", *hdr, infgpflg);
+	if (!abbrev(tcp) && hdr->infgpflg)
+		tprintf_comment("%s%s%s%s%s%s%s%s%s%s%#.0x%s",
+			hdr->infgpflg & 0x80 ?
+				"0x80 - CPU pool's CP virtual type has "
+				"LIMITHARD cap" : "",
+			(hdr->infgpflg & 0x80) && (hdr->infgpflg & 0x40) ?
+				", " : "",
+			hdr->infgpflg & 0x40 ?
+				"0x40 - CPU pool's CP virtual type has "
+				"CAPACITY cap" : "",
+			(hdr->infgpflg & 0xC0) && (hdr->infgpflg & 0x20) ?
+				", " : "",
+			hdr->infgpflg & 0x20 ?
+				"0x20 - CPU pool's IFL virtual type has "
+				"LIMITHARD cap" : "",
+			(hdr->infgpflg & 0xE0) && (hdr->infgpflg & 0x10) ?
+				", " : "",
+			hdr->infgpflg & 0x10 ?
+				"0x10 - CPU pool's IFL virtual type has "
+				"CAPACITY cap" : "",
+			(hdr->infgpflg & 0xF0) && (hdr->infgpflg & 0x08) ?
+				", " : "",
+			hdr->infgpflg & 0x08 ?
+				"0x08 - CPU pool uses prorated core time" : "",
+			(hdr->infgpflg & 0xF8) && (hdr->infgpflg & 0x07) ?
+				", " : "",
+			hdr->infgpflg & 0x07,
+			hdr->infgpflg & 0x07 ? " - ???" : "");
+
+	if (!abbrev(tcp)) {
+		if (!IS_ZERO(hdr->reserved_3__))
+			PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_3__);
+
+		if (!IS_BLANK(hdr->infgpnam))
+			PRINT_FIELD_EBCDIC(", ", *hdr, infgpnam);
+
+		PRINT_FIELD_WEIGHT(", ", *hdr, infgpccc);
+		PRINT_FIELD_WEIGHT(", ", *hdr, infgpicc);
+
+		PRINT_UNKNOWN_TAIL(hdr, size);
+	} else {
+		tprints(", ...");
+	}
+
+	tprints("}");
+}
+
+#define STHYI_PRINT_STRUCT(l_, name_) \
+	do { \
+		if (hdr->inf ##l_## off && hdr->inf ##l_## off + \
+		    hdr->inf ##l_## len <= sizeof(data)) { \
+			tprints(", "); \
+			print_sthyi_ ##name_(tcp, (struct sthyi_ ##name_ *) \
+					     (data + hdr->inf ##l_## off), \
+					     hdr->inf ##l_## len, &mt); \
+		} \
+	} while (0)
+
+#define STHYI_PRINT_HV_STRUCT(l_, n_, name_) \
+	do { \
+		if (hdr->inf ##l_## off ##n_ && hdr->inf ##l_## off ##n_ + \
+		    hdr->inf ##l_## len ##n_ <= sizeof(data)) { \
+			tprints(", "); \
+			print_sthyi_ ##name_(tcp, (struct sthyi_ ##name_ *) \
+					     (data + hdr->inf ##l_## off ##n_), \
+					     hdr->inf ##l_## len ##n_, n_, mt); \
+		} \
+	} while (0)
+
+static void
+print_sthyi_buf(struct tcb *tcp, kernel_ulong_t ptr)
+{
+	char data[PAGE_SIZE];
+	struct sthyi_hdr *hdr = (struct sthyi_hdr *) data;
+	bool mt = false;
+
+	if (umove_or_printaddr(tcp, ptr, &data))
+		return;
+
+	tprints("{");
+
+	/* Header */
+	PRINT_FIELD_0X("/* header */ {", *hdr, infhflg1);
+
+	if (abbrev(tcp)) {
+		tprints(", ...");
+		goto sthyi_sections;
+	}
+
+	if (hdr->infhflg1)
+		tprintf_comment("%s%s%s%s%s%s%s%s%#.0x%s",
+			hdr->infhflg1 & 0x80 ?
+				"0x80 - Global Performance Data unavailable" :
+				"",
+			(hdr->infhflg1 & 0x80) && (hdr->infhflg1 & 0x40) ?
+				", " : "",
+			hdr->infhflg1 & 0x40 ?
+				"0x40 - One or more hypervisor levels below "
+				"this level does not support the STHYI "
+				"instruction" : "",
+			(hdr->infhflg1 & 0xC0) && (hdr->infhflg1 & 0x20) ?
+				", " : "",
+			hdr->infhflg1 & 0x20 ?
+				"0x20 - Virtualization stack is incomplete" :
+				"",
+			(hdr->infhflg1 & 0xE0) && (hdr->infhflg1 & 0x10) ?
+				", " : "",
+			hdr->infhflg1 & 0x10 ?
+				"0x10 - Execution environment is not within "
+				"a logical partition" : "",
+			(hdr->infhflg1 & 0xF0) && (hdr->infhflg1 & 0x0F) ?
+				", " : "",
+			hdr->infhflg1 & 0x0F,
+			hdr->infhflg1 & 0x0F ? " - ???" : "");
+	if (hdr->infhflg2) /* Reserved */
+		PRINT_FIELD_0X(", ", *hdr, infhflg2);
+	if (hdr->infhval1) /* Reserved */
+		PRINT_FIELD_0X(", ", *hdr, infhval1);
+	if (hdr->infhval2) /* Reserved */
+		PRINT_FIELD_0X(", ", *hdr, infhval2);
+
+	if (!IS_ZERO(hdr->reserved_1__))
+		PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_1__);
+
+	PRINT_FIELD_U(", ", *hdr, infhygct);
+	PRINT_FIELD_U(", ", *hdr, infhtotl);
+
+	PRINT_FIELD_U(", ", *hdr, infhdln);
+	PRINT_FIELD_U(", ", *hdr, infmoff);
+	PRINT_FIELD_U(", ", *hdr, infmlen);
+	PRINT_FIELD_U(", ", *hdr, infpoff);
+	PRINT_FIELD_U(", ", *hdr, infplen);
+
+	PRINT_FIELD_U(", ", *hdr, infhoff1);
+	PRINT_FIELD_U(", ", *hdr, infhlen1);
+	PRINT_FIELD_U(", ", *hdr, infgoff1);
+	PRINT_FIELD_U(", ", *hdr, infglen1);
+	PRINT_FIELD_U(", ", *hdr, infhoff2);
+	PRINT_FIELD_U(", ", *hdr, infhlen2);
+	PRINT_FIELD_U(", ", *hdr, infgoff2);
+	PRINT_FIELD_U(", ", *hdr, infglen2);
+	PRINT_FIELD_U(", ", *hdr, infhoff3);
+	PRINT_FIELD_U(", ", *hdr, infhlen3);
+	PRINT_FIELD_U(", ", *hdr, infgoff3);
+	PRINT_FIELD_U(", ", *hdr, infglen3);
+
+	PRINT_UNKNOWN_TAIL(hdr, hdr->infhdln);
+
+sthyi_sections:
+	tprints("}");
+
+	STHYI_PRINT_STRUCT(m, machine);
+	STHYI_PRINT_STRUCT(p, partition);
+
+	STHYI_PRINT_HV_STRUCT(h, 1, hypervisor);
+	STHYI_PRINT_HV_STRUCT(g, 1, guest);
+	STHYI_PRINT_HV_STRUCT(h, 2, hypervisor);
+	STHYI_PRINT_HV_STRUCT(g, 2, guest);
+	STHYI_PRINT_HV_STRUCT(h, 3, hypervisor);
+	STHYI_PRINT_HV_STRUCT(g, 3, guest);
+
+	tprints("}");
+}
+
+/**
+ * Wrapper for the s390 STHYI instruction that provides hypervisor information.
+ *
+ * See https://www.ibm.com/support/knowledgecenter/SSB27U_6.3.0/com.ibm.zvm.v630.hcpb4/hcpb4sth.htm
+ * for the instruction documentation.
+ *
+ * The difference in the kernel wrapper is that it doesn't require the 4K
+ * alignment for the resp_buffer page (as it just copies from the internal
+ * cache).
+ */
+SYS_FUNC(s390_sthyi)
+{
+	/* in, function ID from s390_sthyi_function_codes */
+	kernel_ulong_t function_code = tcp->u_arg[0];
+	/* out, pointer to page-sized buffer */
+	kernel_ulong_t resp_buffer_ptr = tcp->u_arg[1];
+	/* out, pointer to u64 containing function result */
+	kernel_ulong_t return_code_ptr = tcp->u_arg[2];
+	/* in, should be 0, at the moment */
+	kernel_ulong_t flags = tcp->u_arg[3];
+
+	if (entering(tcp)) {
+		printxval64(s390_sthyi_function_codes, function_code,
+			    "STHYI_FC_???");
+		tprints(", ");
+	} else {
+		switch (function_code) {
+		case STHYI_FC_CP_IFL_CAP:
+			print_sthyi_buf(tcp, resp_buffer_ptr);
+			break;
+
+		default:
+			printaddr(resp_buffer_ptr);
+		}
+
+		tprints(", ");
+		printnum_int64(tcp, return_code_ptr, "%" PRIu64);
+		tprintf(", %#" PRI_klx, flags);
+	}
+
+	return 0;
+}
+
+
+/*
+ * Structures are written based on
+ * https://www-304.ibm.com/support/docview.wss?uid=isg29c69415c1e82603c852576700058075a&aid=1#page=85
+ */
+
+struct guard_storage_control_block {
+	uint64_t reserved;
+	/**
+	 * Guard Storage Designation
+	 *  - Bits 0..J, J == 64-GSC - Guard Storage Origin (GSO)
+	 *  - Bits 53..55 - Guard Load Shift (GLS)
+	 *  - Bits 58..63 - Guard Storage Characteristic (GSC), this is J from
+	 *                  the first item, valud values are 25..56.
+	 */
+	uint64_t gsd;
+	uint64_t gssm;     /**< Guard Storage Section Mask */
+	uint64_t gs_epl_a; /**< Guard Storage Event Parameter List Address */
+};
+
+struct guard_storage_event_parameter_list {
+	uint8_t  pad1;
+	/**
+	 * Guard Storage Event Addressing Mode
+	 *  - 0x40 - Extended addressing mode (E)
+	 *  - 0x80 - Basic addressing mode (B)
+	 */
+	uint8_t  gs_eam;
+	/**
+	 * Guard Storage Event Cause indication
+	 *  - 0x01 - CPU was in transaction execution mode (TX)
+	 *  - 0x02 - CPU was in constrained transaction execution mode (CX)
+	 *  - 0x80 - Instruction causing the event: 0 - LGG, 1 - LLGFGS
+	 */
+	uint8_t  gs_eci;
+	/**
+	 * Guard Storage Event Access Information
+	 *  - 0x01 - DAT mode
+	 *  - Bits 1..2 - Address space indication
+	 *  - Bits 4..7 - AR number
+	 */
+	uint8_t  gs_eai;
+	uint32_t pad2;
+	uint64_t gs_eha; /**< Guard Storage Event Handler Address */
+	uint64_t gs_eia; /**< Guard Storage Event Instruction Address */
+	uint64_t gs_eoa; /**< Guard Storage Event Operation Address */
+	uint64_t gs_eir; /**< Guard Storage Event Intermediate Result */
+	uint64_t gs_era; /**< Guard Storage Event Return Address */
+};
+
+static void
+guard_storage_print_gsepl(struct tcb *tcp, uint64_t addr)
+{
+	struct guard_storage_event_parameter_list gsepl;
+
+	/* Since it is 64-bit even on 31-bit s390... */
+	if (sizeof(addr) > current_klongsize &&
+	    addr >= (1ULL << (current_klongsize * 8))) {
+		tprintf("%#" PRIx64, addr);
+
+		return;
+	}
+
+	if (umove_or_printaddr(tcp, addr, &gsepl))
+		return;
+
+	tprints("[{");
+
+	if (!abbrev(tcp)) {
+		if (gsepl.pad1) {
+			PRINT_FIELD_0X("", gsepl, pad1);
+			tprints(", ");
+		}
+
+		PRINT_FIELD_0X("",   gsepl, gs_eam);
+		tprintf_comment("extended addressing mode: %u, "
+				"basic addressing mode: %u",
+				!!(gsepl.gs_eam & 0x2), !!(gsepl.gs_eam & 0x1));
+
+		PRINT_FIELD_0X(", ", gsepl, gs_eci);
+		tprintf_comment("CPU in TX: %u, CPU in CX: %u, instruction: %s",
+				!!(gsepl.gs_eci & 0x80),
+				!!(gsepl.gs_eci & 0x40),
+				gsepl.gs_eci & 0x01 ? "LLGFGS" : "LGG");
+
+		PRINT_FIELD_0X(", ", gsepl, gs_eai);
+		tprintf_comment("DAT: %u, address space indication: %u, "
+				"AR number: %u",
+				!!(gsepl.gs_eai & 0x40),
+				(gsepl.gs_eai >> 4) & 0x3,
+				gsepl.gs_eai & 0xF);
+
+		if (gsepl.pad2)
+			PRINT_FIELD_0X(", ", gsepl, pad2);
+
+		tprints(", ");
+	}
+
+	PRINT_FIELD_X("", gsepl, gs_eha);
+
+	if (!abbrev(tcp)) {
+		PRINT_FIELD_X(", ", gsepl, gs_eia);
+		PRINT_FIELD_X(", ", gsepl, gs_eoa);
+		PRINT_FIELD_X(", ", gsepl, gs_eir);
+		PRINT_FIELD_X(", ", gsepl, gs_era);
+	} else {
+		tprints(", ...");
+	}
+
+	tprints("}]");
+}
+
+# define DIV_ROUND_UP(x,y) (((x) + ((y) - 1)) / (y))
+
+static void
+guard_storage_print_gscb(struct tcb *tcp, kernel_ulong_t addr)
+{
+	struct guard_storage_control_block gscb;
+
+	if (umove_or_printaddr(tcp, addr, &gscb))
+		return;
+
+	tprints("{");
+
+	if (gscb.reserved) {
+		PRINT_FIELD_0X("", gscb, reserved);
+		tprints(", ");
+	}
+
+	PRINT_FIELD_0X("", gscb, gsd);
+
+	if (!abbrev(tcp)) {
+		unsigned int gsc = gscb.gsd & 0x3F;
+		bool gsc_valid = gsc >= 25 && gsc <= 56;
+		tprintf_comment("GS origin: %#*.*" PRIx64 "%s, "
+				"guard load shift: %" PRIu64 ", "
+				"GS characteristic: %u",
+				gsc_valid ? 2 + DIV_ROUND_UP(64 - gsc, 4) : 0,
+				gsc_valid ? DIV_ROUND_UP(64 - gsc, 4) : 0,
+				gsc_valid ? gscb.gsd >> gsc : 0,
+				gsc_valid ? "" : "[invalid]",
+				(gscb.gsd >> 8) & 0x7, gsc);
+	}
+
+	PRINT_FIELD_0X(", ", gscb, gssm);
+
+	tprints(", gs_epl_a=");
+	guard_storage_print_gsepl(tcp, gscb.gs_epl_a);
+
+	tprints("}");
+}
+
+SYS_FUNC(s390_guarded_storage)
+{
+	int command = (int) tcp->u_arg[0];
+	kernel_ulong_t gs_cb = tcp->u_arg[1];
+
+	printxval(s390_guarded_storage_commands, command, "GS_???");
+
+	switch (command) {
+	case GS_ENABLE:
+	case GS_DISABLE:
+	case GS_CLEAR_BC_CB:
+	case GS_BROADCAST:
+		break;
+
+	case GS_SET_BC_CB:
+		tprints(", ");
+		guard_storage_print_gscb(tcp, gs_cb);
+		break;
+
+	default:
+		tprints(", ");
+		printaddr(gs_cb);
+	}
+
+	return RVAL_DECODED;
+}
+
+SYS_FUNC(s390_runtime_instr)
+{
+	int command = (int) tcp->u_arg[0];
+	int signum = (int) tcp->u_arg[1];
+
+	const char *command_descr =
+		xlookup(s390_runtime_instr_commands, command);
+
+	tprintf("%d", command);
+	tprints_comment(command_descr ? command_descr :
+			"S390_RUNTIME_INSTR_???");
+
+	/*
+	 * signum is ignored since Linux 4.4, but let's print it for start
+	 * command anyway.
+	 */
+	switch (command) {
+	case S390_RUNTIME_INSTR_START:
+		tprints(", ");
+		tprints(signame(signum));
+		break;
+
+	case S390_RUNTIME_INSTR_STOP:
+	default:
+		break;
+	}
+
+	return RVAL_DECODED;
+}
+
+SYS_FUNC(s390_pci_mmio_write)
+{
+	kernel_ulong_t mmio_addr = tcp->u_arg[0];
+	kernel_ulong_t user_buf  = tcp->u_arg[1];
+	kernel_ulong_t length    = tcp->u_arg[2];
+
+	tprintf("%#" PRI_klx ", ", mmio_addr);
+	printstr_ex(tcp, user_buf, length, QUOTE_FORCE_HEX);
+	tprintf(", %" PRI_klu, length);
+
+	return RVAL_DECODED;
+}
+
+SYS_FUNC(s390_pci_mmio_read)
+{
+	kernel_ulong_t mmio_addr = tcp->u_arg[0];
+	kernel_ulong_t user_buf  = tcp->u_arg[1];
+	kernel_ulong_t length    = tcp->u_arg[2];
+
+	if (entering(tcp)) {
+		tprintf("%#" PRI_klx ", ", mmio_addr);
+	} else {
+		if (!syserror(tcp))
+			printstr_ex(tcp, user_buf, length, QUOTE_FORCE_HEX);
+		else
+			printaddr(user_buf);
+
+		tprintf(", %" PRI_klu, length);
+	}
+
+	return 0;
+}
+
+#endif /* defined S390 || defined S390X */
diff --git a/sen.h b/sen.h
index 8af7d19..a91c11d 100644
--- a/sen.h
+++ b/sen.h
@@ -270,6 +270,7 @@
 SEN_renameat2,
 SEN_request_key,
 SEN_restart_syscall,
+SEN_riscv_flush_icache,
 SEN_rmdir,
 SEN_rt_sigaction,
 SEN_rt_sigpending,
@@ -279,6 +280,11 @@
 SEN_rt_sigsuspend,
 SEN_rt_sigtimedwait,
 SEN_rt_tgsigqueueinfo,
+SEN_s390_guarded_storage,
+SEN_s390_pci_mmio_read,
+SEN_s390_pci_mmio_write,
+SEN_s390_runtime_instr,
+SEN_s390_sthyi,
 SEN_sched_get_priority_max,
 SEN_sched_get_priority_min,
 SEN_sched_getaffinity,
diff --git a/signal.c b/signal.c
index b14124e..170fee7 100644
--- a/signal.c
+++ b/signal.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 2001-2017 The strace developers.
+ * Copyright (c) 2001-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,7 @@
 
 #include "defs.h"
 #include "nsig.h"
+#include "xstring.h"
 
 /* The libc headers do not define this constant since it should only be
    used by the implementation.  So we define it here.  */
@@ -50,19 +51,15 @@
  * Some architectures, otherwise, do not define SA_RESTORER in their headers,
  * but actually have sa_restorer.
  */
-#ifdef SA_RESTORER
-# if defined HPPA || defined IA64
-#  define HAVE_SA_RESTORER 0
-# else
-#  define HAVE_SA_RESTORER 1
-# endif
-#else /* !SA_RESTORER */
-# if defined SPARC || defined SPARC64 || defined M68K
+#ifdef HAVE_ARCH_SA_RESTORER
+# define HAVE_SA_RESTORER HAVE_ARCH_SA_RESTORER
+#else /* !HAVE_ARCH_SA_RESTORER */
+# ifdef SA_RESTORER
 #  define HAVE_SA_RESTORER 1
 # else
 #  define HAVE_SA_RESTORER 0
 # endif
-#endif
+#endif /* HAVE_ARCH_SA_RESTORER */
 
 #include "xlat/sa_handler_values.h"
 #include "xlat/sigact_flags.h"
@@ -137,12 +134,12 @@
 			return signalent[s];
 #ifdef ASM_SIGRTMAX
 		if (s >= ASM_SIGRTMIN && s <= (unsigned int) ASM_SIGRTMAX) {
-			sprintf(buf, "SIGRT_%u", s - ASM_SIGRTMIN);
+			xsprintf(buf, "SIGRT_%u", s - ASM_SIGRTMIN);
 			return buf;
 		}
 #endif
 	}
-	sprintf(buf, "%d", sig);
+	xsprintf(buf, "%d", sig);
 	return buf;
 }
 
@@ -209,11 +206,11 @@
 		}
 #ifdef ASM_SIGRTMAX
 		else if (i >= ASM_SIGRTMIN && i <= ASM_SIGRTMAX) {
-			s += sprintf(s, "RT_%u", i - ASM_SIGRTMIN);
+			s = xappendstr(outstr, s, "RT_%u", i - ASM_SIGRTMIN);
 		}
 #endif
 		else {
-			s += sprintf(s, "%u", i);
+			s = xappendstr(outstr, s, "%u", i);
 		}
 		sep = ' ';
 	}
@@ -682,7 +679,7 @@
 		}
 	}
 	return 0;
-};
+}
 
 SYS_FUNC(restart_syscall)
 {
diff --git a/sigreturn.c b/sigreturn.c
index b2eeb7a..bfc6f17 100644
--- a/sigreturn.c
+++ b/sigreturn.c
@@ -1,7 +1,7 @@
 #include "defs.h"
+#include "ptrace.h"
 #include "nsig.h"
 #include "regs.h"
-#include "ptrace.h"
 
 #if defined HAVE_ASM_SIGCONTEXT_H && !defined HAVE_STRUCT_SIGCONTEXT
 # include <asm/sigcontext.h>
diff --git a/socketutils.c b/socketutils.c
index ce4e524..c6c42c1 100644
--- a/socketutils.c
+++ b/socketutils.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2014 Zubin Mithra <zubin.mithra@gmail.com>
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -46,6 +46,8 @@
 # define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) 0)->sun_path)
 #endif
 
+#include "xstring.h"
+
 typedef struct {
 	unsigned long inode;
 	char *details;
@@ -85,7 +87,7 @@
 }
 
 static bool
-send_query(const int fd, void *req, size_t req_size)
+send_query(struct tcb *tcp, const int fd, void *req, size_t req_size)
 {
 	struct sockaddr_nl nladdr = {
 		.nl_family = AF_NETLINK
@@ -112,7 +114,8 @@
 }
 
 static bool
-inet_send_query(const int fd, const int family, const int proto)
+inet_send_query(struct tcb *tcp, const int fd, const int family,
+		const int proto)
 {
 	struct {
 		const struct nlmsghdr nlh;
@@ -129,7 +132,7 @@
 			.idiag_states = -1
 		}
 	};
-	return send_query(fd, &req, sizeof(req));
+	return send_query(tcp, fd, &req, sizeof(req));
 }
 
 static int
@@ -188,7 +191,7 @@
 }
 
 static bool
-receive_responses(const int fd, const unsigned long inode,
+receive_responses(struct tcb *tcp, const int fd, const unsigned long inode,
 		  const unsigned long expected_msg_type,
 		  int (*parser)(const void *, int,
 				unsigned long, void *),
@@ -241,7 +244,7 @@
 }
 
 static bool
-unix_send_query(const int fd, const unsigned long inode)
+unix_send_query(struct tcb *tcp, const int fd, const unsigned long inode)
 {
 	struct {
 		const struct nlmsghdr nlh;
@@ -259,7 +262,7 @@
 			.udiag_show = UDIAG_SHOW_NAME | UDIAG_SHOW_PEER
 		}
 	};
-	return send_query(fd, &req, sizeof(req));
+	return send_query(tcp, fd, &req, sizeof(req));
 }
 
 static int
@@ -310,7 +313,7 @@
 
 	char peer_str[3 + sizeof(peer) * 3];
 	if (peer)
-		snprintf(peer_str, sizeof(peer_str), "->%u", peer);
+		xsprintf(peer_str, "->%u", peer);
 	else
 		peer_str[0] = '\0';
 
@@ -341,7 +344,7 @@
 }
 
 static bool
-netlink_send_query(const int fd, const unsigned long inode)
+netlink_send_query(struct tcb *tcp, const int fd, const unsigned long inode)
 {
 	struct {
 		const struct nlmsghdr nlh;
@@ -358,7 +361,7 @@
 			.ndiag_show = NDIAG_SHOW_MEMINFO
 		}
 	};
-	return send_query(fd, &req, sizeof(req));
+	return send_query(tcp, fd, &req, sizeof(req));
 }
 
 static int
@@ -396,60 +399,60 @@
 }
 
 static const char *
-unix_get(const int fd, const unsigned long inode)
+unix_get(struct tcb *tcp, const int fd, const unsigned long inode)
 {
-	return unix_send_query(fd, inode)
-		&& receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY,
+	return unix_send_query(tcp, fd, inode)
+		&& receive_responses(tcp, fd, inode, SOCK_DIAG_BY_FAMILY,
 				     unix_parse_response, (void *) "UNIX")
 		? get_sockaddr_by_inode_cached(inode) : NULL;
 }
 
 static const char *
-inet_get(const int fd, const int family, const int protocol,
+inet_get(struct tcb *tcp, const int fd, const int family, const int protocol,
 	 const unsigned long inode, const char *proto_name)
 {
-	return inet_send_query(fd, family, protocol)
-		&& receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY,
+	return inet_send_query(tcp, fd, family, protocol)
+		&& receive_responses(tcp, fd, inode, SOCK_DIAG_BY_FAMILY,
 				     inet_parse_response, (void *) proto_name)
 		? get_sockaddr_by_inode_cached(inode) : NULL;
 }
 
 static const char *
-tcp_v4_get(const int fd, const unsigned long inode)
+tcp_v4_get(struct tcb *tcp, const int fd, const unsigned long inode)
 {
-	return inet_get(fd, AF_INET, IPPROTO_TCP, inode, "TCP");
+	return inet_get(tcp, fd, AF_INET, IPPROTO_TCP, inode, "TCP");
 }
 
 static const char *
-udp_v4_get(const int fd, const unsigned long inode)
+udp_v4_get(struct tcb *tcp, const int fd, const unsigned long inode)
 {
-	return inet_get(fd, AF_INET, IPPROTO_UDP, inode, "UDP");
+	return inet_get(tcp, fd, AF_INET, IPPROTO_UDP, inode, "UDP");
 }
 
 static const char *
-tcp_v6_get(const int fd, const unsigned long inode)
+tcp_v6_get(struct tcb *tcp, const int fd, const unsigned long inode)
 {
-	return inet_get(fd, AF_INET6, IPPROTO_TCP, inode, "TCPv6");
+	return inet_get(tcp, fd, AF_INET6, IPPROTO_TCP, inode, "TCPv6");
 }
 
 static const char *
-udp_v6_get(const int fd, const unsigned long inode)
+udp_v6_get(struct tcb *tcp, const int fd, const unsigned long inode)
 {
-	return inet_get(fd, AF_INET6, IPPROTO_UDP, inode, "UDPv6");
+	return inet_get(tcp, fd, AF_INET6, IPPROTO_UDP, inode, "UDPv6");
 }
 
 static const char *
-netlink_get(const int fd, const unsigned long inode)
+netlink_get(struct tcb *tcp, const int fd, const unsigned long inode)
 {
-	return netlink_send_query(fd, inode)
-		&& receive_responses(fd, inode, SOCK_DIAG_BY_FAMILY,
+	return netlink_send_query(tcp, fd, inode)
+		&& receive_responses(tcp, fd, inode, SOCK_DIAG_BY_FAMILY,
 				     netlink_parse_response, (void *) "NETLINK")
 		? get_sockaddr_by_inode_cached(inode) : NULL;
 }
 
 static const struct {
 	const char *const name;
-	const char * (*const get)(int, unsigned long);
+	const char * (*const get)(struct tcb *, int, unsigned long);
 } protocols[] = {
 	[SOCK_PROTO_UNIX] = { "UNIX", unix_get },
 	[SOCK_PROTO_TCP] = { "TCP", tcp_v4_get },
@@ -472,7 +475,7 @@
 }
 
 static const char *
-get_sockaddr_by_inode_uncached(const unsigned long inode,
+get_sockaddr_by_inode_uncached(struct tcb *tcp, const unsigned long inode,
 			       const enum sock_proto proto)
 {
 	if ((unsigned int) proto >= ARRAY_SIZE(protocols) ||
@@ -485,14 +488,14 @@
 	const char *details = NULL;
 
 	if (proto != SOCK_PROTO_UNKNOWN) {
-		details = protocols[proto].get(fd, inode);
+		details = protocols[proto].get(tcp, fd, inode);
 	} else {
 		unsigned int i;
 		for (i = (unsigned int) SOCK_PROTO_UNKNOWN + 1;
 		     i < ARRAY_SIZE(protocols); ++i) {
 			if (!protocols[i].get)
 				continue;
-			details = protocols[i].get(fd, inode);
+			details = protocols[i].get(tcp, fd, inode);
 			if (details)
 				break;
 		}
@@ -503,10 +506,10 @@
 }
 
 static bool
-print_sockaddr_by_inode_uncached(const unsigned long inode,
+print_sockaddr_by_inode_uncached(struct tcb *tcp, const unsigned long inode,
 				 const enum sock_proto proto)
 {
-	const char *details = get_sockaddr_by_inode_uncached(inode, proto);
+	const char *details = get_sockaddr_by_inode_uncached(tcp, inode, proto);
 
 	if (details) {
 		tprints(details);
@@ -529,7 +532,7 @@
 {
 	const char *details = get_sockaddr_by_inode_cached(inode);
 	return details ? details :
-		get_sockaddr_by_inode_uncached(inode, getfdproto(tcp, fd));
+		get_sockaddr_by_inode_uncached(tcp, inode, getfdproto(tcp, fd));
 }
 
 /* Given an inode number of a socket, print out its protocol details.  */
@@ -538,7 +541,8 @@
 			const unsigned long inode)
 {
 	return print_sockaddr_by_inode_cached(inode) ? true :
-		print_sockaddr_by_inode_uncached(inode, getfdproto(tcp, fd));
+		print_sockaddr_by_inode_uncached(tcp, inode,
+						 getfdproto(tcp, fd));
 }
 
 #ifdef HAVE_LINUX_GENETLINK_H
@@ -552,7 +556,7 @@
  * codes are building xlat(dyxlat) at runtime.
  */
 static bool
-genl_send_dump_families(const int fd)
+genl_send_dump_families(struct tcb *tcp, const int fd)
 {
 	struct {
 		const struct nlmsghdr nlh;
@@ -567,7 +571,7 @@
 			.cmd = CTRL_CMD_GETFAMILY,
 		}
 	};
-	return send_query(fd, &req, sizeof(req));
+	return send_query(tcp, fd, &req, sizeof(req));
 }
 
 static int
@@ -618,7 +622,7 @@
 }
 
 const struct xlat *
-genl_families_xlat(void)
+genl_families_xlat(struct tcb *tcp)
 {
 	static struct dyxlat *dyxlat;
 
@@ -629,8 +633,8 @@
 		if (fd < 0)
 			goto out;
 
-		if (genl_send_dump_families(fd))
-			receive_responses(fd, 0, GENL_ID_CTRL,
+		if (genl_send_dump_families(tcp, fd))
+			receive_responses(tcp, fd, 0, GENL_ID_CTRL,
 					  genl_parse_families_response, dyxlat);
 		close(fd);
 	}
@@ -642,7 +646,7 @@
 #else /* !HAVE_LINUX_GENETLINK_H */
 
 const struct xlat *
-genl_families_xlat(void)
+genl_families_xlat(struct tcb *tcp)
 {
 	return NULL;
 }
diff --git a/strace-log-merge b/strace-log-merge
index 8ab2409..7c0c0a1 100755
--- a/strace-log-merge
+++ b/strace-log-merge
@@ -1,4 +1,31 @@
 #!/bin/sh
+#
+# This script processes strace -ff -tt output.  It merges the contents of all
+# STRACE_LOG.PID files and sorts them, printing result on the standard output.
+#
+# Copyright (c) 2012-2017 The strace developers.
+#
+# 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.
 
 show_usage()
 {
@@ -13,6 +40,9 @@
 __EOF__
 }
 
+dd='\([0-9][0-9]\)'
+ds='\([0-9][0-9]*\)'
+
 if [ $# -ne 1 ]; then
 	show_usage >&2
 	exit 1
@@ -32,10 +62,10 @@
 	# Some strace logs have last line which is not '\n' terminated,
 	# so add extra newline to every file.
 	# grep -v '^$' removes empty lines which may result.
-	sed "s/^/$pid /" < "$file"
+	sed -n "s/^\($dd:\)\?\($dd:\)\?\($ds\.\)\?$ds /\2\4\6\7 $pid \0/p" < "$file"
 	echo
 done \
-| sort -s -k2,2 | grep -v '^$'
+| sort -s -n -k1,1 | sed -n 's/^[0-9][0-9]* //p'
 
 rc=$?
 [ $rc -eq 1 ] &&
diff --git a/strace-log-merge.1 b/strace-log-merge.1
new file mode 100644
index 0000000..9bdee73
--- /dev/null
+++ b/strace-log-merge.1
@@ -0,0 +1,146 @@
+.\" Copyright (c) 2017 The strace developers.
+.\" 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.
+.\"
+.\" Required option.
+.de OR
+.  ie \\n(.$-1 \
+.    RI "\fB\\$1\fP" "\ \\$2"
+.  el \
+.    BR "\\$1"
+..
+.\"
+.TH STRACE-LOG-MERGE 1 "2018-02-11" "strace 4.21"
+.\"
+.SH NAME
+strace-log-merge \- merge strace \-ff \-tt output
+.\"
+.SH SYNOPSIS
+.SY strace\-log\-merge
+.IR STRACE_LOG
+.YS
+.SY strace\-log\-merge
+.OR \-\-help
+.YS
+.\"
+.SH DESCRIPTION
+.B strace\-log\-merge
+merges the output of
+.B strace \-ff \-tt[t]
+command, prepending PID to each line and sorting the result using time stamp as
+a key.
+.\"
+.SH OPTIONS
+.\"
+.TP
+.B \-\-help
+Show program usage and exit.
+.TP
+.I STRACE_LOG
+Output file name prefix of files produced by a
+.B strace -ff -tt[t]
+command.
+.SH EXIT STATUS
+.TP
+.B 0
+Success
+.TP
+.B Non-zero
+Error occurred: either no argument specified (in that case a usage is printed),
+or something went wrong during the processing of
+.IR STRACE_LOG ".*"
+files.
+.\"
+.SH USAGE EXAMPLE
+.sp
+.nf
+.ft CW
+$ strace -o sleepy -ff -tt -e trace=execve,nanosleep \\
+        sh -c 'sleep 0.1 & sleep 0.2 & sleep 0.3'
+$ strace-log-merge sleepy | fold -w 72 -s
+13475 21:13:52.040837 execve("/bin/sh", ["sh", "-c", "sleep 0.1 & sleep
+0.2 & sleep 0."...], 0x7ffde54b2450 /* 33 vars */) = 0
+13478 21:13:52.044050 execve("/bin/sleep", ["sleep", "0.3"],
+0x5631be4f87a8 /* 33 vars */) = 0
+13476 21:13:52.044269 execve("/bin/sleep", ["sleep", "0.1"],
+0x5631be4f87a8 /* 33 vars */) = 0
+13477 21:13:52.044389 execve("/bin/sleep", ["sleep", "0.2"],
+0x5631be4f87a8 /* 33 vars */) = 0
+13478 21:13:52.046207 nanosleep({tv_sec=0, tv_nsec=300000000}, NULL) = 0
+13476 21:13:52.046303 nanosleep({tv_sec=0, tv_nsec=100000000}, NULL) = 0
+13477 21:13:52.046318 nanosleep({tv_sec=0, tv_nsec=200000000}, NULL) = 0
+13476 21:13:52.146852 +++ exited with 0 +++
+13475 21:13:52.146942 --- SIGCHLD {si_signo=SIGCHLD,
+si_code=CLD_EXITED, si_pid=13476, si_uid=1000, si_status=0, si_utime=0,
+si_stime=0} ---
+13477 21:13:52.247782 +++ exited with 0 +++
+13475 21:13:52.247885 --- SIGCHLD {si_signo=SIGCHLD,
+si_code=CLD_EXITED, si_pid=13477, si_uid=1000, si_status=0, si_utime=0,
+si_stime=0} ---
+13478 21:13:52.347680 +++ exited with 0 +++
+13475 21:13:52.347786 --- SIGCHLD {si_signo=SIGCHLD,
+si_code=CLD_EXITED, si_pid=13478, si_uid=1000, si_status=0, si_utime=0,
+si_stime=0} ---
+13475 21:13:52.348069 +++ exited with 0 +++
+.ft R
+.fi
+.sp
+.\"
+.SH NOTES
+.I strace-log-merge
+does not work well with
+.B strace
+logs generated by
+.B strace -tt
+invocation that pass midnight, as those lack the information required
+for the proper sorting.
+Employing the
+.B -ttt
+option in the respective
+.B strace
+invocation should solve the problem.
+.\"
+.SH BUGS
+.I strace-log-merge
+does not perform any checks whether the files specified are in the correct
+format and implies that only files from a single
+.I strace
+session match
+.IR STRACE_LOG ".*"
+glob pattern.
+.\"
+.SH HISTORY
+The initial version of
+.I strace-log-merge
+was written by Denys Vlasenko in 2012.
+.\"
+.SH REPORTING BUGS
+Problems with
+.B strace-log-merge
+should be reported to the
+.B strace
+mailing list at <strace\-devel@lists.sourceforge.net>.
+.\"
+.SH "SEE ALSO"
+.BR strace (1)
diff --git a/strace-log-merge.1.in b/strace-log-merge.1.in
new file mode 100644
index 0000000..c5f6d29
--- /dev/null
+++ b/strace-log-merge.1.in
@@ -0,0 +1,146 @@
+.\" Copyright (c) 2017 The strace developers.
+.\" 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.
+.\"
+.\" Required option.
+.de OR
+.  ie \\n(.$-1 \
+.    RI "\fB\\$1\fP" "\ \\$2"
+.  el \
+.    BR "\\$1"
+..
+.\"
+.TH STRACE-LOG-MERGE 1 "@MANPAGE_DATE@" "strace @VERSION@"
+.\"
+.SH NAME
+strace-log-merge \- merge strace \-ff \-tt output
+.\"
+.SH SYNOPSIS
+.SY strace\-log\-merge
+.IR STRACE_LOG
+.YS
+.SY strace\-log\-merge
+.OR \-\-help
+.YS
+.\"
+.SH DESCRIPTION
+.B strace\-log\-merge
+merges the output of
+.B strace \-ff \-tt[t]
+command, prepending PID to each line and sorting the result using time stamp as
+a key.
+.\"
+.SH OPTIONS
+.\"
+.TP
+.B \-\-help
+Show program usage and exit.
+.TP
+.I STRACE_LOG
+Output file name prefix of files produced by a
+.B strace -ff -tt[t]
+command.
+.SH EXIT STATUS
+.TP
+.B 0
+Success
+.TP
+.B Non-zero
+Error occurred: either no argument specified (in that case a usage is printed),
+or something went wrong during the processing of
+.IR STRACE_LOG ".*"
+files.
+.\"
+.SH USAGE EXAMPLE
+.sp
+.nf
+.ft CW
+$ strace -o sleepy -ff -tt -e trace=execve,nanosleep \\
+        sh -c 'sleep 0.1 & sleep 0.2 & sleep 0.3'
+$ strace-log-merge sleepy | fold -w 72 -s
+13475 21:13:52.040837 execve("/bin/sh", ["sh", "-c", "sleep 0.1 & sleep
+0.2 & sleep 0."...], 0x7ffde54b2450 /* 33 vars */) = 0
+13478 21:13:52.044050 execve("/bin/sleep", ["sleep", "0.3"],
+0x5631be4f87a8 /* 33 vars */) = 0
+13476 21:13:52.044269 execve("/bin/sleep", ["sleep", "0.1"],
+0x5631be4f87a8 /* 33 vars */) = 0
+13477 21:13:52.044389 execve("/bin/sleep", ["sleep", "0.2"],
+0x5631be4f87a8 /* 33 vars */) = 0
+13478 21:13:52.046207 nanosleep({tv_sec=0, tv_nsec=300000000}, NULL) = 0
+13476 21:13:52.046303 nanosleep({tv_sec=0, tv_nsec=100000000}, NULL) = 0
+13477 21:13:52.046318 nanosleep({tv_sec=0, tv_nsec=200000000}, NULL) = 0
+13476 21:13:52.146852 +++ exited with 0 +++
+13475 21:13:52.146942 --- SIGCHLD {si_signo=SIGCHLD,
+si_code=CLD_EXITED, si_pid=13476, si_uid=1000, si_status=0, si_utime=0,
+si_stime=0} ---
+13477 21:13:52.247782 +++ exited with 0 +++
+13475 21:13:52.247885 --- SIGCHLD {si_signo=SIGCHLD,
+si_code=CLD_EXITED, si_pid=13477, si_uid=1000, si_status=0, si_utime=0,
+si_stime=0} ---
+13478 21:13:52.347680 +++ exited with 0 +++
+13475 21:13:52.347786 --- SIGCHLD {si_signo=SIGCHLD,
+si_code=CLD_EXITED, si_pid=13478, si_uid=1000, si_status=0, si_utime=0,
+si_stime=0} ---
+13475 21:13:52.348069 +++ exited with 0 +++
+.ft R
+.fi
+.sp
+.\"
+.SH NOTES
+.I strace-log-merge
+does not work well with
+.B strace
+logs generated by
+.B strace -tt
+invocation that pass midnight, as those lack the information required
+for the proper sorting.
+Employing the
+.B -ttt
+option in the respective
+.B strace
+invocation should solve the problem.
+.\"
+.SH BUGS
+.I strace-log-merge
+does not perform any checks whether the files specified are in the correct
+format and implies that only files from a single
+.I strace
+session match
+.IR STRACE_LOG ".*"
+glob pattern.
+.\"
+.SH HISTORY
+The initial version of
+.I strace-log-merge
+was written by Denys Vlasenko in 2012.
+.\"
+.SH REPORTING BUGS
+Problems with
+.B strace-log-merge
+should be reported to the
+.B strace
+mailing list at <strace\-devel@lists.sourceforge.net>.
+.\"
+.SH "SEE ALSO"
+.BR strace (1)
diff --git a/strace.1 b/strace.1
index a843ba4..cbac6b2 100644
--- a/strace.1
+++ b/strace.1
@@ -53,7 +53,7 @@
 .  el \
 .    BR "\\$1"
 ..
-.TH STRACE 1 "2017-08-28" "strace 4.20"
+.TH STRACE 1 "2018-02-11" "strace 4.21"
 .SH NAME
 strace \- trace system calls and signals
 .SH SYNOPSIS
@@ -165,39 +165,50 @@
 rt_sigreturn(0xe)                       = 0
 read(0, "", 1)                          = 0
 .CE
-Arguments are printed in symbolic form with a passion.
+Arguments are printed in symbolic form with passion.
 This example shows the shell performing ">>xyzzy" output redirection:
 .CW
 open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
 .CE
-Here the third argument of open is decoded by breaking down the
+Here, the third argument of open is decoded by breaking down the
 flag argument into its three bitwise-OR constituents and printing the
-mode value in octal by tradition.  Where traditional or native
+mode value in octal by tradition.  Where the traditional or native
 usage differs from ANSI or POSIX, the latter forms are preferred.
 In some cases,
 .B strace
-output has proven to be more readable than the source.
+output is proven to be more readable than the source.
 .LP
 Structure pointers are dereferenced and the members are displayed
-as appropriate.  In all cases arguments are formatted in the most C-like
+as appropriate.  In most cases, arguments are formatted in the most C-like
 fashion possible.
 For example, the essence of the command "ls \-l /dev/null" is captured as:
 .CW
 lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
 .CE
 Notice how the 'struct stat' argument is dereferenced and how each member is
-displayed symbolically.  In particular, observe how the st_mode member
-is carefully decoded into a bitwise-OR of symbolic and numeric values.
-Also notice in this example that the first argument to lstat is an input
-to the system call and the second argument is an output.  Since output
-arguments are not modified if the system call fails, arguments may not
-always be dereferenced.  For example, retrying the "ls \-l" example
+displayed symbolically.  In particular, observe how the
+.B st_mode
+member is carefully decoded into a bitwise-OR of symbolic and numeric values.
+Also notice in this example that the first argument to
+.B lstat
+is an input to the system call and the second argument is an output.
+Since output arguments are not modified if the system call fails, arguments may
+not always be dereferenced.  For example, retrying the "ls \-l" example
 with a non-existent file produces the following line:
 .CW
 lstat("/foo/bar", 0xb004) = \-1 ENOENT (No such file or directory)
 .CE
 In this case the porch light is on but nobody is home.
 .LP
+Syscalls unknown to
+.B strace
+are printed raw, with the unknown system call number printed in hexadecimal form
+and prefixed with "syscall_":
+.CW
+syscall_0xbad(0xfedcba9876543210, 0xfedcba9876543211, 0xfedcba9876543212,
+0xfedcba9876543213, 0xfedcba9876543214, 0xfedcba9876543215) = -1 (errno 38)
+.CE
+.LP
 Character pointers are dereferenced and printed as C strings.
 Non-printing characters in strings are normally represented by
 ordinary C escape codes.
@@ -219,19 +230,20 @@
 getgroups(32, [100, 0]) = 2
 .CE
 On the other hand, bit-sets are also shown using square brackets
-but set elements are separated only by a space.  Here is the shell
+but set elements are separated only by a space.  Here is the shell,
 preparing to execute an external command:
 .CW
 sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0
 .CE
-Here the second argument is a bit-set of two signals, SIGCHLD and SIGTTOU.
-In some cases the bit-set is so full that printing out the unset
+Here, the second argument is a bit-set of two signals,
+.BR SIGCHLD " and " SIGTTOU .
+In some cases, the bit-set is so full that printing out the unset
 elements is more valuable.  In that case, the bit-set is prefixed by
 a tilde like this:
 .CW
 sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0
 .CE
-Here the second argument represents the full set of all signals.
+Here, the second argument represents the full set of all signals.
 .SH OPTIONS
 .SS Output format
 .TP 12
@@ -251,15 +263,17 @@
 Write the trace output to the file
 .I filename
 rather than to stderr.
-Use
-.I filename.pid
-if
+.IR filename . pid
+form is used if
 .B \-ff
-is used.
-If the argument begins with '|' or with '!' then the rest of the
+option is supplied.
+If the argument begins with '|' or '!', the rest of the
 argument is treated as a command and all output is piped to it.
 This is convenient for piping the debugging output to a program
 without affecting the redirections of executed programs.
+The latter is not compatible with
+.B \-ff
+option currently.
 .TP
 .B \-q
 Suppress messages about attaching, detaching etc.  This happens
@@ -280,7 +294,7 @@
 full.
 .TP
 .B \-t
-Prefix each line of the trace with the time of day.
+Prefix each line of the trace with the wall clock time.
 .TP
 .B \-tt
 If given twice, the time printed will include the microseconds.
@@ -309,14 +323,12 @@
 .TP 12
 .B \-c
 Count time, calls, and errors for each system call and report a summary on
-program exit.  On Linux, this attempts to show system time (CPU time spent
-running in the kernel) independent of wall clock time.  If
+program exit.  This attempts to show system time (CPU time spent running
+in the kernel) independent of wall clock time.  If
 .B \-c
 is used with
-.B \-f
-or
-.B \-F
-, only aggregate totals for all traced processes are kept.
+.BR \-f ,
+only aggregate totals for all traced processes are kept.
 .TP
 .B \-C
 Like
@@ -497,6 +509,19 @@
 .BR "\-e\ trace" = /statv?fs|fsstat|ustat
 regular expression.
 .TP
+.BR "\-e\ trace" = %pure
+Trace syscalls that always succeed and have no arguments.
+Currently, this list includes
+.BR arc_gettls "(2), " getdtablesize "(2), " getegid "(2), " getegid32 "(2),"
+.BR geteuid "(2), " geteuid32 "(2), " getgid "(2), " getgid32 "(2),"
+.BR getpagesize "(2), " getpgrp "(2), " getpid "(2), " getppid "(2),"
+.BR get_thread_area (2)
+(on architectures other than x86),
+.BR gettid "(2), " get_tls "(2), " getuid "(2), " getuid32 "(2),"
+.BR getxgid "(2), " getxpid "(2), " getxuid "(2), " kern_features "(2), and"
+.BR metag_get_tls "(2)"
+syscalls.
+.TP
 \fB\-e\ abbrev\fR=\,\fIset\fR
 Abbreviate the output from printing each member of large structures.
 The default is
@@ -522,10 +547,12 @@
 Trace only the specified subset of signals.  The default is
 .BR signal = all .
 For example,
-.B signal "=!" SIGIO
+.BR signal "=!" SIGIO
 (or
 .BR signal "=!" io )
-causes SIGIO signals not to be traced.
+causes
+.B SIGIO
+signals not to be traced.
 .TP
 \fB\-e\ read\fR=\,\fIset\fR
 Perform a full hexadecimal and ASCII dump of all the data read from
@@ -730,6 +757,10 @@
 This is incompatible with
 .BR \-c ,
 since no per-process counts are kept.
+
+One might want to consider using
+.BR strace-log-merge (1)
+to obtain a combined strace log view.
 .TP
 .BI "\-I " interruptible
 When strace can be interrupted by signals (such as pressing ^C).
@@ -787,8 +818,15 @@
 itself on the standard error.
 .TP
 .B \-F
-This option is now obsolete and it has the same functionality as
-.BR \-f .
+This option is deprecated.  It is retained for backward compatibility only
+and may be removed in future releases.
+Usage of multiple instances of
+.B \-F
+option is still equivalent to a single
+.BR \-f ,
+and it is ignored at all if used along with one or more instances of
+.B \-f
+option.
 .TP
 .B \-h
 Print the help summary.
@@ -846,9 +884,69 @@
 .B trace
 group are trusted users.
 If you do use this feature, please remember to install
-a non-setuid version of
+a regular non-setuid version of
 .B strace
-for ordinary lusers to use.
+for ordinary users to use.
+.SH "MULTIPLE PERSONALITY SUPPORT"
+On some architectures,
+.B strace
+supports decoding of syscalls for processes that use different ABI rather than
+the one
+.B strace
+uses.
+Specifically, in addition to decoding native ABI,
+.B strace
+can decode the following ABIs on the following architectures:
+.TS H
+allbox;
+lb lb
+l l.
+Architecture	ABIs supported
+x86_64	i386, x32 (when built as an x86_64 application); i386 (when built as an x32 application)
+AArch64	ARM 32-bit EABI
+PowerPC 64-bit	PowerPC 32-bit
+RISC-V 64-bit	RISC-V 32-bit
+s390x	s390
+SPARC 64-bit	SPARC 32-bit
+TILE 64-bit	TILE 32-bit
+.TE
+.PP
+This support is optional and relies on ability to generate and parse structure
+definitions during the build time.
+Please refer to the output of the
+.B strace \-V
+command in order to figure out what support is available in your strace build
+("non-native" refers to an ABI that differs from the ABI strace has):
+.TP 15
+.B m32-mpers
+.B strace
+can trace and properly decode non-native 32-bit binaries.
+.TP
+.B no-m32-mpers
+.B strace
+can trace, but cannot properly decode non-native 32-bit binaries.
+.TP
+.B mx32-mpers
+.B strace
+can trace and properly decode non-native 32-on-64-bit binaries.
+.TP
+.B no-mx32-mpers
+.B strace
+can trace, but cannot properly decode non-native 32-on-64-bit binaries.
+.PP
+If the output contains neither
+.B m32-mpers
+nor
+.BR no-m32-mpers ,
+then decoding of non-native 32-bit binaries is not implemented at all
+or not applicable.
+.PP
+Likewise, if the output contains neither
+.B mx32-mpers
+nor
+.BR no-mx32-mpers ,
+then decoding of non-native 32-on-64-bit binaries is not implemented at all
+or not applicable.
 .SH NOTES
 It is a pity that so much tracing clutter is produced by systems
 employing shared libraries.
@@ -867,7 +965,7 @@
 argument, and the
 .BR setrlimit (2)
 library function uses
-.BR prlimit (2)
+.BR prlimit64 (2)
 system call on modern (2.6.38+) kernels.  These
 discrepancies are normal but idiosyncratic characteristics of the
 system call interface and are accounted for by C library wrapper
@@ -912,7 +1010,9 @@
 The original
 .B strace
 was written by Paul Kranenburg
-for SunOS and was inspired by its trace utility.
+for SunOS and was inspired by its
+.B trace
+utility.
 The SunOS version of
 .B strace
 was ported to Linux and enhanced
@@ -938,6 +1038,45 @@
 .B strace
 to Irix
 and tired of writing about himself in the third person.
+.PP
+Beginning with 1996,
+.B strace
+was maintained by Wichert Akkerman.
+During his tenure,
+.B strace
+development migrated to CVS; ports to FreeBSD and many architectures on Linux
+(including ARM, IA-64, MIPS, PA-RISC, PowerPC, s390, SPARC) were introduced.
+In 2002, the burden of
+.B strace
+maintainership was transferred to Ronald McGrath.
+Since then,
+.B strace
+gained support for several new Linux architectures (AMD64, s390x, SuperH),
+bi-architecture support for some of them, and received numerous additions and
+improvements in syscalls decoders on Linux;
+.B strace
+development migrated to
+.B git
+during that period.
+Since 2009,
+.B strace
+is actively maintained by Dmitry Levin.
+.B strace
+gained support for AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenSISC 1000,
+RISC-V, Tile/TileGx, Xtensa architectures since that time.
+In 2012, unmaintained and apparently broken support for non-Linux operating
+systems was removed.
+Also, in 2012
+.B strace
+gained support for path tracing and file descriptor path decoding.
+In 2014, support for stack traces printing was added.
+In 2016, syscall fault injection was implemented.
+.PP
+For the additional information, please refer to the
+.B NEWS
+file and
+.B strace
+repository commit log.
 .SH REPORTING BUGS
 Problems with
 .B strace
@@ -945,7 +1084,10 @@
 .B strace
 mailing list at <strace\-devel@lists.sourceforge.net>.
 .SH "SEE ALSO"
+.BR strace-log-merge (1),
 .BR ltrace (1),
+.BR perf-trace (1),
+.BR trace-cmd (1),
 .BR time (1),
 .BR ptrace (2),
 .BR proc (5)
diff --git a/strace.1.in b/strace.1.in
index 61293cf..5d45e61 100644
--- a/strace.1.in
+++ b/strace.1.in
@@ -165,39 +165,50 @@
 rt_sigreturn(0xe)                       = 0
 read(0, "", 1)                          = 0
 .CE
-Arguments are printed in symbolic form with a passion.
+Arguments are printed in symbolic form with passion.
 This example shows the shell performing ">>xyzzy" output redirection:
 .CW
 open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
 .CE
-Here the third argument of open is decoded by breaking down the
+Here, the third argument of open is decoded by breaking down the
 flag argument into its three bitwise-OR constituents and printing the
-mode value in octal by tradition.  Where traditional or native
+mode value in octal by tradition.  Where the traditional or native
 usage differs from ANSI or POSIX, the latter forms are preferred.
 In some cases,
 .B strace
-output has proven to be more readable than the source.
+output is proven to be more readable than the source.
 .LP
 Structure pointers are dereferenced and the members are displayed
-as appropriate.  In all cases arguments are formatted in the most C-like
+as appropriate.  In most cases, arguments are formatted in the most C-like
 fashion possible.
 For example, the essence of the command "ls \-l /dev/null" is captured as:
 .CW
 lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
 .CE
 Notice how the 'struct stat' argument is dereferenced and how each member is
-displayed symbolically.  In particular, observe how the st_mode member
-is carefully decoded into a bitwise-OR of symbolic and numeric values.
-Also notice in this example that the first argument to lstat is an input
-to the system call and the second argument is an output.  Since output
-arguments are not modified if the system call fails, arguments may not
-always be dereferenced.  For example, retrying the "ls \-l" example
+displayed symbolically.  In particular, observe how the
+.B st_mode
+member is carefully decoded into a bitwise-OR of symbolic and numeric values.
+Also notice in this example that the first argument to
+.B lstat
+is an input to the system call and the second argument is an output.
+Since output arguments are not modified if the system call fails, arguments may
+not always be dereferenced.  For example, retrying the "ls \-l" example
 with a non-existent file produces the following line:
 .CW
 lstat("/foo/bar", 0xb004) = \-1 ENOENT (No such file or directory)
 .CE
 In this case the porch light is on but nobody is home.
 .LP
+Syscalls unknown to
+.B strace
+are printed raw, with the unknown system call number printed in hexadecimal form
+and prefixed with "syscall_":
+.CW
+syscall_0xbad(0xfedcba9876543210, 0xfedcba9876543211, 0xfedcba9876543212,
+0xfedcba9876543213, 0xfedcba9876543214, 0xfedcba9876543215) = -1 (errno 38)
+.CE
+.LP
 Character pointers are dereferenced and printed as C strings.
 Non-printing characters in strings are normally represented by
 ordinary C escape codes.
@@ -219,19 +230,20 @@
 getgroups(32, [100, 0]) = 2
 .CE
 On the other hand, bit-sets are also shown using square brackets
-but set elements are separated only by a space.  Here is the shell
+but set elements are separated only by a space.  Here is the shell,
 preparing to execute an external command:
 .CW
 sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0
 .CE
-Here the second argument is a bit-set of two signals, SIGCHLD and SIGTTOU.
-In some cases the bit-set is so full that printing out the unset
+Here, the second argument is a bit-set of two signals,
+.BR SIGCHLD " and " SIGTTOU .
+In some cases, the bit-set is so full that printing out the unset
 elements is more valuable.  In that case, the bit-set is prefixed by
 a tilde like this:
 .CW
 sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0
 .CE
-Here the second argument represents the full set of all signals.
+Here, the second argument represents the full set of all signals.
 .SH OPTIONS
 .SS Output format
 .TP 12
@@ -251,15 +263,17 @@
 Write the trace output to the file
 .I filename
 rather than to stderr.
-Use
-.I filename.pid
-if
+.IR filename . pid
+form is used if
 .B \-ff
-is used.
-If the argument begins with '|' or with '!' then the rest of the
+option is supplied.
+If the argument begins with '|' or '!', the rest of the
 argument is treated as a command and all output is piped to it.
 This is convenient for piping the debugging output to a program
 without affecting the redirections of executed programs.
+The latter is not compatible with
+.B \-ff
+option currently.
 .TP
 .B \-q
 Suppress messages about attaching, detaching etc.  This happens
@@ -280,7 +294,7 @@
 full.
 .TP
 .B \-t
-Prefix each line of the trace with the time of day.
+Prefix each line of the trace with the wall clock time.
 .TP
 .B \-tt
 If given twice, the time printed will include the microseconds.
@@ -309,14 +323,12 @@
 .TP 12
 .B \-c
 Count time, calls, and errors for each system call and report a summary on
-program exit.  On Linux, this attempts to show system time (CPU time spent
-running in the kernel) independent of wall clock time.  If
+program exit.  This attempts to show system time (CPU time spent running
+in the kernel) independent of wall clock time.  If
 .B \-c
 is used with
-.B \-f
-or
-.B \-F
-, only aggregate totals for all traced processes are kept.
+.BR \-f ,
+only aggregate totals for all traced processes are kept.
 .TP
 .B \-C
 Like
@@ -497,6 +509,19 @@
 .BR "\-e\ trace" = /statv?fs|fsstat|ustat
 regular expression.
 .TP
+.BR "\-e\ trace" = %pure
+Trace syscalls that always succeed and have no arguments.
+Currently, this list includes
+.BR arc_gettls "(2), " getdtablesize "(2), " getegid "(2), " getegid32 "(2),"
+.BR geteuid "(2), " geteuid32 "(2), " getgid "(2), " getgid32 "(2),"
+.BR getpagesize "(2), " getpgrp "(2), " getpid "(2), " getppid "(2),"
+.BR get_thread_area (2)
+(on architectures other than x86),
+.BR gettid "(2), " get_tls "(2), " getuid "(2), " getuid32 "(2),"
+.BR getxgid "(2), " getxpid "(2), " getxuid "(2), " kern_features "(2), and"
+.BR metag_get_tls "(2)"
+syscalls.
+.TP
 \fB\-e\ abbrev\fR=\,\fIset\fR
 Abbreviate the output from printing each member of large structures.
 The default is
@@ -522,10 +547,12 @@
 Trace only the specified subset of signals.  The default is
 .BR signal = all .
 For example,
-.B signal "=!" SIGIO
+.BR signal "=!" SIGIO
 (or
 .BR signal "=!" io )
-causes SIGIO signals not to be traced.
+causes
+.B SIGIO
+signals not to be traced.
 .TP
 \fB\-e\ read\fR=\,\fIset\fR
 Perform a full hexadecimal and ASCII dump of all the data read from
@@ -730,6 +757,10 @@
 This is incompatible with
 .BR \-c ,
 since no per-process counts are kept.
+
+One might want to consider using
+.BR strace-log-merge (1)
+to obtain a combined strace log view.
 .TP
 .BI "\-I " interruptible
 When strace can be interrupted by signals (such as pressing ^C).
@@ -787,8 +818,15 @@
 itself on the standard error.
 .TP
 .B \-F
-This option is now obsolete and it has the same functionality as
-.BR \-f .
+This option is deprecated.  It is retained for backward compatibility only
+and may be removed in future releases.
+Usage of multiple instances of
+.B \-F
+option is still equivalent to a single
+.BR \-f ,
+and it is ignored at all if used along with one or more instances of
+.B \-f
+option.
 .TP
 .B \-h
 Print the help summary.
@@ -846,9 +884,69 @@
 .B trace
 group are trusted users.
 If you do use this feature, please remember to install
-a non-setuid version of
+a regular non-setuid version of
 .B strace
-for ordinary lusers to use.
+for ordinary users to use.
+.SH "MULTIPLE PERSONALITY SUPPORT"
+On some architectures,
+.B strace
+supports decoding of syscalls for processes that use different ABI rather than
+the one
+.B strace
+uses.
+Specifically, in addition to decoding native ABI,
+.B strace
+can decode the following ABIs on the following architectures:
+.TS H
+allbox;
+lb lb
+l l.
+Architecture	ABIs supported
+x86_64	i386, x32 (when built as an x86_64 application); i386 (when built as an x32 application)
+AArch64	ARM 32-bit EABI
+PowerPC 64-bit	PowerPC 32-bit
+RISC-V 64-bit	RISC-V 32-bit
+s390x	s390
+SPARC 64-bit	SPARC 32-bit
+TILE 64-bit	TILE 32-bit
+.TE
+.PP
+This support is optional and relies on ability to generate and parse structure
+definitions during the build time.
+Please refer to the output of the
+.B strace \-V
+command in order to figure out what support is available in your strace build
+("non-native" refers to an ABI that differs from the ABI strace has):
+.TP 15
+.B m32-mpers
+.B strace
+can trace and properly decode non-native 32-bit binaries.
+.TP
+.B no-m32-mpers
+.B strace
+can trace, but cannot properly decode non-native 32-bit binaries.
+.TP
+.B mx32-mpers
+.B strace
+can trace and properly decode non-native 32-on-64-bit binaries.
+.TP
+.B no-mx32-mpers
+.B strace
+can trace, but cannot properly decode non-native 32-on-64-bit binaries.
+.PP
+If the output contains neither
+.B m32-mpers
+nor
+.BR no-m32-mpers ,
+then decoding of non-native 32-bit binaries is not implemented at all
+or not applicable.
+.PP
+Likewise, if the output contains neither
+.B mx32-mpers
+nor
+.BR no-mx32-mpers ,
+then decoding of non-native 32-on-64-bit binaries is not implemented at all
+or not applicable.
 .SH NOTES
 It is a pity that so much tracing clutter is produced by systems
 employing shared libraries.
@@ -867,7 +965,7 @@
 argument, and the
 .BR setrlimit (2)
 library function uses
-.BR prlimit (2)
+.BR prlimit64 (2)
 system call on modern (2.6.38+) kernels.  These
 discrepancies are normal but idiosyncratic characteristics of the
 system call interface and are accounted for by C library wrapper
@@ -912,7 +1010,9 @@
 The original
 .B strace
 was written by Paul Kranenburg
-for SunOS and was inspired by its trace utility.
+for SunOS and was inspired by its
+.B trace
+utility.
 The SunOS version of
 .B strace
 was ported to Linux and enhanced
@@ -938,6 +1038,45 @@
 .B strace
 to Irix
 and tired of writing about himself in the third person.
+.PP
+Beginning with 1996,
+.B strace
+was maintained by Wichert Akkerman.
+During his tenure,
+.B strace
+development migrated to CVS; ports to FreeBSD and many architectures on Linux
+(including ARM, IA-64, MIPS, PA-RISC, PowerPC, s390, SPARC) were introduced.
+In 2002, the burden of
+.B strace
+maintainership was transferred to Ronald McGrath.
+Since then,
+.B strace
+gained support for several new Linux architectures (AMD64, s390x, SuperH),
+bi-architecture support for some of them, and received numerous additions and
+improvements in syscalls decoders on Linux;
+.B strace
+development migrated to
+.B git
+during that period.
+Since 2009,
+.B strace
+is actively maintained by Dmitry Levin.
+.B strace
+gained support for AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenSISC 1000,
+RISC-V, Tile/TileGx, Xtensa architectures since that time.
+In 2012, unmaintained and apparently broken support for non-Linux operating
+systems was removed.
+Also, in 2012
+.B strace
+gained support for path tracing and file descriptor path decoding.
+In 2014, support for stack traces printing was added.
+In 2016, syscall fault injection was implemented.
+.PP
+For the additional information, please refer to the
+.B NEWS
+file and
+.B strace
+repository commit log.
 .SH REPORTING BUGS
 Problems with
 .B strace
@@ -945,7 +1084,10 @@
 .B strace
 mailing list at <strace\-devel@lists.sourceforge.net>.
 .SH "SEE ALSO"
+.BR strace-log-merge (1),
 .BR ltrace (1),
+.BR perf-trace (1),
+.BR trace-cmd (1),
 .BR time (1),
 .BR ptrace (2),
 .BR proc (5)
diff --git a/strace.c b/strace.c
index 6ed86a6..10579f6 100644
--- a/strace.c
+++ b/strace.c
@@ -3,7 +3,7 @@
  * 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) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -31,12 +31,16 @@
 
 #include "defs.h"
 #include <stdarg.h>
-#include <sys/param.h>
+#include <limits.h>
 #include <fcntl.h>
+#include "ptrace.h"
 #include <signal.h>
 #include <sys/resource.h>
 #include <sys/wait.h>
 #include <sys/stat.h>
+#ifdef HAVE_PATHS_H
+# include <paths.h>
+#endif
 #include <pwd.h>
 #include <grp.h>
 #include <dirent.h>
@@ -46,10 +50,12 @@
 #endif
 #include <asm/unistd.h>
 
+#include "largefile_wrappers.h"
 #include "number_set.h"
 #include "scno.h"
-#include "ptrace.h"
 #include "printsiginfo.h"
+#include "trace_event.h"
+#include "xstring.h"
 
 /* In some libc, these aren't declared. Do it ourself: */
 extern char **environ;
@@ -151,7 +157,8 @@
 static struct tcb *current_tcp;
 
 static struct tcb **tcbtab;
-static unsigned int nprocs, tcbtabsize;
+static unsigned int nprocs;
+static size_t tcbtabsize;
 
 #ifndef HAVE_PROGRAM_INVOCATION_NAME
 char *program_invocation_name;
@@ -183,7 +190,7 @@
 	static char buf[sizeof("Unknown error %d") + sizeof(int)*3];
 
 	if (err_no < 1 || err_no >= sys_nerr) {
-		sprintf(buf, "Unknown error %d", err_no);
+		xsprintf(buf, "Unknown error %d", err_no);
 		return buf;
 	}
 	return sys_errlist[err_no];
@@ -198,6 +205,23 @@
 #ifdef USE_LIBUNWIND
 		" stack-unwind"
 #endif /* USE_LIBUNWIND */
+#ifdef USE_DEMANGLE
+		" stack-demangle"
+#endif /* USE_DEMANGLE */
+#if SUPPORTED_PERSONALITIES > 1
+# if defined HAVE_M32_MPERS
+		" m32-mpers"
+# else
+		" no-m32-mpers"
+# endif
+#endif /* SUPPORTED_PERSONALITIES > 1 */
+#if SUPPORTED_PERSONALITIES > 2
+# if defined HAVE_MX32_MPERS
+		" mx32-mpers"
+# else
+		" no-mx32-mpers"
+# endif
+#endif /* SUPPORTED_PERSONALITIES > 2 */
 		"";
 
 	printf("%s -- version %s\n"
@@ -293,8 +317,10 @@
 	if (strace_tracer_pid == getpid()) {
 		cflag = 0;
 		cleanup();
+		exit(1);
 	}
-	exit(1);
+
+	_exit(1);
 }
 
 static void
@@ -422,28 +448,6 @@
 	}
 }
 
-#ifdef _LARGEFILE64_SOURCE
-# ifdef HAVE_FOPEN64
-#  define fopen_for_output fopen64
-# else
-#  define fopen_for_output fopen
-# endif
-# define struct_stat struct stat64
-# define stat_file stat64
-# define struct_dirent struct dirent64
-# define read_dir readdir64
-# define struct_rlimit struct rlimit64
-# define set_rlimit setrlimit64
-#else
-# define fopen_for_output fopen
-# define struct_stat struct stat
-# define stat_file stat
-# define struct_dirent struct dirent
-# define read_dir readdir
-# define struct_rlimit struct rlimit
-# define set_rlimit setrlimit
-#endif
-
 static FILE *
 strace_fopen(const char *path)
 {
@@ -508,6 +512,19 @@
 	return fp;
 }
 
+static void
+outf_perror(const struct tcb * const tcp)
+{
+	if (tcp->outf == stderr)
+		return;
+
+	/* This is ugly, but we don't store separate file names */
+	if (followfork >= 2)
+		perror_msg("%s.%u", outfname, tcp->pid);
+	else
+		perror_msg("%s", outfname);
+}
+
 ATTRIBUTE_FORMAT((printf, 1, 0))
 static void
 tvprintf(const char *const fmt, va_list args)
@@ -516,8 +533,7 @@
 		int n = vfprintf(current_tcp->outf, fmt, args);
 		if (n < 0) {
 			/* very unlikely due to vfprintf buffering */
-			if (current_tcp->outf != stderr)
-				perror_msg("%s", outfname);
+			outf_perror(current_tcp);
 		} else
 			current_tcp->curcol += n;
 	}
@@ -546,8 +562,7 @@
 			return;
 		}
 		/* very unlikely due to fputs_unlocked buffering */
-		if (current_tcp->outf != stderr)
-			perror_msg("%s", outfname);
+		outf_perror(current_tcp);
 	}
 }
 
@@ -575,8 +590,8 @@
 static void
 flush_tcp_output(const struct tcb *const tcp)
 {
-	if (fflush(tcp->outf) && tcp->outf != stderr)
-		perror_msg("%s", outfname);
+	if (fflush(tcp->outf))
+		outf_perror(tcp);
 }
 
 void
@@ -593,6 +608,16 @@
 }
 
 void
+set_current_tcp(const struct tcb *tcp)
+{
+	current_tcp = (struct tcb *) tcp;
+
+	/* Sync current_personality and stuff */
+	if (current_tcp)
+		set_personality(current_tcp->currpers);
+}
+
+void
 printleader(struct tcb *tcp)
 {
 	/* If -ff, "previous tcb we printed" is always the same as current,
@@ -602,7 +627,7 @@
 		printing_tcp = tcp;
 
 	if (printing_tcp) {
-		current_tcp = printing_tcp;
+		set_current_tcp(printing_tcp);
 		if (printing_tcp->curcol != 0 && (followfork < 2 || printing_tcp == tcp)) {
 			/*
 			 * case 1: we have a shared log (i.e. not -ff), and last line
@@ -616,7 +641,7 @@
 	}
 
 	printing_tcp = tcp;
-	current_tcp = tcp;
+	set_current_tcp(tcp);
 	current_tcp->curcol = 0;
 
 	if (print_pid_pfx)
@@ -669,8 +694,8 @@
 {
 	tcp->outf = shared_log; /* if not -ff mode, the same file is for all */
 	if (followfork >= 2) {
-		char name[520 + sizeof(int) * 3];
-		sprintf(name, "%.512s.%u", outfname, tcp->pid);
+		char name[PATH_MAX];
+		xsprintf(name, "%s.%u", outfname, tcp->pid);
 		tcp->outf = strace_fopen(name);
 	}
 }
@@ -683,20 +708,18 @@
 	   callers have pointers and it would be a pain.
 	   So tcbtab is a table of pointers.  Since we never
 	   free the TCBs, we allocate a single chunk of many.  */
-	unsigned int new_tcbtabsize, alloc_tcbtabsize;
+	size_t old_tcbtabsize;
 	struct tcb *newtcbs;
+	struct tcb **tcb_ptr;
 
-	if (tcbtabsize) {
-		alloc_tcbtabsize = tcbtabsize;
-		new_tcbtabsize = tcbtabsize * 2;
-	} else {
-		new_tcbtabsize = alloc_tcbtabsize = 1;
-	}
+	old_tcbtabsize = tcbtabsize;
 
-	newtcbs = xcalloc(alloc_tcbtabsize, sizeof(newtcbs[0]));
-	tcbtab = xreallocarray(tcbtab, new_tcbtabsize, sizeof(tcbtab[0]));
-	while (tcbtabsize < new_tcbtabsize)
-		tcbtab[tcbtabsize++] = newtcbs++;
+	tcbtab = xgrowarray(tcbtab, &tcbtabsize, sizeof(tcbtab[0]));
+	newtcbs = xcalloc(tcbtabsize - old_tcbtabsize, sizeof(newtcbs[0]));
+
+	for (tcb_ptr = tcbtab + old_tcbtabsize;
+	    tcb_ptr < tcbtab + tcbtabsize; tcb_ptr++, newtcbs++)
+		*tcb_ptr = newtcbs;
 }
 
 static struct tcb *
@@ -723,9 +746,8 @@
 #endif
 
 			nprocs++;
-			if (debug_flag)
-				error_msg("new tcb for pid %d, active tcbs:%d",
-					  tcp->pid, nprocs);
+			debug_msg("new tcb for pid %d, active tcbs:%d",
+				  tcp->pid, nprocs);
 			return tcp;
 		}
 	}
@@ -782,9 +804,7 @@
 #endif
 
 	nprocs--;
-	if (debug_flag)
-		error_msg("dropped tcb for pid %d, %d remain",
-			  tcp->pid, nprocs);
+	debug_msg("dropped tcb for pid %d, %d remain", tcp->pid, nprocs);
 
 	if (tcp->outf) {
 		if (followfork >= 2) {
@@ -799,7 +819,7 @@
 	}
 
 	if (current_tcp == tcp)
-		current_tcp = NULL;
+		set_current_tcp(NULL);
 	if (printing_tcp == tcp)
 		printing_tcp = NULL;
 
@@ -840,14 +860,14 @@
 	}
 	if (errno != ESRCH) {
 		/* Shouldn't happen. */
-		perror_msg("detach: ptrace(PTRACE_DETACH,%u)", tcp->pid);
+		perror_func_msg("ptrace(PTRACE_DETACH,%u)", tcp->pid);
 		goto drop;
 	}
 	/* ESRCH: process is either not stopped or doesn't exist. */
 	if (my_tkill(tcp->pid, 0) < 0) {
 		if (errno != ESRCH)
 			/* Shouldn't happen. */
-			perror_msg("detach: tkill(%u,0)", tcp->pid);
+			perror_func_msg("tkill(%u,0)", tcp->pid);
 		/* else: process doesn't exist. */
 		goto drop;
 	}
@@ -863,13 +883,13 @@
 		if (!error)
 			goto wait_loop;
 		if (errno != ESRCH)
-			perror_msg("detach: ptrace(PTRACE_INTERRUPT,%u)", tcp->pid);
+			perror_func_msg("ptrace(PTRACE_INTERRUPT,%u)", tcp->pid);
 	} else {
 		error = my_tkill(tcp->pid, SIGSTOP);
 		if (!error)
 			goto wait_loop;
 		if (errno != ESRCH)
-			perror_msg("detach: tkill(%u,SIGSTOP)", tcp->pid);
+			perror_func_msg("tkill(%u,SIGSTOP)", tcp->pid);
 	}
 	/* Either process doesn't exist, or some weird error. */
 	goto drop;
@@ -890,7 +910,7 @@
 			 * ^^^  WRONG! We expect this PID to exist,
 			 * and want to emit a message otherwise:
 			 */
-			perror_msg("detach: waitpid(%u)", tcp->pid);
+			perror_func_msg("waitpid(%u)", tcp->pid);
 			break;
 		}
 		if (!WIFSTOPPED(status)) {
@@ -907,9 +927,8 @@
 			break;
 		}
 		sig = WSTOPSIG(status);
-		if (debug_flag)
-			error_msg("detach wait: event:%d sig:%d",
-				  (unsigned)status >> 16, sig);
+		debug_msg("detach wait: event:%d sig:%d",
+			  (unsigned) status >> 16, sig);
 		if (use_seize) {
 			unsigned event = (unsigned)status >> 16;
 			if (event == PTRACE_EVENT_STOP /*&& sig == SIGTRAP*/) {
@@ -1005,17 +1024,18 @@
 		return;
 	}
 
-	tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
+	tcp->flags |= TCB_ATTACHED | TCB_GRABBED | TCB_STARTUP |
+		      post_attach_sigstop;
 	newoutf(tcp);
-	if (debug_flag)
-		error_msg("attach to pid %d (main) succeeded", tcp->pid);
+	debug_msg("attach to pid %d (main) succeeded", tcp->pid);
 
-	char procdir[sizeof("/proc/%d/task") + sizeof(int) * 3];
+	static const char task_path[] = "/proc/%d/task";
+	char procdir[sizeof(task_path) + 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 &&
+	    xsprintf(procdir, task_path, tcp->pid) > 0 &&
 	    (dir = opendir(procdir)) != NULL) {
 		struct_dirent *de;
 
@@ -1030,17 +1050,15 @@
 			++ntid;
 			if (ptrace_attach_or_seize(tid) < 0) {
 				++nerr;
-				if (debug_flag)
-					perror_msg("attach: ptrace(%s, %d)",
-						   ptrace_attach_cmd, tid);
+				debug_perror_msg("attach: ptrace(%s, %d)",
+						 ptrace_attach_cmd, tid);
 				continue;
 			}
-			if (debug_flag)
-				error_msg("attach to pid %d succeeded", tid);
+			debug_msg("attach to pid %d succeeded", tid);
 
 			struct tcb *tid_tcp = alloctcb(tid);
-			tid_tcp->flags |= TCB_ATTACHED | TCB_STARTUP |
-					  post_attach_sigstop;
+			tid_tcp->flags |= TCB_ATTACHED | TCB_GRABBED |
+					  TCB_STARTUP | post_attach_sigstop;
 			newoutf(tid_tcp);
 		}
 
@@ -1076,9 +1094,9 @@
 
 	if (daemonized_tracer) {
 		pid_t pid = fork();
-		if (pid < 0) {
-			perror_msg_and_die("fork");
-		}
+		if (pid < 0)
+			perror_func_msg_and_die("fork");
+
 		if (pid) { /* parent */
 			/*
 			 * Wait for grandchild to attach to straced process
@@ -1217,7 +1235,7 @@
 	int fds[2];
 
 	if (pipe(fds))
-		perror_msg_and_die("pipe");
+		perror_func_msg_and_die("pipe");
 	close(fds[1]);
 	set_cloexec_flag(fds[0]);
 	return fds[0];
@@ -1355,9 +1373,9 @@
 #endif
 
 	pid = fork();
-	if (pid < 0) {
-		perror_msg_and_die("fork");
-	}
+	if (pid < 0)
+		perror_func_msg_and_die("fork");
+
 	if ((pid != 0 && daemonized_tracer)
 	 || (pid == 0 && !daemonized_tracer)
 	) {
@@ -1465,7 +1483,7 @@
 
 	pid = fork();
 	if (pid < 0)
-		perror_msg_and_die("fork");
+		perror_func_msg_and_die("fork");
 
 	if (pid == 0) {
 		pause();
@@ -1478,8 +1496,8 @@
 	 */
 	if (ptrace(PTRACE_SEIZE, pid, 0, 0) == 0) {
 		post_attach_sigstop = 0; /* this sets use_seize to 1 */
-	} else if (debug_flag) {
-		error_msg("PTRACE_SEIZE doesn't work");
+	} else {
+		debug_msg("PTRACE_SEIZE doesn't work");
 	}
 
 	kill(pid, SIGKILL);
@@ -1492,14 +1510,13 @@
 		if (tracee_pid <= 0) {
 			if (errno == EINTR)
 				continue;
-			perror_msg_and_die("%s: unexpected wait result %d",
-					 __func__, tracee_pid);
+			perror_func_msg_and_die("unexpected wait result %d",
+						tracee_pid);
 		}
-		if (WIFSIGNALED(status)) {
+		if (WIFSIGNALED(status))
 			return;
-		}
-		error_msg_and_die("%s: unexpected wait status %#x",
-				  __func__, status);
+
+		error_func_msg_and_die("unexpected wait status %#x", status);
 	}
 }
 #else /* !USE_SEIZE */
@@ -1540,7 +1557,7 @@
 }
 
 static void
-set_sigaction(int signo, void (*sighandler)(int), struct sigaction *oldact)
+set_sighandler(int signo, void (*sighandler)(int), struct sigaction *oldact)
 {
 	/* if signal handler is a function, add the signal to blocked_set */
 	if (sighandler != SIG_IGN && sighandler != SIG_DFL)
@@ -1567,7 +1584,7 @@
 	if (!program_invocation_name || !*program_invocation_name) {
 		static char name[] = "strace";
 		program_invocation_name =
-			(argv[0] && *argv[0]) ? argv[0] : name;
+			(argc > 0 && argv[0] && *argv[0]) ? argv[0] : name;
 	}
 
 	strace_tracer_pid = getpid();
@@ -1584,14 +1601,17 @@
 # error Bug in DEFAULT_QUAL_FLAGS
 #endif
 	qualify("signal=all");
-	while ((c = getopt(argc, argv,
-		"+b:cCdfFhiqrtTvVwxyz"
+	while ((c = getopt(argc, argv, "+"
 #ifdef USE_LIBUNWIND
-		"k"
+	    "k"
 #endif
-		"D"
-		"a:e:o:O:p:s:S:u:E:P:I:")) != EOF) {
+	    "a:b:cCdDe:E:fFhiI:o:O:p:P:qrs:S:tTu:vVwxyz")) != EOF) {
 		switch (c) {
+		case 'a':
+			acolumn = string_to_uint(optarg);
+			if (acolumn < 0)
+				error_opt_arg(c, optarg);
+			break;
 		case 'b':
 			if (strcmp(optarg, "execve") != 0)
 				error_msg_and_die("Syscall '%s' for -b isn't supported",
@@ -1616,57 +1636,35 @@
 		case 'D':
 			daemonized_tracer = 1;
 			break;
-		case 'F':
-			optF = 1;
+		case 'e':
+			qualify(optarg);
+			break;
+		case 'E':
+			if (putenv(optarg) < 0)
+				perror_msg_and_die("putenv");
 			break;
 		case 'f':
 			followfork++;
 			break;
+		case 'F':
+			optF = 1;
+			break;
 		case 'h':
 			usage();
 			break;
 		case 'i':
 			iflag = 1;
 			break;
-		case 'q':
-			qflag++;
-			break;
-		case 'r':
-			rflag = 1;
-			break;
-		case 't':
-			tflag++;
-			break;
-		case 'T':
-			Tflag = 1;
-			break;
-		case 'w':
-			count_wallclock = 1;
-			break;
-		case 'x':
-			xflag++;
-			break;
-		case 'y':
-			show_fd_path++;
-			break;
-		case 'v':
-			qualify("abbrev=none");
-			break;
-		case 'V':
-			print_version();
-			exit(0);
-			break;
-		case 'z':
-			not_failing_only = 1;
-			break;
-		case 'a':
-			acolumn = string_to_uint(optarg);
-			if (acolumn < 0)
+		case 'I':
+			opt_intr = string_to_uint_upto(optarg, NUM_INTR_OPTS - 1);
+			if (opt_intr <= 0)
 				error_opt_arg(c, optarg);
 			break;
-		case 'e':
-			qualify(optarg);
+#ifdef USE_LIBUNWIND
+		case 'k':
+			stack_trace_enabled = true;
 			break;
+#endif
 		case 'o':
 			outfname = optarg;
 			break;
@@ -1682,6 +1680,12 @@
 		case 'P':
 			pathtrace_select(optarg);
 			break;
+		case 'q':
+			qflag++;
+			break;
+		case 'r':
+			rflag = 1;
+			break;
 		case 's':
 			i = string_to_uint(optarg);
 			if (i < 0 || (unsigned int) i > -1U / 4)
@@ -1691,22 +1695,33 @@
 		case 'S':
 			set_sortby(optarg);
 			break;
+		case 't':
+			tflag++;
+			break;
+		case 'T':
+			Tflag = 1;
+			break;
 		case 'u':
 			username = optarg;
 			break;
-#ifdef USE_LIBUNWIND
-		case 'k':
-			stack_trace_enabled = true;
+		case 'v':
+			qualify("abbrev=none");
 			break;
-#endif
-		case 'E':
-			if (putenv(optarg) < 0)
-				perror_msg_and_die("putenv");
+		case 'V':
+			print_version();
+			exit(0);
 			break;
-		case 'I':
-			opt_intr = string_to_uint_upto(optarg, NUM_INTR_OPTS - 1);
-			if (opt_intr <= 0)
-				error_opt_arg(c, optarg);
+		case 'w':
+			count_wallclock = 1;
+			break;
+		case 'x':
+			xflag++;
+			break;
+		case 'y':
+			show_fd_path++;
+			break;
+		case 'z':
+			not_failing_only = 1;
 			break;
 		default:
 			error_msg_and_help(NULL);
@@ -1717,16 +1732,23 @@
 	argv += optind;
 	argc -= optind;
 
-	if (argc < 0 || (!argv[0] && !nprocs)) {
+	if (argc < 0 || (!nprocs && !argc)) {
 		error_msg_and_help("must have PROG [ARGS] or -p PID");
 	}
 
-	if (!argv[0] && daemonized_tracer) {
+	if (!argc && daemonized_tracer) {
 		error_msg_and_help("PROG [ARGS] must be specified with -D");
 	}
 
-	if (!followfork)
-		followfork = optF;
+	if (optF) {
+		if (followfork) {
+			error_msg("deprecated option -F ignored");
+		} else {
+			error_msg("option -F is deprecated, "
+				  "please use -f instead");
+			followfork = optF;
+		}
+	}
 
 	if (followfork >= 2 && cflag) {
 		error_msg_and_help("(-c or -C) and -ff are mutually exclusive");
@@ -1766,7 +1788,7 @@
 	sigprocmask(SIG_SETMASK, NULL, &start_set);
 	memcpy(&blocked_set, &start_set, sizeof(blocked_set));
 
-	set_sigaction(SIGCHLD, SIG_DFL, &params_for_tracee.child_sa);
+	set_sighandler(SIGCHLD, SIG_DFL, &params_for_tracee.child_sa);
 
 #ifdef USE_LIBUNWIND
 	if (stack_trace_enabled) {
@@ -1801,8 +1823,7 @@
 		ptrace_setoptions |= PTRACE_O_TRACECLONE |
 				     PTRACE_O_TRACEFORK |
 				     PTRACE_O_TRACEVFORK;
-	if (debug_flag)
-		error_msg("ptrace_setoptions = %#x", ptrace_setoptions);
+	debug_msg("ptrace_setoptions = %#x", ptrace_setoptions);
 	test_ptrace_seize();
 
 	/*
@@ -1827,10 +1848,15 @@
 			 * when using popen, so prohibit it.
 			 */
 			if (followfork >= 2)
-				error_msg_and_help("piping the output and -ff are mutually exclusive");
+				error_msg_and_help("piping the output and -ff "
+						   "are mutually exclusive");
 			shared_log = strace_popen(outfname + 1);
-		} else if (followfork < 2)
+		} else if (followfork < 2) {
 			shared_log = strace_fopen(outfname);
+		} else if (strlen(outfname) >= PATH_MAX - sizeof(int) * 3) {
+			errno = ENAMETOOLONG;
+			perror_msg_and_die("%s", outfname);
+		}
 	} else {
 		/* -ff without -o FILE is the same as single -f */
 		if (followfork >= 2)
@@ -1849,7 +1875,7 @@
 	 * no		1	1	INTR_WHILE_WAIT
 	 */
 
-	if (outfname && argv[0]) {
+	if (outfname && argc) {
 		if (!opt_intr)
 			opt_intr = INTR_NEVER;
 		if (!qflag)
@@ -1864,26 +1890,26 @@
 	 * Also we do not need to be protected by them as during interruption
 	 * in the startup_child() mode we kill the spawned process anyway.
 	 */
-	if (argv[0]) {
+	if (argc) {
 		startup_child(argv);
 	}
 
-	set_sigaction(SIGTTOU, SIG_IGN, NULL);
-	set_sigaction(SIGTTIN, SIG_IGN, NULL);
+	set_sighandler(SIGTTOU, SIG_IGN, NULL);
+	set_sighandler(SIGTTIN, SIG_IGN, NULL);
 	if (opt_intr != INTR_ANYWHERE) {
 		if (opt_intr == INTR_BLOCK_TSTP_TOO)
-			set_sigaction(SIGTSTP, SIG_IGN, NULL);
+			set_sighandler(SIGTSTP, SIG_IGN, NULL);
 		/*
 		 * In interactive mode (if no -o OUTFILE, or -p PID is used),
 		 * fatal signals are blocked while syscall stop is processed,
 		 * and acted on in between, when waiting for new syscall stops.
 		 * In non-interactive mode, signals are ignored.
 		 */
-		set_sigaction(SIGHUP, interactive ? interrupt : SIG_IGN, NULL);
-		set_sigaction(SIGINT, interactive ? interrupt : SIG_IGN, NULL);
-		set_sigaction(SIGQUIT, interactive ? interrupt : SIG_IGN, NULL);
-		set_sigaction(SIGPIPE, interactive ? interrupt : SIG_IGN, NULL);
-		set_sigaction(SIGTERM, interactive ? interrupt : SIG_IGN, NULL);
+		set_sighandler(SIGHUP, interactive ? interrupt : SIG_IGN, NULL);
+		set_sighandler(SIGINT, interactive ? interrupt : SIG_IGN, NULL);
+		set_sighandler(SIGQUIT, interactive ? interrupt : SIG_IGN, NULL);
+		set_sighandler(SIGPIPE, interactive ? interrupt : SIG_IGN, NULL);
+		set_sighandler(SIGTERM, interactive ? interrupt : SIG_IGN, NULL);
 	}
 
 	if (nprocs != 0 || daemonized_tracer)
@@ -1930,8 +1956,7 @@
 		tcp = tcbtab[i];
 		if (!tcp->pid)
 			continue;
-		if (debug_flag)
-			error_msg("cleanup: looking at pid %u", tcp->pid);
+		debug_func_msg("looking at pid %u", tcp->pid);
 		if (tcp->pid == strace_child) {
 			kill(tcp->pid, SIGCONT);
 			kill(tcp->pid, fatal_sig);
@@ -1958,17 +1983,17 @@
 	strcpy(buf, "???");
 	if (WIFSIGNALED(status))
 #ifdef WCOREDUMP
-		sprintf(buf, "WIFSIGNALED,%ssig=%s",
+		xsprintf(buf, "WIFSIGNALED,%ssig=%s",
 				WCOREDUMP(status) ? "core," : "",
 				signame(WTERMSIG(status)));
 #else
-		sprintf(buf, "WIFSIGNALED,sig=%s",
+		xsprintf(buf, "WIFSIGNALED,sig=%s",
 				signame(WTERMSIG(status)));
 #endif
 	if (WIFEXITED(status))
-		sprintf(buf, "WIFEXITED,exitcode=%u", WEXITSTATUS(status));
+		xsprintf(buf, "WIFEXITED,exitcode=%u", WEXITSTATUS(status));
 	if (WIFSTOPPED(status))
-		sprintf(buf, "WIFSTOPPED,sig=%s", signame(WSTOPSIG(status)));
+		xsprintf(buf, "WIFSTOPPED,sig=%s", signame(WSTOPSIG(status)));
 	evbuf[0] = '\0';
 	if (event != 0) {
 		static const char *const event_names[] = {
@@ -1985,7 +2010,7 @@
 			e = event_names[event];
 		else if (event == PTRACE_EVENT_STOP)
 			e = "STOP";
-		sprintf(evbuf, ",EVENT_%s (%u)", e, event);
+		xsprintf(evbuf, ",EVENT_%s (%u)", e, event);
 	}
 	error_msg("[wait(0x%06x) = %u] %s%s", status, pid, buf, evbuf);
 }
@@ -2136,15 +2161,13 @@
 static void
 startup_tcb(struct tcb *tcp)
 {
-	if (debug_flag)
-		error_msg("pid %d has TCB_STARTUP, initializing it", tcp->pid);
+	debug_msg("pid %d has TCB_STARTUP, initializing it", tcp->pid);
 
 	tcp->flags &= ~TCB_STARTUP;
 
 	if (!use_seize) {
-		if (debug_flag)
-			error_msg("setting opts 0x%x on pid %d",
-				  ptrace_setoptions, tcp->pid);
+		debug_msg("setting opts 0x%x on pid %d",
+			  ptrace_setoptions, tcp->pid);
 		if (ptrace(PTRACE_SETOPTIONS, tcp->pid, NULL, ptrace_setoptions) < 0) {
 			if (errno != ESRCH) {
 				/* Should never happen, really */
@@ -2153,7 +2176,7 @@
 		}
 	}
 
-	if (get_scno(tcp) == 1)
+	if ((tcp->flags & TCB_GRABBED) && (get_scno(tcp) == 1))
 		tcp->s_prev_ent = tcp->s_ent;
 }
 
@@ -2167,11 +2190,11 @@
 
 	if (followfork < 2 && printing_tcp && printing_tcp != tcp
 	    && printing_tcp->curcol != 0) {
-		current_tcp = printing_tcp;
+		set_current_tcp(printing_tcp);
 		tprints(" <unfinished ...>\n");
 		flush_tcp_output(printing_tcp);
 		printing_tcp->curcol = 0;
-		current_tcp = tcp;
+		set_current_tcp(tcp);
 	}
 
 	if ((followfork < 2 && printing_tcp != tcp)
@@ -2188,70 +2211,14 @@
 		 */
 		tprints(" <unfinished ...>");
 	}
+
+	printing_tcp = tcp;
 	tprints(") ");
 	tabto();
 	tprints("= ?\n");
 	line_ended();
 }
 
-enum trace_event {
-	/* Break the main loop. */
-	TE_BREAK,
-
-	/* Call next_event() again. */
-	TE_NEXT,
-
-	/* Restart the tracee with signal 0 and call next_event() again. */
-	TE_RESTART,
-
-	/*
-	 * For all the events below, current_tcp is set to current tracee's
-	 * tcb.  All the suggested actions imply that you want to continue
-	 * tracing of the current tracee; alternatively, you can detach it.
-	 */
-
-	/*
-	 * Syscall entry or exit.
-	 * Restart the tracee with signal 0, or with an injected signal number.
-	 */
-	TE_SYSCALL_STOP,
-
-	/*
-	 * Tracee received signal with number WSTOPSIG(*pstatus); signal info
-	 * is written to *si.  Restart the tracee (with that signal number
-	 * if you want to deliver it).
-	 */
-	TE_SIGNAL_DELIVERY_STOP,
-
-	/*
-	 * Tracee was killed by a signal with number WTERMSIG(*pstatus).
-	 */
-	TE_SIGNALLED,
-
-	/*
-	 * Tracee was stopped by a signal with number WSTOPSIG(*pstatus).
-	 * Restart the tracee with that signal number.
-	 */
-	TE_GROUP_STOP,
-
-	/*
-	 * Tracee exited with status WEXITSTATUS(*pstatus).
-	 */
-	TE_EXITED,
-
-	/*
-	 * Tracee is going to perform execve().
-	 * Restart the tracee with signal 0.
-	 */
-	TE_STOP_BEFORE_EXECVE,
-
-	/*
-	 * Tracee is going to terminate.
-	 * Restart the tracee with signal 0.
-	 */
-	TE_STOP_BEFORE_EXIT,
-};
-
 static enum trace_event
 next_event(int *pstatus, siginfo_t *si)
 {
@@ -2325,10 +2292,10 @@
 			return TE_NEXT;
 	}
 
-	clear_regs();
+	clear_regs(tcp);
 
 	/* Set current output file */
-	current_tcp = tcp;
+	set_current_tcp(tcp);
 
 	if (cflag) {
 		tv_sub(&tcp->dtime, &ru.ru_stime, &tcp->stime);
@@ -2364,8 +2331,7 @@
 		 * just before the process takes a signal.
 		 */
 		if (sig == SIGSTOP && (tcp->flags & TCB_IGNORE_ONE_SIGSTOP)) {
-			if (debug_flag)
-				error_msg("ignored SIGSTOP on pid %d", tcp->pid);
+			debug_func_msg("ignored SIGSTOP on pid %d", tcp->pid);
 			tcp->flags &= ~TCB_IGNORE_ONE_SIGSTOP;
 			return TE_RESTART;
 		} else if (sig == syscall_trap_sig) {
@@ -2496,6 +2462,31 @@
 
 	case TE_STOP_BEFORE_EXECVE:
 		/*
+		 * Check that we are inside syscall now (next event after
+		 * PTRACE_EVENT_EXEC should be for syscall exiting).  If it is
+		 * not the case, we might have a situation when we attach to a
+		 * process and the first thing we see is a PTRACE_EVENT_EXEC
+		 * and all the following syscall state tracking is screwed up
+		 * otherwise.
+		 */
+		if (entering(current_tcp)) {
+			int ret;
+
+			error_msg("Stray PTRACE_EVENT_EXEC from pid %d"
+				  ", trying to recover...",
+				  current_tcp->pid);
+
+			current_tcp->flags |= TCB_RECOVERING;
+			ret = trace_syscall(current_tcp, &restart_sig);
+			current_tcp->flags &= ~TCB_RECOVERING;
+
+			if (ret < 0) {
+				/* The reason is described in TE_SYSCALL_STOP */
+				return true;
+			}
+		}
+
+		/*
 		 * Under Linux, execve changes pid to thread leader's pid,
 		 * and we see this changed pid on EVENT_EXEC and later,
 		 * execve sysexit. Leader "disappears" without exit
@@ -2511,7 +2502,8 @@
 		 * On 2.6 and earlier, it can return garbage.
 		 */
 		if (os_release >= KERNEL_VERSION(3, 0, 0))
-			current_tcp = maybe_switch_tcbs(current_tcp, current_tcp->pid);
+			set_current_tcp(maybe_switch_tcbs(current_tcp,
+							  current_tcp->pid));
 
 		if (detach_on_execve) {
 			if (current_tcp->flags & TCB_SKIP_DETACH_ON_FIRST_EXEC) {
diff --git a/strace.spec b/strace.spec
index 63958fb..548ce88 100644
--- a/strace.spec
+++ b/strace.spec
@@ -1,13 +1,16 @@
 Summary: Tracks and displays system calls associated with a running process
 Name: strace
-Version: 4.20
+Version: 4.21
 Release: 1%{?dist}
 License: BSD
 Group: Development/Debuggers
 URL: https://strace.io
 Source: https://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
+%if 0%{?fedora} >= 18 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
+BuildRequires: pkgconfig(bluez)
+%endif
 %if 0%{?fedora} >= 20 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1300
-%define buildrequires_libunwind_devel BuildRequires: libunwind-devel
+%define buildrequires_libunwind_devel BuildRequires: libunwind-devel binutils-devel
 %endif
 %ifarch x86_64
 # for experimental -k option
@@ -48,8 +51,8 @@
 %prep
 %setup -q
 echo -n %version-%release > .tarball-version
-echo -n 2017 > .year
-echo -n 2017-08-28 > .strace.1.in.date
+echo -n 2018 > .year
+echo -n 2018-02-11 > .strace.1.in.date
 
 %build
 echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
@@ -62,7 +65,7 @@
 printf 'kernel-headers %%s.%%s.%%s\n' $(($kver/65536)) $(($kver/256%%256)) $(($kver%%256))
 echo 'END OF BUILD ENVIRONMENT INFORMATION'
 
-%configure
+%configure --enable-mpers=check
 make %{?_smp_mflags}
 
 %install
@@ -83,6 +86,7 @@
 %endif
 
 %check
+%{buildroot}%{_bindir}/strace -V
 make %{?_smp_mflags} -k check VERBOSE=1
 echo 'BEGIN OF TEST SUITE INFORMATION'
 tail -n 99999 -- tests*/test-suite.log tests*/ksysent.log
@@ -102,8 +106,11 @@
 %endif
 
 %changelog
-* Mon Nov 13 2017 strace-devel@lists.sourceforge.net - 4.20-1
-- strace 4.20 snapshot.
+* Tue Feb 13 2018 strace-devel@lists.sourceforge.net - 4.21-1
+- strace 4.21 snapshot.
+
+* Mon Nov 13 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.20-1
+- v4.19 -> v4.20.
 
 * Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1
 - v4.18 -> v4.19.
diff --git a/strace.spec.in b/strace.spec.in
index 08dd2d3..a2a169f 100644
--- a/strace.spec.in
+++ b/strace.spec.in
@@ -6,8 +6,11 @@
 Group: Development/Debuggers
 URL: https://strace.io
 Source: https://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
+%if 0%{?fedora} >= 18 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
+BuildRequires: pkgconfig(bluez)
+%endif
 %if 0%{?fedora} >= 20 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1300
-%define buildrequires_libunwind_devel BuildRequires: libunwind-devel
+%define buildrequires_libunwind_devel BuildRequires: libunwind-devel binutils-devel
 %endif
 %ifarch x86_64
 # for experimental -k option
@@ -62,7 +65,7 @@
 printf 'kernel-headers %%s.%%s.%%s\n' $(($kver/65536)) $(($kver/256%%256)) $(($kver%%256))
 echo 'END OF BUILD ENVIRONMENT INFORMATION'
 
-%configure
+%configure --enable-mpers=check
 make %{?_smp_mflags}
 
 %install
@@ -83,6 +86,7 @@
 %endif
 
 %check
+%{buildroot}%{_bindir}/strace -V
 make %{?_smp_mflags} -k check VERBOSE=1
 echo 'BEGIN OF TEST SUITE INFORMATION'
 tail -n 99999 -- tests*/test-suite.log tests*/ksysent.log
@@ -105,6 +109,9 @@
 * @RPM_CHANGELOGTIME@ @PACKAGE_BUGREPORT@ - @PACKAGE_VERSION@-1
 - @PACKAGE_STRING@ snapshot.
 
+* Mon Nov 13 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.20-1
+- v4.19 -> v4.20.
+
 * Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1
 - v4.18 -> v4.19.
 
diff --git a/string_to_uint.c b/string_to_uint.c
index 223f68a..2d3c123 100644
--- a/string_to_uint.c
+++ b/string_to_uint.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001-2017 The strace developers.
+ * Copyright (c) 2001-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,27 +30,27 @@
 #endif
 
 #include <errno.h>
-#include <limits.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include "string_to_uint.h"
 
-int
+long long
 string_to_uint_ex(const char *const str, char **const endptr,
-		  const unsigned int max_val, const char *const accepted_ending)
+		  const unsigned long long max_val,
+		  const char *const accepted_ending)
 {
 	char *end;
-	long val;
+	long long val;
 
 	if (!*str)
 		return -1;
 
 	errno = 0;
-	val = strtol(str, &end, 10);
+	val = strtoll(str, &end, 10);
 
-	if (str == end || val < 0 || (unsigned long) val > max_val
-	    || (val == LONG_MAX && errno == ERANGE))
+	if (str == end || val < 0 || (unsigned long long) val > max_val
+	    || (val == LLONG_MAX && errno == ERANGE))
 		return -1;
 
 	if (*end && (!accepted_ending || !strchr(accepted_ending, *end)))
@@ -59,11 +59,5 @@
 	if (endptr)
 		*endptr = end;
 
-	return (int) val;
-}
-
-int
-string_to_uint(const char *const str)
-{
-	return string_to_uint_upto(str, INT_MAX);
+	return val;
 }
diff --git a/string_to_uint.h b/string_to_uint.h
index 6d26776..daea1fa 100644
--- a/string_to_uint.h
+++ b/string_to_uint.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001-2017 The strace developers.
+ * Copyright (c) 2001-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,17 +28,42 @@
 #ifndef STRACE_STRING_TO_UINT_H
 #define STRACE_STRING_TO_UINT_H
 
-extern int
-string_to_uint(const char *str);
+#include <limits.h>
 
-extern int
+#include "kernel_types.h"
+
+extern long long
 string_to_uint_ex(const char *str, char **endptr,
-		  unsigned int max_val, const char *accepted_ending);
+		  unsigned long long max_val, const char *accepted_ending);
 
-static inline int
-string_to_uint_upto(const char *const str, const unsigned int max_val)
+static inline long long
+string_to_uint_upto(const char *const str, const unsigned long long max_val)
 {
 	return string_to_uint_ex(str, NULL, max_val, NULL);
 }
 
+static inline int
+string_to_uint(const char *str)
+{
+	return string_to_uint_upto(str, INT_MAX);
+}
+
+static inline long
+string_to_ulong(const char *str)
+{
+	return string_to_uint_upto(str, LONG_MAX);
+}
+
+static inline kernel_long_t
+string_to_kulong(const char *str)
+{
+	return string_to_uint_upto(str, ((kernel_ulong_t) -1ULL) >> 1);
+}
+
+static inline long long
+string_to_ulonglong(const char *str)
+{
+	return string_to_uint_upto(str, LLONG_MAX);
+}
+
 #endif /* !STRACE_STRING_TO_UINT_H */
diff --git a/sys_func.h b/sys_func.h
index f8a4f24..90a6f67 100644
--- a/sys_func.h
+++ b/sys_func.h
@@ -205,6 +205,7 @@
 extern SYS_FUNC(renameat2);
 extern SYS_FUNC(request_key);
 extern SYS_FUNC(restart_syscall);
+extern SYS_FUNC(riscv_flush_icache);
 extern SYS_FUNC(rt_sigaction);
 extern SYS_FUNC(rt_sigpending);
 extern SYS_FUNC(rt_sigprocmask);
@@ -213,6 +214,11 @@
 extern SYS_FUNC(rt_sigsuspend);
 extern SYS_FUNC(rt_sigtimedwait);
 extern SYS_FUNC(rt_tgsigqueueinfo);
+extern SYS_FUNC(s390_guarded_storage);
+extern SYS_FUNC(s390_pci_mmio_read);
+extern SYS_FUNC(s390_pci_mmio_write);
+extern SYS_FUNC(s390_runtime_instr);
+extern SYS_FUNC(s390_sthyi);
 extern SYS_FUNC(sched_getaffinity);
 extern SYS_FUNC(sched_getattr);
 extern SYS_FUNC(sched_getparam);
diff --git a/syscall.c b/syscall.c
index b1047fe..cb9bce1 100644
--- a/syscall.c
+++ b/syscall.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,9 +34,10 @@
 
 #include "defs.h"
 #include "native_defs.h"
+#include "ptrace.h"
 #include "nsig.h"
 #include "number_set.h"
-#include <sys/param.h>
+#include <limits.h>
 
 /* for struct iovec */
 #include <sys/uio.h>
@@ -45,7 +46,6 @@
 #include <asm/unistd.h>
 
 #include "regs.h"
-#include "ptrace.h"
 
 #if defined(SPARC64)
 # undef PTRACE_GETREGS
@@ -54,21 +54,12 @@
 # define PTRACE_SETREGS PTRACE_SETREGS64
 #endif
 
-#if defined SPARC64
-# include <asm/psrcompat.h>
-#elif defined SPARC
-# include <asm/psr.h>
-#endif
-
-#ifdef IA64
-# include <asm/rse.h>
-#endif
-
 #ifndef NT_PRSTATUS
 # define NT_PRSTATUS 1
 #endif
 
 #include "syscall.h"
+#include "xstring.h"
 
 /* Define these shorthand notations to simplify the syscallent files. */
 #include "sysent_shorthand_defs.h"
@@ -222,11 +213,24 @@
 #endif
 };
 
+const char *const personality_names[] =
+# if defined X86_64
+	{"64 bit", "32 bit", "x32"}
+# elif defined X32
+	{"x32", "32 bit"}
+# elif SUPPORTED_PERSONALITIES == 2
+	{"64 bit", "32 bit"}
+# else
+	{STRINGIFY_VAL(__WORDSIZE) " bit"}
+# endif
+	;
+
 #if SUPPORTED_PERSONALITIES > 1
+
 unsigned current_personality;
 
 # ifndef current_wordsize
-unsigned current_wordsize;
+unsigned current_wordsize = PERSONALITY0_WORDSIZE;
 static const int personality_wordsize[SUPPORTED_PERSONALITIES] = {
 	PERSONALITY0_WORDSIZE,
 	PERSONALITY1_WORDSIZE,
@@ -237,7 +241,7 @@
 # endif
 
 # ifndef current_klongsize
-unsigned current_klongsize;
+unsigned current_klongsize = PERSONALITY0_KLONGSIZE;
 static const int personality_klongsize[SUPPORTED_PERSONALITIES] = {
 	PERSONALITY0_KLONGSIZE,
 	PERSONALITY1_KLONGSIZE,
@@ -248,8 +252,15 @@
 # endif
 
 void
-set_personality(int personality)
+set_personality(unsigned int personality)
 {
+	if (personality == current_personality)
+		return;
+
+	if (personality >= SUPPORTED_PERSONALITIES)
+		error_msg_and_die("Requested switch to unsupported personality "
+				  "%u", personality);
+
 	nsyscalls = nsyscall_vec[personality];
 	sysent = sysent_vec[personality];
 
@@ -299,29 +310,26 @@
 static void
 update_personality(struct tcb *tcp, unsigned int personality)
 {
-	if (personality == current_personality)
-		return;
+	static bool need_mpers_warning[] =
+		{ false, !HAVE_PERSONALITY_1_MPERS, !HAVE_PERSONALITY_2_MPERS };
+
 	set_personality(personality);
 
 	if (personality == tcp->currpers)
 		return;
 	tcp->currpers = personality;
 
-# undef PERSONALITY_NAMES
-# if defined X86_64
-#  define PERSONALITY_NAMES {"64 bit", "32 bit", "x32"}
-# elif defined X32
-#  define PERSONALITY_NAMES {"x32", "32 bit"}
-# elif SUPPORTED_PERSONALITIES == 2
-#  define PERSONALITY_NAMES {"64 bit", "32 bit"}
-# endif
-# ifdef PERSONALITY_NAMES
 	if (!qflag) {
-		static const char *const names[] = PERSONALITY_NAMES;
 		error_msg("[ Process PID=%d runs in %s mode. ]",
-			  tcp->pid, names[personality]);
+			  tcp->pid, personality_names[personality]);
 	}
-# endif
+
+	if (need_mpers_warning[personality]) {
+		error_msg("WARNING: Proper structure decoding for this "
+			  "personality is not supported, please consider "
+			  "building strace with mpers support enabled.");
+		need_mpers_warning[personality] = false;
+	}
 }
 #endif
 
@@ -350,7 +358,7 @@
 		tcp->u_arg[i] = (sizeof(uint32_t) == current_wordsize)
 				? ((uint32_t *) (void *) buf)[i] : buf[i];
 }
-#endif
+#endif /* SYS_socket_subcall */
 
 #ifdef SYS_ipc_subcall
 static void
@@ -390,11 +398,11 @@
 	for (i = 0; i < n; i++)
 		tcp->u_arg[i] = tcp->u_arg[i + 1];
 }
-#endif
+#endif /* SYS_ipc_subcall */
 
-#ifdef LINUX_MIPSO32
+#ifdef SYS_syscall_subcall
 static void
-decode_mips_subcall(struct tcb *tcp)
+decode_syscall_subcall(struct tcb *tcp)
 {
 	if (!scno_is_valid(tcp->u_arg[0]))
 		return;
@@ -403,6 +411,7 @@
 	tcp->s_ent = &sysent[tcp->scno];
 	memmove(&tcp->u_arg[0], &tcp->u_arg[1],
 		sizeof(tcp->u_arg) - sizeof(tcp->u_arg[0]));
+# ifdef LINUX_MIPSO32
 	/*
 	 * Fetching the last arg of 7-arg syscalls (fadvise64_64
 	 * and sync_file_range) requires additional code,
@@ -415,8 +424,9 @@
 			   &tcp->u_arg[MAX_ARGS - 1]) < 0)
 		tcp->u_arg[MAX_ARGS - 1] = 0;
 	}
+# endif /* LINUX_MIPSO32 */
 }
-#endif /* LINUX_MIPSO32 */
+#endif /* SYS_syscall_subcall */
 
 static void
 dumpio(struct tcb *tcp)
@@ -476,41 +486,6 @@
 	}
 }
 
-/*
- * Shuffle syscall numbers so that we don't have huge gaps in syscall table.
- * The shuffling should be an involution: shuffle_scno(shuffle_scno(n)) == n.
- */
-static kernel_ulong_t
-shuffle_scno(kernel_ulong_t scno)
-{
-#if defined(ARM) || defined(AARCH64) /* So far only 32-bit ARM needs this */
-	if (scno < ARM_FIRST_SHUFFLED_SYSCALL)
-		return scno;
-
-	/* __ARM_NR_cmpxchg? Swap with LAST_ORDINARY+1 */
-	if (scno == ARM_FIRST_SHUFFLED_SYSCALL)
-		return 0x000ffff0;
-	if (scno == 0x000ffff0)
-		return ARM_FIRST_SHUFFLED_SYSCALL;
-
-# define ARM_SECOND_SHUFFLED_SYSCALL (ARM_FIRST_SHUFFLED_SYSCALL + 1)
-	/*
-	 * Is it ARM specific syscall?
-	 * Swap [0x000f0000, 0x000f0000 + LAST_SPECIAL] range
-	 * with [SECOND_SHUFFLED, SECOND_SHUFFLED + LAST_SPECIAL] range.
-	 */
-	if (scno >= 0x000f0000 &&
-	    scno <= 0x000f0000 + ARM_LAST_SPECIAL_SYSCALL) {
-		return scno - 0x000f0000 + ARM_SECOND_SHUFFLED_SYSCALL;
-	}
-	if (scno <= ARM_SECOND_SHUFFLED_SYSCALL + ARM_LAST_SPECIAL_SYSCALL) {
-		return scno + 0x000f0000 - ARM_SECOND_SHUFFLED_SYSCALL;
-	}
-#endif /* ARM || AARCH64 */
-
-	return scno;
-}
-
 const char *
 err_name(unsigned long err)
 {
@@ -520,15 +495,7 @@
 	return NULL;
 }
 
-static long get_regs_error;
-
-void
-clear_regs(void)
-{
-	get_regs_error = -1;
-}
-
-static void get_regs(pid_t pid);
+static long get_regs(struct tcb *);
 static int get_syscall_args(struct tcb *);
 static int get_syscall_result(struct tcb *);
 static int arch_get_scno(struct tcb *tcp);
@@ -570,10 +537,13 @@
 
 	opts->first = opts->step;
 
-	if (opts->data.flags & INJECT_F_SIGNAL)
-		*signo = opts->data.signo;
-	if (opts->data.flags & INJECT_F_RETVAL && !arch_set_scno(tcp, -1))
-		tcp->flags |= TCB_TAMPERED;
+	if (!recovering(tcp)) {
+		if (opts->data.flags & INJECT_F_SIGNAL)
+			*signo = opts->data.signo;
+		if (opts->data.flags & INJECT_F_RETVAL &&
+		    !arch_set_scno(tcp, -1))
+			tcp->flags |= TCB_TAMPERED;
+	}
 
 	return 0;
 }
@@ -581,7 +551,16 @@
 static long
 tamper_with_syscall_exiting(struct tcb *tcp)
 {
+	if (!syserror(tcp)) {
+		error_msg("Failed to tamper with process %d: got no error "
+			  "(return value %#" PRI_klx ")",
+			  tcp->pid, tcp->u_rval);
+
+		return 1;
+	}
+
 	struct inject_opts *opts = tcb_inject_opts(tcp);
+	bool update_tcb = false;
 
 	if (!opts)
 		return 0;
@@ -593,6 +572,7 @@
 		if (arch_set_success(tcp)) {
 			tcp->u_rval = u_rval;
 		} else {
+			update_tcb = true;
 			tcp->u_error = 0;
 		}
 	} else {
@@ -604,10 +584,17 @@
 			tcp->u_error = new_error;
 			if (arch_set_error(tcp)) {
 				tcp->u_error = u_error;
+			} else {
+				update_tcb = true;
 			}
 		}
 	}
 
+	if (update_tcb) {
+		tcp->u_error = 0;
+		get_error(tcp, !(tcp->s_ent->sys_flags & SYSCALL_NEVER_FAILS));
+	}
+
 	return 0;
 }
 
@@ -636,23 +623,30 @@
 		return res;
 	}
 
-#ifdef LINUX_MIPSO32
-	if (SEN_syscall == tcp->s_ent->sen)
-		decode_mips_subcall(tcp);
-#endif
-
-#if defined(SYS_socket_subcall) || defined(SYS_ipc_subcall)
-	switch (tcp->s_ent->sen) {
-# ifdef SYS_socket_subcall
-		case SEN_socketcall:
-			decode_socket_subcall(tcp);
-			break;
-# endif
+#if defined SYS_ipc_subcall	\
+ || defined SYS_socket_subcall	\
+ || defined SYS_syscall_subcall
+	for (;;) {
+		switch (tcp->s_ent->sen) {
 # ifdef SYS_ipc_subcall
 		case SEN_ipc:
 			decode_ipc_subcall(tcp);
 			break;
 # endif
+# ifdef SYS_socket_subcall
+		case SEN_socketcall:
+			decode_socket_subcall(tcp);
+			break;
+# endif
+# ifdef SYS_syscall_subcall
+		case SEN_syscall:
+			decode_syscall_subcall(tcp);
+			if (tcp->s_ent->sen != SEN_syscall)
+				continue;
+			break;
+# endif
+		}
+		break;
 	}
 #endif
 
@@ -719,12 +713,6 @@
 		gettimeofday(&tcp->etime, NULL);
 }
 
-static bool
-syscall_tampered(struct tcb *tcp)
-{
-	return tcp->flags & TCB_TAMPERED;
-}
-
 /* Returns:
  * 0: "bail out".
  * 1: ok.
@@ -750,17 +738,17 @@
 	if (filtered(tcp) || hide_log(tcp))
 		return 0;
 
-	get_regs(tcp->pid);
 #if SUPPORTED_PERSONALITIES > 1
 	update_personality(tcp, tcp->currpers);
 #endif
-	return get_regs_error ? -1 : get_syscall_result(tcp);
+
+	return get_syscall_result(tcp);
 }
 
 int
 syscall_exiting_trace(struct tcb *tcp, struct timeval tv, int res)
 {
-	if (syserror(tcp) && syscall_tampered(tcp))
+	if (syscall_tampered(tcp))
 		tamper_with_syscall_exiting(tcp);
 
 	if (cflag) {
@@ -820,6 +808,7 @@
 	tprints(") ");
 	tabto();
 	unsigned long u_error = tcp->u_error;
+	kernel_long_t u_rval;
 
 	if (raw(tcp)) {
 		if (u_error) {
@@ -887,13 +876,15 @@
 			tprints("= ? ERESTART_RESTARTBLOCK (Interrupted by signal)");
 			break;
 		default:
+			u_rval = sys_res & RVAL_PRINT_ERR_VAL ?
+				 tcp->u_rval : -1;
 			u_error_str = err_name(u_error);
 			if (u_error_str)
-				tprintf("= -1 %s (%s)",
-					u_error_str, strerror(u_error));
+				tprintf("= %" PRI_kld " %s (%s)",
+					u_rval, u_error_str, strerror(u_error));
 			else
-				tprintf("= -1 %lu (%s)",
-					u_error, strerror(u_error));
+				tprintf("= %" PRI_kld " %lu (%s)",
+					u_rval, u_error, strerror(u_error));
 			break;
 		}
 		if (syscall_tampered(tcp))
@@ -907,7 +898,7 @@
 			switch (sys_res & RVAL_MASK) {
 			case RVAL_HEX:
 #if ANY_WORDSIZE_LESS_THAN_KERNEL_LONG
-				if (current_wordsize < sizeof(tcp->u_rval)) {
+				if (current_klongsize < sizeof(tcp->u_rval)) {
 					tprintf("= %#x",
 						(unsigned int) tcp->u_rval);
 				} else
@@ -922,7 +913,7 @@
 				break;
 			case RVAL_UDECIMAL:
 #if ANY_WORDSIZE_LESS_THAN_KERNEL_LONG
-				if (current_wordsize < sizeof(tcp->u_rval)) {
+				if (current_klongsize < sizeof(tcp->u_rval)) {
 					tprintf("= %u",
 						(unsigned int) tcp->u_rval);
 				} else
@@ -1006,7 +997,7 @@
 
 #include "arch_regs.c"
 
-#ifdef HAVE_GETRVAL2
+#if HAVE_ARCH_GETRVAL2
 # include "arch_getrval2.c"
 #endif
 
@@ -1018,12 +1009,11 @@
 #elif defined ARCH_PC_PEEK_ADDR
 	kernel_ulong_t pc;
 # define ARCH_PC_REG pc
-# define ARCH_GET_PC upeek(tcp->pid, ARCH_PC_PEEK_ADDR, &pc)
+# define ARCH_GET_PC upeek(tcp, ARCH_PC_PEEK_ADDR, &pc)
 #else
 # error Neither ARCH_PC_REG nor ARCH_PC_PEEK_ADDR is defined
 #endif
-	get_regs(tcp->pid);
-	if (get_regs_error || ARCH_GET_PC)
+	if (get_regs(tcp) < 0 || ARCH_GET_PC)
 		tprints(current_wordsize == 4 ? "[????????] "
 					      : "[????????????????] ");
 	else
@@ -1108,14 +1098,25 @@
 
 #endif /* ARCH_REGS_FOR_GETREGSET || ARCH_REGS_FOR_GETREGS */
 
-static void
-get_regs(pid_t pid)
+#ifdef ptrace_getregset_or_getregs
+static long get_regs_error;
+#endif
+
+void
+clear_regs(struct tcb *tcp)
 {
-#undef USE_GET_SYSCALL_RESULT_REGS
+#ifdef ptrace_getregset_or_getregs
+	get_regs_error = -1;
+#endif
+}
+
+static long
+get_regs(struct tcb *const tcp)
+{
 #ifdef ptrace_getregset_or_getregs
 
 	if (get_regs_error != -1)
-		return;
+		return get_regs_error;
 
 # ifdef HAVE_GETREGS_OLD
 	/*
@@ -1124,29 +1125,57 @@
 	 */
 	static int use_getregs_old;
 	if (use_getregs_old < 0) {
-		get_regs_error = ptrace_getregset_or_getregs(pid);
-		return;
+		return get_regs_error = ptrace_getregset_or_getregs(tcp->pid);
 	} else if (use_getregs_old == 0) {
-		get_regs_error = ptrace_getregset_or_getregs(pid);
+		get_regs_error = ptrace_getregset_or_getregs(tcp->pid);
 		if (get_regs_error >= 0) {
 			use_getregs_old = -1;
-			return;
+			return get_regs_error;
 		}
 		if (errno == EPERM || errno == ESRCH)
-			return;
+			return get_regs_error;
 		use_getregs_old = 1;
 	}
-	get_regs_error = getregs_old(pid);
+	return get_regs_error = getregs_old(tcp);
 # else /* !HAVE_GETREGS_OLD */
 	/* Assume that PTRACE_GETREGSET/PTRACE_GETREGS works. */
-	get_regs_error = ptrace_getregset_or_getregs(pid);
+	get_regs_error = ptrace_getregset_or_getregs(tcp->pid);
+
+#  if defined ARCH_PERSONALITY_0_IOV_SIZE
+	if (get_regs_error)
+		return get_regs_error;
+
+	switch (ARCH_IOVEC_FOR_GETREGSET.iov_len) {
+	case ARCH_PERSONALITY_0_IOV_SIZE:
+		update_personality(tcp, 0);
+		break;
+	case ARCH_PERSONALITY_1_IOV_SIZE:
+		update_personality(tcp, 1);
+		break;
+	default: {
+		static bool printed = false;
+
+		if (!printed) {
+			error_msg("Unsupported regset size returned by "
+				  "PTRACE_GETREGSET: %zu",
+				  ARCH_IOVEC_FOR_GETREGSET.iov_len);
+
+			printed = true;
+		}
+
+		update_personality(tcp, 0);
+	}
+	}
+#  endif /* ARCH_PERSONALITY_0_IOV_SIZE */
+
+	return get_regs_error;
+
 # endif /* !HAVE_GETREGS_OLD */
 
 #else /* !ptrace_getregset_or_getregs */
 
-# define USE_GET_SYSCALL_RESULT_REGS 1
 # warning get_regs is not implemented for this architecture yet
-	get_regs_error = 0;
+	return 0;
 
 #endif /* !ptrace_getregset_or_getregs */
 }
@@ -1162,7 +1191,7 @@
 struct sysent_buf {
 	struct tcb *tcp;
 	struct_sysent ent;
-	char buf[sizeof("syscall_%lu") + sizeof(kernel_ulong_t) * 3];
+	char buf[sizeof("syscall_0x") + sizeof(kernel_ulong_t) * 2];
 };
 
 static void
@@ -1184,15 +1213,15 @@
 int
 get_scno(struct tcb *tcp)
 {
-	get_regs(tcp->pid);
-
-	if (get_regs_error)
+	if (get_regs(tcp) < 0)
 		return -1;
 
 	int rc = arch_get_scno(tcp);
 	if (rc != 1)
 		return rc;
 
+	tcp->scno = shuffle_scno(tcp->scno);
+
 	if (scno_is_valid(tcp->scno)) {
 		tcp->s_ent = &sysent[tcp->scno];
 		tcp->qual_flg = qual_flags(tcp->scno);
@@ -1204,21 +1233,31 @@
 		s->ent.sen = SEN_printargs;
 		s->ent.sys_func = printargs;
 		s->ent.sys_name = s->buf;
-		sprintf(s->buf, "syscall_%" PRI_klu, shuffle_scno(tcp->scno));
+		xsprintf(s->buf, "syscall_%#" PRI_klx, 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 %" PRI_kld,
-				  tcp->pid, tcp->scno);
+		debug_msg("pid %d invalid syscall %#" PRI_klx,
+			  tcp->pid, shuffle_scno(tcp->scno));
 	}
+
+	/*
+	 * We refrain from argument decoding during recovering
+	 * as tracee memory mappings has changed and the registers
+	 * are very likely pointing to garbage already.
+	 */
+	if (recovering(tcp))
+		tcp->qual_flg |= QUAL_RAW;
+
 	return 1;
 }
 
-#ifdef USE_GET_SYSCALL_RESULT_REGS
+#ifdef ptrace_getregset_or_getregs
+# define get_syscall_result_regs get_regs
+#else
 static int get_syscall_result_regs(struct tcb *);
 #endif
 
@@ -1230,12 +1269,12 @@
 static int
 get_syscall_result(struct tcb *tcp)
 {
-#ifdef USE_GET_SYSCALL_RESULT_REGS
-	if (get_syscall_result_regs(tcp))
+	if (get_syscall_result_regs(tcp) < 0)
 		return -1;
-#endif
 	tcp->u_error = 0;
-	get_error(tcp, !(tcp->s_ent->sys_flags & SYSCALL_NEVER_FAILS));
+	get_error(tcp,
+		  !(tcp->s_ent->sys_flags & SYSCALL_NEVER_FAILS)
+			|| syscall_tampered(tcp));
 
 	return 1;
 }
@@ -1243,7 +1282,7 @@
 #include "get_scno.c"
 #include "set_scno.c"
 #include "get_syscall_args.c"
-#ifdef USE_GET_SYSCALL_RESULT_REGS
+#ifndef ptrace_getregset_or_getregs
 # include "get_syscall_result.c"
 #endif
 #include "get_error.c"
@@ -1251,13 +1290,10 @@
 #ifdef HAVE_GETREGS_OLD
 # include "getregs_old.c"
 #endif
+#include "shuffle_scno.c"
 
 const char *
 syscall_name(kernel_ulong_t scno)
 {
-#if defined X32_PERSONALITY_NUMBER && defined __X32_SYSCALL_BIT
-	if (current_personality == X32_PERSONALITY_NUMBER)
-		scno &= ~__X32_SYSCALL_BIT;
-#endif
 	return scno_is_valid(scno) ? sysent[scno].sys_name : NULL;
 }
diff --git a/sysent.h b/sysent.h
index 92de746..b01eb5f 100644
--- a/sysent.h
+++ b/sysent.h
@@ -28,5 +28,6 @@
 #define TRACE_STATFS_LIKE		00200000	/* Trace statfs-like, fstatfs-like and ustat syscalls. */
 #define TRACE_FSTAT			00400000	/* Trace *fstat{,at}{,64} syscalls. */
 #define TRACE_STAT_LIKE			01000000	/* Trace *{,l,f}stat{,x,at}{,64} syscalls. */
+#define TRACE_PURE			02000000	/* Trace getter syscalls with no arguments. */
 
 #endif /* !STRACE_SYSENT_H */
diff --git a/sysent_shorthand_defs.h b/sysent_shorthand_defs.h
index 911fc33..ce43550 100644
--- a/sysent_shorthand_defs.h
+++ b/sysent_shorthand_defs.h
@@ -14,6 +14,7 @@
 # define TSF	0
 # define TFSF	0
 # define TSFA	0
+# define PU	0
 # define NF	0
 # define MA	0
 # define SI	0
@@ -37,6 +38,7 @@
 # define TSF	TRACE_STATFS
 # define TFSF	TRACE_FSTATFS
 # define TSFA	TRACE_STATFS_LIKE
+# define PU	TRACE_PURE
 # define NF	SYSCALL_NEVER_FAILS
 # define MA	MAX_ARGS
 # define SI	STACKTRACE_INVALIDATE_CACHE
diff --git a/tests-m32/Makefile.am b/tests-m32/Makefile.am
index e5aa077..f0aed3f 100644
--- a/tests-m32/Makefile.am
+++ b/tests-m32/Makefile.am
@@ -1,7 +1,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2017 The strace developers.
+# Copyright (c) 2011-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -28,8 +28,12 @@
 
 OS = linux
 ARCH = @arch_m32@
+NATIVE_ARCH = @arch_native@
+SIZEOF_KERNEL_LONG_T = 4
+SIZEOF_LONG = 4
 MPERS_NAME = m32
-ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) -m32
+MPERS_CC_FLAGS = @cc_flags_m32@
+ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
 	      -I$(builddir) \
@@ -80,6 +84,7 @@
 include pure_executables.am
 
 check_PROGRAMS = $(PURE_EXECUTABLES) \
+	_newselect-P \
 	answer \
 	attach-f-p \
 	attach-f-p-cmd \
@@ -117,6 +122,9 @@
 	netlink_netlink_diag \
 	netlink_unix_diag \
 	nsyscalls \
+	nsyscalls-d \
+	oldselect-P \
+	oldselect-efault-P \
 	pc \
 	perf_event_open_nonverbose \
 	perf_event_open_unabbrev \
@@ -137,12 +145,14 @@
 	scm_rights \
 	seccomp-filter-v \
 	seccomp-strict \
+	select-P \
 	set_ptracer_any \
 	set_sigblock \
 	set_sigign \
 	signal_receive \
 	sleep \
 	stack-fcall \
+	stack-fcall-mangled \
 	threads-execve \
 	unblock_reset_raise \
 	unix-pair-send-recv \
@@ -182,10 +192,17 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
+	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
+	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
+
 include gen_tests.am
 
 if USE_LIBUNWIND
 LIBUNWIND_TESTS = strace-k.test
+if USE_DEMANGLE
+LIBUNWIND_TESTS += strace-k-demangle.test
+endif
 else
 LIBUNWIND_TESTS =
 endif
@@ -204,11 +221,6 @@
 	futex.test \
 	getuid.test \
 	ioctl.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_loop-nv.test \
-	ioctl_nsfs.test \
-	ioctl_sock_gifconf.test \
 	ipc_msgbuf.test \
 	llseek.test \
 	lseek.test \
@@ -220,9 +232,11 @@
 	net.test \
 	netlink_sock_diag.test \
 	nsyscalls.test \
-	oldselect.test \
+	nsyscalls-d.test \
+	nsyscalls-nd.test \
 	personality.test \
 	pipe.test \
+	poll-P.test \
 	poll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
@@ -241,6 +255,7 @@
 	seccomp-strict.test \
 	sigaltstack.test \
 	sun_path.test \
+	xet_thread_area_x86.test \
 	uio.test \
 	umount.test \
 	umount2.test \
@@ -263,6 +278,8 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
+	filtering_fd-syntax.test \
+	filtering_syscall-syntax.test \
 	fflush.test \
 	get_regs.test \
 	interactive_block.test \
@@ -309,13 +326,18 @@
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
 
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) STRACE_NATIVE_ARCH=$(NATIVE_ARCH) \
+			SIZEOF_KERNEL_LONG_T=$(SIZEOF_KERNEL_LONG_T) \
+			SIZEOF_LONG=$(SIZEOF_LONG) \
+			MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
 
 @VALGRIND_CHECK_RULES@
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/strace.supp
 
 EXTRA_DIST = \
+	accept_compat.h \
+	attach-p-cmd.h \
 	caps-abbrev.awk \
 	caps.awk \
 	clock.in \
@@ -331,7 +353,6 @@
 	getresugid.c \
 	init.sh \
 	init_delete_module.h \
-	ioctl-v.sh \
 	ipc.sh \
 	ipc_msgbuf.expected \
 	ksysent.sed \
@@ -339,8 +360,8 @@
 	match.awk \
 	net.expected \
 	netlink_sock_diag-v.sh \
-	oldselect.expected \
 	pipe.expected \
+	print_user_desc.c \
 	process_vm_readv_writev.c \
 	pure_executables.list \
 	qual_fault-exit_group.expected \
@@ -358,10 +379,12 @@
 	setugid.c \
 	sigaltstack.expected \
 	sockname.c \
+	stack-fcall.h \
 	strace-C.expected \
 	strace-E.expected \
 	strace-T.expected \
 	strace-ff.expected \
+	strace-k-demangle.test \
 	strace-k.test \
 	strace-r.expected \
 	strace.supp \
diff --git a/tests-m32/Makefile.in b/tests-m32/Makefile.in
index 7c52fba..9469c44 100644
--- a/tests-m32/Makefile.in
+++ b/tests-m32/Makefile.in
@@ -17,7 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2017 The strace developers.
+# Copyright (c) 2011-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -136,23 +136,25 @@
 	$(srcdir)/../scno.am $(srcdir)/Makefile.in \
 	$(srcdir)/Makefile.am $(top_srcdir)/depcomp \
 	$(top_srcdir)/test-driver
-check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
-	attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
-	attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \
-	caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
-	check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
-	clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \
-	execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \
-	fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
-	gettid$(EXEEXT) int_0x80$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
+check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
+	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
+	block_reset_raise_run$(EXEEXT) caps-abbrev$(EXEEXT) \
+	check_sigblock$(EXEEXT) check_sigign$(EXEEXT) \
+	clone_parent$(EXEEXT) clone_ptrace$(EXEEXT) count-f$(EXEEXT) \
+	execve-v$(EXEEXT) execveat-v$(EXEEXT) \
+	filter-unavailable$(EXEEXT) fork-f$(EXEEXT) getpid$(EXEEXT) \
+	getppid$(EXEEXT) gettid$(EXEEXT) int_0x80$(EXEEXT) \
+	ioctl_dm-v$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+	ioctl_loop-nv$(EXEEXT) ioctl_loop-v$(EXEEXT) \
+	ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
 	is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \
 	list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \
 	mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \
 	net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \
 	netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	nsyscalls$(EXEEXT) pc$(EXEEXT) \
+	nsyscalls$(EXEEXT) nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
+	oldselect-efault-P$(EXEEXT) pc$(EXEEXT) \
 	perf_event_open_nonverbose$(EXEEXT) \
 	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
 	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
@@ -163,19 +165,21 @@
 	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
 	run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \
 	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
-	set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
-	stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
+	select-P$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	set_sigblock$(EXEEXT) set_sigign$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	stack-fcall-mangled$(EXEEXT) threads-execve$(EXEEXT) \
 	unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
 	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
 	wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_1 = strace-k-demangle.test
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
 subdir = tests-m32
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
 	$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
 	$(top_srcdir)/m4/ax_valgrind_check.m4 \
-	$(top_srcdir)/m4/mpers.m4 $(top_srcdir)/m4/st_bpf.m4 \
+	$(top_srcdir)/m4/mpers.m4 \
 	$(top_srcdir)/m4/st_save_restore_var.m4 \
 	$(top_srcdir)/m4/st_warn_cflags.m4 \
 	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -250,8 +254,9 @@
 	getxxid$(EXEEXT) group_req$(EXEEXT) inet-cmsg$(EXEEXT) \
 	init_module$(EXEEXT) inotify$(EXEEXT) inotify_init1$(EXEEXT) \
 	ioctl$(EXEEXT) ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_loop$(EXEEXT) ioctl_mtd$(EXEEXT) \
-	ioctl_rtc$(EXEEXT) ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
+	ioctl_evdev$(EXEEXT) ioctl_kvm_run$(EXEEXT) \
+	ioctl_loop$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
+	ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
 	ioctl_sg_io_v4$(EXEEXT) ioctl_sock_gifconf$(EXEEXT) \
 	ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
 	iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
@@ -266,12 +271,12 @@
 	mkdir$(EXEEXT) mkdirat$(EXEEXT) mknod$(EXEEXT) \
 	mknodat$(EXEEXT) mlock$(EXEEXT) mlock2$(EXEEXT) \
 	mlockall$(EXEEXT) mmap$(EXEEXT) mmap64$(EXEEXT) mmsg$(EXEEXT) \
-	mmsg_name$(EXEEXT) mount$(EXEEXT) move_pages$(EXEEXT) \
-	mq$(EXEEXT) mq_sendrecv$(EXEEXT) mq_sendrecv-read$(EXEEXT) \
-	mq_sendrecv-write$(EXEEXT) msg_control$(EXEEXT) \
-	msg_name$(EXEEXT) munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-icmp_filter$(EXEEXT) net-sockaddr$(EXEEXT) \
-	net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+	mmsg_name$(EXEEXT) modify_ldt$(EXEEXT) mount$(EXEEXT) \
+	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
+	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
+	msg_control$(EXEEXT) msg_name$(EXEEXT) munlockall$(EXEEXT) \
+	nanosleep$(EXEEXT) net-icmp_filter$(EXEEXT) \
+	net-sockaddr$(EXEEXT) net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
 	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
 	netlink_audit$(EXEEXT) netlink_crypto$(EXEEXT) \
 	netlink_generic$(EXEEXT) netlink_kobject_uevent$(EXEEXT) \
@@ -301,16 +306,18 @@
 	nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \
 	nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \
 	nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
+	old_mmap-P$(EXEEXT) old_mmap-v-none$(EXEEXT) oldfstat$(EXEEXT) \
+	oldlstat$(EXEEXT) oldselect$(EXEEXT) oldselect-efault$(EXEEXT) \
 	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) \
 	osf_utimes$(EXEEXT) pause$(EXEEXT) perf_event_open$(EXEEXT) \
 	personality$(EXEEXT) pipe$(EXEEXT) pipe2$(EXEEXT) \
 	pkey_alloc$(EXEEXT) pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) \
-	poll$(EXEEXT) ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
-	prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
-	prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+	poll$(EXEEXT) poll-P$(EXEEXT) ppoll$(EXEEXT) ppoll-P$(EXEEXT) \
+	prctl-arg2-intptr$(EXEEXT) prctl-dumpable$(EXEEXT) \
+	prctl-name$(EXEEXT) prctl-no-args$(EXEEXT) \
+	prctl-pdeathsig$(EXEEXT) prctl-securebits$(EXEEXT) \
+	prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
+	pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
 	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
 	printpath-umovestr$(EXEEXT) \
 	printpath-umovestr-peekdata$(EXEEXT) \
@@ -324,11 +331,15 @@
 	readlinkat$(EXEEXT) readv$(EXEEXT) reboot$(EXEEXT) \
 	recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) recvmsg$(EXEEXT) \
 	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) rmdir$(EXEEXT) \
+	renameat2$(EXEEXT) request_key$(EXEEXT) \
+	riscv_flush_icache$(EXEEXT) rmdir$(EXEEXT) \
 	rt_sigaction$(EXEEXT) rt_sigpending$(EXEEXT) \
 	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
 	rt_sigreturn$(EXEEXT) rt_sigsuspend$(EXEEXT) \
 	rt_sigtimedwait$(EXEEXT) rt_tgsigqueueinfo$(EXEEXT) \
+	s390_guarded_storage$(EXEEXT) s390_guarded_storage-v$(EXEEXT) \
+	s390_pci_mmio_read_write$(EXEEXT) s390_runtime_instr$(EXEEXT) \
+	s390_sthyi$(EXEEXT) s390_sthyi-v$(EXEEXT) \
 	sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \
 	sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \
 	sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \
@@ -348,30 +359,34 @@
 	signalfd4$(EXEEXT) sigpending$(EXEEXT) sigprocmask$(EXEEXT) \
 	sigreturn$(EXEEXT) sigsuspend$(EXEEXT) so_linger$(EXEEXT) \
 	so_peercred$(EXEEXT) sock_filter-v$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stat$(EXEEXT) \
-	stat64$(EXEEXT) statfs$(EXEEXT) statfs64$(EXEEXT) \
-	statx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \
-	symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \
-	sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \
-	sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \
-	timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
-	timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
-	truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
-	uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
-	umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
-	umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
-	uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \
-	unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \
-	utime$(EXEEXT) utimensat$(EXEEXT) utimes$(EXEEXT) \
-	vhangup$(EXEEXT) vmsplice$(EXEEXT) wait4$(EXEEXT) \
-	waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+	socketcall$(EXEEXT) sockopt-sol_netlink$(EXEEXT) \
+	splice$(EXEEXT) stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
+	statfs64$(EXEEXT) statx$(EXEEXT) swap$(EXEEXT) \
+	sxetmask$(EXEEXT) symlink$(EXEEXT) symlinkat$(EXEEXT) \
+	sync$(EXEEXT) sync_file_range$(EXEEXT) \
+	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
+	tee$(EXEEXT) time$(EXEEXT) timer_create$(EXEEXT) \
+	timer_xettime$(EXEEXT) timerfd_xettime$(EXEEXT) times$(EXEEXT) \
+	times-fail$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
+	ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \
+	umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \
+	umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \
+	umovestr3$(EXEEXT) uname$(EXEEXT) unlink$(EXEEXT) \
+	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
+	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
+	utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \
+	wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
 	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
+	xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
+	xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
 _newselect_DEPENDENCIES = libtests.a
+_newselect_P_SOURCES = _newselect-P.c
+_newselect_P_OBJECTS = _newselect-P.$(OBJEXT)
+_newselect_P_LDADD = $(LDADD)
+_newselect_P_DEPENDENCIES = libtests.a
 accept_SOURCES = accept.c
 accept_OBJECTS = accept.$(OBJEXT)
 accept_LDADD = $(LDADD)
@@ -860,6 +875,10 @@
 ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
 ioctl_evdev_v_LDADD = $(LDADD)
 ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_kvm_run_SOURCES = ioctl_kvm_run.c
+ioctl_kvm_run_OBJECTS = ioctl_kvm_run.$(OBJEXT)
+ioctl_kvm_run_LDADD = $(LDADD)
+ioctl_kvm_run_DEPENDENCIES = libtests.a
 ioctl_loop_SOURCES = ioctl_loop.c
 ioctl_loop_OBJECTS = ioctl_loop.$(OBJEXT)
 ioctl_loop_LDADD = $(LDADD)
@@ -1096,6 +1115,10 @@
 mmsg_name_v_OBJECTS = mmsg_name-v.$(OBJEXT)
 mmsg_name_v_LDADD = $(LDADD)
 mmsg_name_v_DEPENDENCIES = libtests.a
+modify_ldt_SOURCES = modify_ldt.c
+modify_ldt_OBJECTS = modify_ldt.$(OBJEXT)
+modify_ldt_LDADD = $(LDADD)
+modify_ldt_DEPENDENCIES = libtests.a
 mount_SOURCES = mount.c
 mount_OBJECTS = mount.$(OBJEXT)
 mount_LDADD = $(LDADD)
@@ -1389,10 +1412,22 @@
 nsyscalls_OBJECTS = nsyscalls.$(OBJEXT)
 nsyscalls_LDADD = $(LDADD)
 nsyscalls_DEPENDENCIES = libtests.a
+nsyscalls_d_SOURCES = nsyscalls-d.c
+nsyscalls_d_OBJECTS = nsyscalls-d.$(OBJEXT)
+nsyscalls_d_LDADD = $(LDADD)
+nsyscalls_d_DEPENDENCIES = libtests.a
 old_mmap_SOURCES = old_mmap.c
 old_mmap_OBJECTS = old_mmap.$(OBJEXT)
 old_mmap_LDADD = $(LDADD)
 old_mmap_DEPENDENCIES = libtests.a
+old_mmap_P_SOURCES = old_mmap-P.c
+old_mmap_P_OBJECTS = old_mmap-P.$(OBJEXT)
+old_mmap_P_LDADD = $(LDADD)
+old_mmap_P_DEPENDENCIES = libtests.a
+old_mmap_v_none_SOURCES = old_mmap-v-none.c
+old_mmap_v_none_OBJECTS = old_mmap-v-none.$(OBJEXT)
+old_mmap_v_none_LDADD = $(LDADD)
+old_mmap_v_none_DEPENDENCIES = libtests.a
 oldfstat_SOURCES = oldfstat.c
 oldfstat_OBJECTS = oldfstat.$(OBJEXT)
 oldfstat_LDADD = $(LDADD)
@@ -1405,6 +1440,18 @@
 oldselect_OBJECTS = oldselect.$(OBJEXT)
 oldselect_LDADD = $(LDADD)
 oldselect_DEPENDENCIES = libtests.a
+oldselect_P_SOURCES = oldselect-P.c
+oldselect_P_OBJECTS = oldselect-P.$(OBJEXT)
+oldselect_P_LDADD = $(LDADD)
+oldselect_P_DEPENDENCIES = libtests.a
+oldselect_efault_SOURCES = oldselect-efault.c
+oldselect_efault_OBJECTS = oldselect-efault.$(OBJEXT)
+oldselect_efault_LDADD = $(LDADD)
+oldselect_efault_DEPENDENCIES = libtests.a
+oldselect_efault_P_SOURCES = oldselect-efault-P.c
+oldselect_efault_P_OBJECTS = oldselect-efault-P.$(OBJEXT)
+oldselect_efault_P_LDADD = $(LDADD)
+oldselect_efault_P_DEPENDENCIES = libtests.a
 oldstat_SOURCES = oldstat.c
 oldstat_OBJECTS = oldstat.$(OBJEXT)
 oldstat_LDADD = $(LDADD)
@@ -1470,10 +1517,18 @@
 poll_OBJECTS = poll.$(OBJEXT)
 poll_LDADD = $(LDADD)
 poll_DEPENDENCIES = libtests.a
+poll_P_SOURCES = poll-P.c
+poll_P_OBJECTS = poll-P.$(OBJEXT)
+poll_P_LDADD = $(LDADD)
+poll_P_DEPENDENCIES = libtests.a
 ppoll_SOURCES = ppoll.c
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_P_SOURCES = ppoll-P.c
+ppoll_P_OBJECTS = ppoll-P.$(OBJEXT)
+ppoll_P_LDADD = $(LDADD)
+ppoll_P_DEPENDENCIES = libtests.a
 ppoll_v_SOURCES = ppoll-v.c
 ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
 ppoll_v_LDADD = $(LDADD)
@@ -1700,6 +1755,10 @@
 restart_syscall_OBJECTS = restart_syscall.$(OBJEXT)
 restart_syscall_LDADD = $(LDADD)
 restart_syscall_DEPENDENCIES = libtests.a
+riscv_flush_icache_SOURCES = riscv_flush_icache.c
+riscv_flush_icache_OBJECTS = riscv_flush_icache.$(OBJEXT)
+riscv_flush_icache_LDADD = $(LDADD)
+riscv_flush_icache_DEPENDENCIES = libtests.a
 rmdir_SOURCES = rmdir.c
 rmdir_OBJECTS = rmdir.$(OBJEXT)
 rmdir_LDADD = $(LDADD)
@@ -1740,6 +1799,30 @@
 run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT)
 run_expect_termsig_LDADD = $(LDADD)
 run_expect_termsig_DEPENDENCIES = libtests.a
+s390_guarded_storage_SOURCES = s390_guarded_storage.c
+s390_guarded_storage_OBJECTS = s390_guarded_storage.$(OBJEXT)
+s390_guarded_storage_LDADD = $(LDADD)
+s390_guarded_storage_DEPENDENCIES = libtests.a
+s390_guarded_storage_v_SOURCES = s390_guarded_storage-v.c
+s390_guarded_storage_v_OBJECTS = s390_guarded_storage-v.$(OBJEXT)
+s390_guarded_storage_v_LDADD = $(LDADD)
+s390_guarded_storage_v_DEPENDENCIES = libtests.a
+s390_pci_mmio_read_write_SOURCES = s390_pci_mmio_read_write.c
+s390_pci_mmio_read_write_OBJECTS = s390_pci_mmio_read_write.$(OBJEXT)
+s390_pci_mmio_read_write_LDADD = $(LDADD)
+s390_pci_mmio_read_write_DEPENDENCIES = libtests.a
+s390_runtime_instr_SOURCES = s390_runtime_instr.c
+s390_runtime_instr_OBJECTS = s390_runtime_instr.$(OBJEXT)
+s390_runtime_instr_LDADD = $(LDADD)
+s390_runtime_instr_DEPENDENCIES = libtests.a
+s390_sthyi_SOURCES = s390_sthyi.c
+s390_sthyi_OBJECTS = s390_sthyi.$(OBJEXT)
+s390_sthyi_LDADD = $(LDADD)
+s390_sthyi_DEPENDENCIES = libtests.a
+s390_sthyi_v_SOURCES = s390_sthyi-v.c
+s390_sthyi_v_OBJECTS = s390_sthyi-v.$(OBJEXT)
+s390_sthyi_v_LDADD = $(LDADD)
+s390_sthyi_v_DEPENDENCIES = libtests.a
 sched_get_priority_mxx_SOURCES = sched_get_priority_mxx.c
 sched_get_priority_mxx_OBJECTS = sched_get_priority_mxx.$(OBJEXT)
 sched_get_priority_mxx_LDADD = $(LDADD)
@@ -1792,6 +1875,10 @@
 select_OBJECTS = select.$(OBJEXT)
 select_LDADD = $(LDADD)
 select_DEPENDENCIES = libtests.a
+select_P_SOURCES = select-P.c
+select_P_OBJECTS = select-P.$(OBJEXT)
+select_P_LDADD = $(LDADD)
+select_P_DEPENDENCIES = libtests.a
 semop_SOURCES = semop.c
 semop_OBJECTS = semop.$(OBJEXT)
 semop_LDADD = $(LDADD)
@@ -1976,6 +2063,10 @@
 socketcall_OBJECTS = socketcall.$(OBJEXT)
 socketcall_LDADD = $(LDADD)
 socketcall_DEPENDENCIES = libtests.a
+sockopt_sol_netlink_SOURCES = sockopt-sol_netlink.c
+sockopt_sol_netlink_OBJECTS = sockopt-sol_netlink.$(OBJEXT)
+sockopt_sol_netlink_LDADD = $(LDADD)
+sockopt_sol_netlink_DEPENDENCIES = libtests.a
 splice_SOURCES = splice.c
 splice_OBJECTS = splice.$(OBJEXT)
 splice_LDADD = $(LDADD)
@@ -1986,6 +2077,14 @@
 stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
 stack_fcall_LDADD = $(LDADD)
 stack_fcall_DEPENDENCIES = libtests.a
+am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
+	stack-fcall-mangled-0.$(OBJEXT) \
+	stack-fcall-mangled-1.$(OBJEXT) \
+	stack-fcall-mangled-2.$(OBJEXT) \
+	stack-fcall-mangled-3.$(OBJEXT)
+stack_fcall_mangled_OBJECTS = $(am_stack_fcall_mangled_OBJECTS)
+stack_fcall_mangled_LDADD = $(LDADD)
+stack_fcall_mangled_DEPENDENCIES = libtests.a
 stat_SOURCES = stat.c
 stat_OBJECTS = stat.$(OBJEXT)
 stat_LDADD = $(LDADD)
@@ -2213,6 +2312,10 @@
 xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
 xet_robust_list_LDADD = $(LDADD)
 xet_robust_list_DEPENDENCIES = libtests.a
+xet_thread_area_x86_SOURCES = xet_thread_area_x86.c
+xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT)
+xet_thread_area_x86_LDADD = $(LDADD)
+xet_thread_area_x86_DEPENDENCIES = libtests.a
 xetitimer_SOURCES = xetitimer.c
 xetitimer_OBJECTS = xetitimer.$(OBJEXT)
 xetitimer_LDADD = $(LDADD)
@@ -2265,9 +2368,9 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
-	access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
-	attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
+	accept4.c access.c acct.c add_key.c adjtimex.c aio.c alarm.c \
+	answer.c attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
 	attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
 	btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
 	chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
@@ -2291,9 +2394,9 @@
 	gettid.c getuid.c getuid32.c getxxid.c group_req.c inet-cmsg.c \
 	init_module.c inotify.c inotify_init1.c int_0x80.c ioctl.c \
 	ioctl_block.c ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c \
-	ioctl_evdev-v.c ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c \
-	ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c ioctl_rtc-v.c \
-	ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
+	ioctl_evdev-v.c ioctl_kvm_run.c ioctl_loop.c ioctl_loop-nv.c \
+	ioctl_loop-v.c ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c \
+	ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
 	ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
 	iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
 	ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
@@ -2303,13 +2406,13 @@
 	mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
 	mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
 	mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
-	mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
-	mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
-	msg_control-v.c msg_name.c munlockall.c nanosleep.c \
-	net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
-	net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
-	netlink_audit.c netlink_crypto.c netlink_generic.c \
-	netlink_inet_diag.c netlink_kobject_uevent.c \
+	mmsg_name-v.c modify_ldt.c mount.c move_pages.c mq.c \
+	mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+	msg_control.c msg_control-v.c msg_name.c munlockall.c \
+	nanosleep.c net-accept-connect.c net-icmp_filter.c \
+	net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+	net-yy-unix.c netlink_audit.c netlink_crypto.c \
+	netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \
 	netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
 	netlink_route.c netlink_selinux.c netlink_sock_diag.c \
 	netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
@@ -2328,13 +2431,16 @@
 	nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
 	nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
 	nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+	nsyscalls.c nsyscalls-d.c old_mmap.c old_mmap-P.c \
+	old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+	oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
 	oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
 	perf_event_open.c perf_event_open_nonverbose.c \
 	perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
-	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
-	ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
-	prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \
+	ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+	prctl-dumpable.c prctl-name.c prctl-no-args.c \
+	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
 	prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
 	prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
 	preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2348,28 +2454,32 @@
 	readdir.c readlink.c readlinkat.c readv.c reboot.c recvfrom.c \
 	recvmmsg-timeout.c recvmsg.c redirect-fds.c remap_file_pages.c \
 	rename.c renameat.c renameat2.c request_key.c \
-	restart_syscall.c rmdir.c rt_sigaction.c rt_sigpending.c \
-	rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-	run_expect_termsig.c sched_get_priority_mxx.c \
+	restart_syscall.c riscv_flush_icache.c rmdir.c rt_sigaction.c \
+	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.c run_expect_termsig.c \
+	s390_guarded_storage.c s390_guarded_storage-v.c \
+	s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+	s390_sthyi-v.c sched_get_priority_mxx.c \
 	sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
 	sched_xetparam.c sched_xetscheduler.c sched_yield.c \
 	scm_rights.c seccomp-filter.c seccomp-filter-v.c \
-	seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
-	sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-	set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-	setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-	setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-	setregid32.c setresgid.c setresgid32.c setresuid.c \
+	seccomp-strict.c seccomp_get_action_avail.c select.c \
+	select-P.c semop.c sendfile.c sendfile64.c set_mempolicy.c \
+	set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \
+	setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \
+	setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \
+	setregid.c setregid32.c setresgid.c setresgid32.c setresuid.c \
 	setresuid32.c setreuid.c setreuid32.c setrlimit.c setuid.c \
 	setuid32.c shmxt.c shutdown.c sigaction.c sigaltstack.c \
 	siginfo.c signal.c signal_receive.c signalfd4.c sigpending.c \
 	sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_linger.c \
-	so_peercred.c sock_filter-v.c socketcall.c splice.c \
-	$(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
-	statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
-	sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
-	threads-execve.c time.c timer_create.c timer_xettime.c \
+	so_peercred.c sock_filter-v.c socketcall.c \
+	sockopt-sol_netlink.c splice.c $(stack_fcall_SOURCES) \
+	$(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \
+	statfs64.c statx.c swap.c sxetmask.c symlink.c symlinkat.c \
+	sync.c sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+	tee.c threads-execve.c time.c timer_create.c timer_xettime.c \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
 	ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
 	umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
@@ -2378,16 +2488,17 @@
 	userfaultfd.c ustat.c utime.c utimensat.c utimes.c vfork-f.c \
 	vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
 	waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-	xetitimer.c xetpgid.c xetpriority.c xettimeofday.c zeroargc.c
-DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
-	access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
-	attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
-	attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
-	btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
-	chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
-	clock_nanosleep.c clock_xettime.c clone_parent.c \
-	clone_ptrace.c copy_file_range.c count-f.c creat.c \
-	delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+	xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
+	xettimeofday.c zeroargc.c
+DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
+	accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+	alarm.c answer.c attach-f-p.c attach-f-p-cmd.c \
+	attach-p-cmd-cmd.c attach-p-cmd-p.c block_reset_raise_run.c \
+	bpf.c bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c \
+	check_sigblock.c check_sigign.c chmod.c chown.c chown32.c \
+	chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
+	clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
+	creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
 	epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
 	erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
 	execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2405,9 +2516,9 @@
 	gettid.c getuid.c getuid32.c getxxid.c group_req.c inet-cmsg.c \
 	init_module.c inotify.c inotify_init1.c int_0x80.c ioctl.c \
 	ioctl_block.c ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c \
-	ioctl_evdev-v.c ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c \
-	ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c ioctl_rtc-v.c \
-	ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
+	ioctl_evdev-v.c ioctl_kvm_run.c ioctl_loop.c ioctl_loop-nv.c \
+	ioctl_loop-v.c ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c \
+	ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
 	ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
 	iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
 	ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
@@ -2417,13 +2528,13 @@
 	mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
 	mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
 	mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
-	mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
-	mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
-	msg_control-v.c msg_name.c munlockall.c nanosleep.c \
-	net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
-	net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
-	netlink_audit.c netlink_crypto.c netlink_generic.c \
-	netlink_inet_diag.c netlink_kobject_uevent.c \
+	mmsg_name-v.c modify_ldt.c mount.c move_pages.c mq.c \
+	mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+	msg_control.c msg_control-v.c msg_name.c munlockall.c \
+	nanosleep.c net-accept-connect.c net-icmp_filter.c \
+	net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+	net-yy-unix.c netlink_audit.c netlink_crypto.c \
+	netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \
 	netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
 	netlink_route.c netlink_selinux.c netlink_sock_diag.c \
 	netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
@@ -2442,13 +2553,16 @@
 	nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
 	nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
 	nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+	nsyscalls.c nsyscalls-d.c old_mmap.c old_mmap-P.c \
+	old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+	oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
 	oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
 	perf_event_open.c perf_event_open_nonverbose.c \
 	perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
-	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
-	ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
-	prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \
+	ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+	prctl-dumpable.c prctl-name.c prctl-no-args.c \
+	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
 	prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
 	prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
 	preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2462,28 +2576,32 @@
 	readdir.c readlink.c readlinkat.c readv.c reboot.c recvfrom.c \
 	recvmmsg-timeout.c recvmsg.c redirect-fds.c remap_file_pages.c \
 	rename.c renameat.c renameat2.c request_key.c \
-	restart_syscall.c rmdir.c rt_sigaction.c rt_sigpending.c \
-	rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-	run_expect_termsig.c sched_get_priority_mxx.c \
+	restart_syscall.c riscv_flush_icache.c rmdir.c rt_sigaction.c \
+	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.c run_expect_termsig.c \
+	s390_guarded_storage.c s390_guarded_storage-v.c \
+	s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+	s390_sthyi-v.c sched_get_priority_mxx.c \
 	sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
 	sched_xetparam.c sched_xetscheduler.c sched_yield.c \
 	scm_rights.c seccomp-filter.c seccomp-filter-v.c \
-	seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
-	sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-	set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-	setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-	setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-	setregid32.c setresgid.c setresgid32.c setresuid.c \
+	seccomp-strict.c seccomp_get_action_avail.c select.c \
+	select-P.c semop.c sendfile.c sendfile64.c set_mempolicy.c \
+	set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \
+	setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \
+	setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \
+	setregid.c setregid32.c setresgid.c setresgid32.c setresuid.c \
 	setresuid32.c setreuid.c setreuid32.c setrlimit.c setuid.c \
 	setuid32.c shmxt.c shutdown.c sigaction.c sigaltstack.c \
 	siginfo.c signal.c signal_receive.c signalfd4.c sigpending.c \
 	sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_linger.c \
-	so_peercred.c sock_filter-v.c socketcall.c splice.c \
-	$(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
-	statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
-	sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
-	threads-execve.c time.c timer_create.c timer_xettime.c \
+	so_peercred.c sock_filter-v.c socketcall.c \
+	sockopt-sol_netlink.c splice.c $(stack_fcall_SOURCES) \
+	$(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \
+	statfs64.c statx.c swap.c sxetmask.c symlink.c symlinkat.c \
+	sync.c sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+	tee.c threads-execve.c time.c timer_create.c timer_xettime.c \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
 	ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
 	umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
@@ -2492,7 +2610,8 @@
 	userfaultfd.c ustat.c utime.c utimensat.c utimes.c vfork-f.c \
 	vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
 	waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-	xetitimer.c xetpgid.c xetpriority.c xettimeofday.c zeroargc.c
+	xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
+	xettimeofday.c zeroargc.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -2705,7 +2824,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2793,10 +2912,13 @@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
 RANLIB = @RANLIB@
+READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SIZEOF_KERNEL_LONG_T = 4
+SIZEOF_LONG = 4
 STRIP = @STRIP@
 VALGRIND = @VALGRIND@
 VALGRIND_ENABLED = @VALGRIND_ENABLED@
@@ -2817,6 +2939,7 @@
 arch = @arch@
 arch_m32 = @arch_m32@
 arch_mx32 = @arch_mx32@
+arch_native = @arch_native@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -2824,6 +2947,8 @@
 build_os = @build_os@
 build_vendor = @build_vendor@
 builddir = @builddir@
+cc_flags_m32 = @cc_flags_m32@
+cc_flags_mx32 = @cc_flags_mx32@
 datadir = @datadir@
 datarootdir = @datarootdir@
 dl_LIBS = @dl_LIBS@
@@ -2841,6 +2966,9 @@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
+libiberty_LDFLAGS = @libiberty_LDFLAGS@
+libiberty_LIBS = @libiberty_LIBS@
 libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
 libunwind_LDFLAGS = @libunwind_LDFLAGS@
 libunwind_LIBS = @libunwind_LIBS@
@@ -2865,8 +2993,10 @@
 valgrind_tools = @valgrind_tools@
 OS = linux
 ARCH = @arch_m32@
+NATIVE_ARCH = @arch_native@
 MPERS_NAME = m32
-ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) -m32
+MPERS_CC_FLAGS = @cc_flags_m32@
+ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
 	      -I$(builddir) \
@@ -3021,6 +3151,7 @@
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_kvm_run \
   ioctl_loop \
   ioctl_mtd \
   ioctl_rtc \
@@ -3071,6 +3202,7 @@
   mmap64 \
   mmsg \
   mmsg_name \
+  modify_ldt \
   mount \
   move_pages \
   mq \
@@ -3140,9 +3272,12 @@
   nlattr_tcmsg \
   nlattr_unix_diag_msg \
   old_mmap \
+  old_mmap-P \
+  old_mmap-v-none \
   oldfstat \
   oldlstat \
   oldselect \
+  oldselect-efault \
   oldstat \
   open \
   openat \
@@ -3156,7 +3291,9 @@
   pkey_free \
   pkey_mprotect \
   poll \
+  poll-P \
   ppoll \
+  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -3199,6 +3336,7 @@
   renameat \
   renameat2 \
   request_key \
+  riscv_flush_icache \
   rmdir \
   rt_sigaction \
   rt_sigpending \
@@ -3208,6 +3346,12 @@
   rt_sigsuspend \
   rt_sigtimedwait \
   rt_tgsigqueueinfo \
+  s390_guarded_storage \
+  s390_guarded_storage-v \
+  s390_pci_mmio_read_write \
+  s390_runtime_instr \
+  s390_sthyi \
+  s390_sthyi-v \
   sched_get_priority_mxx \
   sched_rr_get_interval \
   sched_xetaffinity \
@@ -3259,6 +3403,7 @@
   so_peercred \
   sock_filter-v \
   socketcall \
+  sockopt-sol_netlink \
   splice \
   stat \
   stat64 \
@@ -3310,6 +3455,7 @@
   xattr \
   xattr-strings \
   xet_robust_list \
+  xet_thread_area_x86 \
   xetitimer \
   xetpgid \
   xetpriority \
@@ -3344,13 +3490,17 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
+	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
+	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
+
 
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
-	access.gen.test acct.gen.test add_key.gen.test \
-	adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test \
-	bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test \
-	chown32.gen.test chroot.gen.test clock.gen.test \
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
+	accept4.gen.test access.gen.test acct.gen.test \
+	add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test \
+	bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test \
+	chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test \
 	clock_adjtime.gen.test clock_nanosleep.gen.test \
 	clock_xettime.gen.test copy_file_range.gen.test creat.gen.test \
 	delete_module.gen.test dup.gen.test dup2.gen.test \
@@ -3378,46 +3528,49 @@
 	gettid.gen.test getuid32.gen.test getxxid.gen.test \
 	group_req.gen.test inet-cmsg.gen.test init_module.gen.test \
 	inotify.gen.test inotify_init1.gen.test int_0x80.gen.test \
-	ioctl_block.gen.test ioctl_evdev.gen.test \
-	ioctl_evdev-v.gen.test ioctl_loop.gen.test \
-	ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test \
+	ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test \
+	ioctl_evdev.gen.test ioctl_evdev-v.gen.test \
+	ioctl_kvm_run.gen.test ioctl_loop.gen.test \
+	ioctl_loop-nv.gen.test ioctl_loop-v.gen.test \
+	ioctl_mtd.gen.test ioctl_nsfs.gen.test ioctl_rtc.gen.test \
 	ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
 	ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
-	ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
-	iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
-	ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
-	kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \
-	kexec_load.gen.test keyctl.gen.test kill.gen.test \
-	lchown.gen.test lchown32.gen.test link.gen.test \
-	linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
-	lstat64.gen.test madvise.gen.test mbind.gen.test \
-	membarrier.gen.test memfd_create.gen.test \
-	migrate_pages.gen.test mincore.gen.test mkdir.gen.test \
-	mkdirat.gen.test mknod.gen.test mknodat.gen.test \
-	mlock.gen.test mlock2.gen.test mlockall.gen.test \
-	mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \
-	mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \
-	move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \
-	mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \
-	msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \
-	munlockall.gen.test nanosleep.gen.test \
-	net-icmp_filter.gen.test net-sockaddr.gen.test \
-	netlink_audit.gen.test netlink_crypto.gen.test \
-	netlink_generic.gen.test netlink_kobject_uevent.gen.test \
-	netlink_netfilter.gen.test netlink_protocol.gen.test \
-	netlink_route.gen.test netlink_selinux.gen.test \
-	netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \
-	nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \
-	nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \
-	nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \
-	nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \
-	nfnetlink_osf.gen.test nfnetlink_queue.gen.test \
-	nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \
-	nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \
-	nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \
-	nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
-	nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \
-	nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
+	ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test \
+	ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test \
+	ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test \
+	ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test \
+	kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test \
+	keyctl.gen.test kill.gen.test lchown.gen.test \
+	lchown32.gen.test link.gen.test linkat.gen.test \
+	lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
+	madvise.gen.test mbind.gen.test membarrier.gen.test \
+	memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
+	mkdir.gen.test mkdirat.gen.test mknod.gen.test \
+	mknodat.gen.test mlock.gen.test mlock2.gen.test \
+	mlockall.gen.test mmap64.gen.test mmsg.gen.test \
+	mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
+	modify_ldt.gen.test mount.gen.test move_pages.gen.test \
+	mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+	mq_sendrecv-write.gen.test msg_control.gen.test \
+	msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
+	nanosleep.gen.test net-icmp_filter.gen.test \
+	net-sockaddr.gen.test netlink_audit.gen.test \
+	netlink_crypto.gen.test netlink_generic.gen.test \
+	netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \
+	netlink_protocol.gen.test netlink_route.gen.test \
+	netlink_selinux.gen.test netlink_xfrm.gen.test \
+	newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test \
+	nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test \
+	nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test \
+	nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test \
+	nfnetlink_nftables.gen.test nfnetlink_osf.gen.test \
+	nfnetlink_queue.gen.test nfnetlink_ulog.gen.test \
+	nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \
+	nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \
+	nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \
+	nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \
+	nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \
+	nlattr_inet_diag_msg.gen.test \
 	nlattr_inet_diag_req_compat.gen.test \
 	nlattr_inet_diag_req_v2.gen.test \
 	nlattr_mdba_mdb_entry.gen.test \
@@ -3429,16 +3582,18 @@
 	nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \
 	nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \
 	nlattr_unix_diag_msg.gen.test old_mmap.gen.test \
-	oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \
-	open.gen.test openat.gen.test osf_utimes.gen.test \
-	pause.gen.test perf_event_open.gen.test \
+	old_mmap-P.gen.test old_mmap-v-none.gen.test oldfstat.gen.test \
+	oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test \
+	oldselect-efault.gen.test oldselect-efault-P.gen.test \
+	oldstat.gen.test open.gen.test openat.gen.test \
+	osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \
 	perf_event_open_nonverbose.gen.test \
 	perf_event_open_unabbrev.gen.test pipe2.gen.test \
 	pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
-	ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
-	preadv.gen.test preadv-pwritev.gen.test \
-	preadv2-pwritev2.gen.test printstr.gen.test \
-	printpath-umovestr.gen.test \
+	ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \
+	pread64-pwrite64.gen.test preadv.gen.test \
+	preadv-pwritev.gen.test preadv2-pwritev2.gen.test \
+	printstr.gen.test printpath-umovestr.gen.test \
 	printpath-umovestr-peekdata.gen.test \
 	printpath-umovestr-undumpable.gen.test \
 	printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test \
@@ -3451,44 +3606,48 @@
 	reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test \
 	recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
 	rename.gen.test renameat.gen.test renameat2.gen.test \
-	request_key.gen.test rmdir.gen.test rt_sigpending.gen.test \
-	rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test \
-	rt_sigreturn.gen.test rt_sigsuspend.gen.test \
-	rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
-	sched.gen.test sched_get_priority_mxx.gen.test \
-	sched_rr_get_interval.gen.test sched_xetaffinity.gen.test \
-	sched_xetattr.gen.test sched_xetparam.gen.test \
-	sched_xetscheduler.gen.test sched_yield.gen.test \
-	seccomp-filter.gen.test seccomp-filter-v.gen.test \
-	seccomp_get_action_avail.gen.test select.gen.test \
-	semop.gen.test sendfile.gen.test sendfile64.gen.test \
-	set_mempolicy.gen.test setdomainname.gen.test \
-	setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \
-	setfsuid32.gen.test setgid.gen.test setgid32.gen.test \
-	setgroups.gen.test setgroups32.gen.test sethostname.gen.test \
-	setns.gen.test setregid.gen.test setregid32.gen.test \
-	setresgid.gen.test setresgid32.gen.test setresuid.gen.test \
-	setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \
-	setrlimit.gen.test setuid.gen.test setuid32.gen.test \
-	shmxt.gen.test shutdown.gen.test sigaction.gen.test \
-	siginfo.gen.test signal.gen.test signal_receive.gen.test \
-	signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \
-	sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \
-	so_peercred.gen.test sock_filter-v.gen.test \
-	socketcall.gen.test splice.gen.test stat.gen.test \
-	stat64.gen.test statfs.gen.test statfs64.gen.test \
-	statx.gen.test swap.gen.test sxetmask.gen.test \
-	symlink.gen.test symlinkat.gen.test sync.gen.test \
-	sync_file_range.gen.test sync_file_range2.gen.test \
-	sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test \
-	timer_create.gen.test timer_xettime.gen.test \
-	timerfd_xettime.gen.test times.gen.test times-fail.gen.test \
-	trace_fstat.gen.test trace_fstatfs.gen.test \
-	trace_lstat.gen.test trace_question.gen.test \
-	trace_stat.gen.test trace_stat_like.gen.test \
-	trace_statfs.gen.test trace_statfs_like.gen.test \
-	truncate.gen.test truncate64.gen.test ugetrlimit.gen.test \
-	umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test \
+	request_key.gen.test riscv_flush_icache.gen.test \
+	rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test \
+	rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \
+	rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \
+	rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \
+	s390_guarded_storage-v.gen.test \
+	s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \
+	s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \
+	sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \
+	sched_xetaffinity.gen.test sched_xetattr.gen.test \
+	sched_xetparam.gen.test sched_xetscheduler.gen.test \
+	sched_yield.gen.test seccomp-filter.gen.test \
+	seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \
+	select.gen.test select-P.gen.test semop.gen.test \
+	sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test \
+	setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
+	setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
+	setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
+	sethostname.gen.test setns.gen.test setregid.gen.test \
+	setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
+	setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
+	setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
+	setuid32.gen.test shmxt.gen.test shutdown.gen.test \
+	sigaction.gen.test siginfo.gen.test signal.gen.test \
+	signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \
+	sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \
+	so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \
+	socketcall.gen.test sockopt-sol_netlink.gen.test \
+	splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \
+	statfs64.gen.test statx.gen.test swap.gen.test \
+	sxetmask.gen.test symlink.gen.test symlinkat.gen.test \
+	sync.gen.test sync_file_range.gen.test \
+	sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test \
+	tee.gen.test time.gen.test timer_create.gen.test \
+	timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test \
+	times-fail.gen.test trace_fstat.gen.test \
+	trace_fstatfs.gen.test trace_lstat.gen.test \
+	trace_question.gen.test trace_stat.gen.test \
+	trace_stat_like.gen.test trace_statfs.gen.test \
+	trace_statfs_like.gen.test truncate.gen.test \
+	truncate64.gen.test ugetrlimit.gen.test umask.gen.test \
+	umoven-illptr.gen.test umovestr-illptr.gen.test \
 	umovestr3.gen.test unlink.gen.test unlinkat.gen.test \
 	unshare.gen.test userfaultfd.gen.test ustat.gen.test \
 	utime.gen.test utimensat.gen.test utimes.gen.test \
@@ -3499,7 +3658,7 @@
 	xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \
 	xettimeofday.gen.test
 @USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS = 
-@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
+@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test $(am__append_1)
 DECODER_TESTS = \
 	brk.test \
 	btrfs-v.test \
@@ -3514,11 +3673,6 @@
 	futex.test \
 	getuid.test \
 	ioctl.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_loop-nv.test \
-	ioctl_nsfs.test \
-	ioctl_sock_gifconf.test \
 	ipc_msgbuf.test \
 	llseek.test \
 	lseek.test \
@@ -3530,9 +3684,11 @@
 	net.test \
 	netlink_sock_diag.test \
 	nsyscalls.test \
-	oldselect.test \
+	nsyscalls-d.test \
+	nsyscalls-nd.test \
 	personality.test \
 	pipe.test \
+	poll-P.test \
 	poll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
@@ -3551,6 +3707,7 @@
 	seccomp-strict.test \
 	sigaltstack.test \
 	sun_path.test \
+	xet_thread_area_x86.test \
 	uio.test \
 	umount.test \
 	umount2.test \
@@ -3573,6 +3730,8 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
+	filtering_fd-syntax.test \
+	filtering_syscall-syntax.test \
 	fflush.test \
 	get_regs.test \
 	interactive_block.test \
@@ -3616,10 +3775,16 @@
 XFAIL_TESTS_x32 = int_0x80.gen.test
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) STRACE_NATIVE_ARCH=$(NATIVE_ARCH) \
+			SIZEOF_KERNEL_LONG_T=$(SIZEOF_KERNEL_LONG_T) \
+			SIZEOF_LONG=$(SIZEOF_LONG) \
+			MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/strace.supp
 EXTRA_DIST = \
+	accept_compat.h \
+	attach-p-cmd.h \
 	caps-abbrev.awk \
 	caps.awk \
 	clock.in \
@@ -3635,7 +3800,6 @@
 	getresugid.c \
 	init.sh \
 	init_delete_module.h \
-	ioctl-v.sh \
 	ipc.sh \
 	ipc_msgbuf.expected \
 	ksysent.sed \
@@ -3643,8 +3807,8 @@
 	match.awk \
 	net.expected \
 	netlink_sock_diag-v.sh \
-	oldselect.expected \
 	pipe.expected \
+	print_user_desc.c \
 	process_vm_readv_writev.c \
 	pure_executables.list \
 	qual_fault-exit_group.expected \
@@ -3662,10 +3826,12 @@
 	setugid.c \
 	sigaltstack.expected \
 	sockname.c \
+	stack-fcall.h \
 	strace-C.expected \
 	strace-E.expected \
 	strace-T.expected \
 	strace-ff.expected \
+	strace-k-demangle.test \
 	strace-k.test \
 	strace-r.expected \
 	strace.supp \
@@ -3756,6 +3922,10 @@
 	@rm -f _newselect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(_newselect_OBJECTS) $(_newselect_LDADD) $(LIBS)
 
+_newselect-P$(EXEEXT): $(_newselect_P_OBJECTS) $(_newselect_P_DEPENDENCIES) $(EXTRA__newselect_P_DEPENDENCIES) 
+	@rm -f _newselect-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(_newselect_P_OBJECTS) $(_newselect_P_LDADD) $(LIBS)
+
 accept$(EXEEXT): $(accept_OBJECTS) $(accept_DEPENDENCIES) $(EXTRA_accept_DEPENDENCIES) 
 	@rm -f accept$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(accept_OBJECTS) $(accept_LDADD) $(LIBS)
@@ -4248,6 +4418,10 @@
 	@rm -f ioctl_evdev-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
 
+ioctl_kvm_run$(EXEEXT): $(ioctl_kvm_run_OBJECTS) $(ioctl_kvm_run_DEPENDENCIES) $(EXTRA_ioctl_kvm_run_DEPENDENCIES) 
+	@rm -f ioctl_kvm_run$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_kvm_run_OBJECTS) $(ioctl_kvm_run_LDADD) $(LIBS)
+
 ioctl_loop$(EXEEXT): $(ioctl_loop_OBJECTS) $(ioctl_loop_DEPENDENCIES) $(EXTRA_ioctl_loop_DEPENDENCIES) 
 	@rm -f ioctl_loop$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_loop_OBJECTS) $(ioctl_loop_LDADD) $(LIBS)
@@ -4484,6 +4658,10 @@
 	@rm -f mmsg_name-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mmsg_name_v_OBJECTS) $(mmsg_name_v_LDADD) $(LIBS)
 
+modify_ldt$(EXEEXT): $(modify_ldt_OBJECTS) $(modify_ldt_DEPENDENCIES) $(EXTRA_modify_ldt_DEPENDENCIES) 
+	@rm -f modify_ldt$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(modify_ldt_OBJECTS) $(modify_ldt_LDADD) $(LIBS)
+
 mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) $(EXTRA_mount_DEPENDENCIES) 
 	@rm -f mount$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mount_OBJECTS) $(mount_LDADD) $(LIBS)
@@ -4780,10 +4958,22 @@
 	@rm -f nsyscalls$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(nsyscalls_OBJECTS) $(nsyscalls_LDADD) $(LIBS)
 
+nsyscalls-d$(EXEEXT): $(nsyscalls_d_OBJECTS) $(nsyscalls_d_DEPENDENCIES) $(EXTRA_nsyscalls_d_DEPENDENCIES) 
+	@rm -f nsyscalls-d$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(nsyscalls_d_OBJECTS) $(nsyscalls_d_LDADD) $(LIBS)
+
 old_mmap$(EXEEXT): $(old_mmap_OBJECTS) $(old_mmap_DEPENDENCIES) $(EXTRA_old_mmap_DEPENDENCIES) 
 	@rm -f old_mmap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(old_mmap_OBJECTS) $(old_mmap_LDADD) $(LIBS)
 
+old_mmap-P$(EXEEXT): $(old_mmap_P_OBJECTS) $(old_mmap_P_DEPENDENCIES) $(EXTRA_old_mmap_P_DEPENDENCIES) 
+	@rm -f old_mmap-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(old_mmap_P_OBJECTS) $(old_mmap_P_LDADD) $(LIBS)
+
+old_mmap-v-none$(EXEEXT): $(old_mmap_v_none_OBJECTS) $(old_mmap_v_none_DEPENDENCIES) $(EXTRA_old_mmap_v_none_DEPENDENCIES) 
+	@rm -f old_mmap-v-none$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(old_mmap_v_none_OBJECTS) $(old_mmap_v_none_LDADD) $(LIBS)
+
 oldfstat$(EXEEXT): $(oldfstat_OBJECTS) $(oldfstat_DEPENDENCIES) $(EXTRA_oldfstat_DEPENDENCIES) 
 	@rm -f oldfstat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldfstat_OBJECTS) $(oldfstat_LDADD) $(LIBS)
@@ -4796,6 +4986,18 @@
 	@rm -f oldselect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldselect_OBJECTS) $(oldselect_LDADD) $(LIBS)
 
+oldselect-P$(EXEEXT): $(oldselect_P_OBJECTS) $(oldselect_P_DEPENDENCIES) $(EXTRA_oldselect_P_DEPENDENCIES) 
+	@rm -f oldselect-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_P_OBJECTS) $(oldselect_P_LDADD) $(LIBS)
+
+oldselect-efault$(EXEEXT): $(oldselect_efault_OBJECTS) $(oldselect_efault_DEPENDENCIES) $(EXTRA_oldselect_efault_DEPENDENCIES) 
+	@rm -f oldselect-efault$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_efault_OBJECTS) $(oldselect_efault_LDADD) $(LIBS)
+
+oldselect-efault-P$(EXEEXT): $(oldselect_efault_P_OBJECTS) $(oldselect_efault_P_DEPENDENCIES) $(EXTRA_oldselect_efault_P_DEPENDENCIES) 
+	@rm -f oldselect-efault-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_efault_P_OBJECTS) $(oldselect_efault_P_LDADD) $(LIBS)
+
 oldstat$(EXEEXT): $(oldstat_OBJECTS) $(oldstat_DEPENDENCIES) $(EXTRA_oldstat_DEPENDENCIES) 
 	@rm -f oldstat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldstat_OBJECTS) $(oldstat_LDADD) $(LIBS)
@@ -4860,10 +5062,18 @@
 	@rm -f poll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(poll_OBJECTS) $(poll_LDADD) $(LIBS)
 
+poll-P$(EXEEXT): $(poll_P_OBJECTS) $(poll_P_DEPENDENCIES) $(EXTRA_poll_P_DEPENDENCIES) 
+	@rm -f poll-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(poll_P_OBJECTS) $(poll_P_LDADD) $(LIBS)
+
 ppoll$(EXEEXT): $(ppoll_OBJECTS) $(ppoll_DEPENDENCIES) $(EXTRA_ppoll_DEPENDENCIES) 
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
 
+ppoll-P$(EXEEXT): $(ppoll_P_OBJECTS) $(ppoll_P_DEPENDENCIES) $(EXTRA_ppoll_P_DEPENDENCIES) 
+	@rm -f ppoll-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ppoll_P_OBJECTS) $(ppoll_P_LDADD) $(LIBS)
+
 ppoll-v$(EXEEXT): $(ppoll_v_OBJECTS) $(ppoll_v_DEPENDENCIES) $(EXTRA_ppoll_v_DEPENDENCIES) 
 	@rm -f ppoll-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_v_OBJECTS) $(ppoll_v_LDADD) $(LIBS)
@@ -5084,6 +5294,10 @@
 	@rm -f restart_syscall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(restart_syscall_OBJECTS) $(restart_syscall_LDADD) $(LIBS)
 
+riscv_flush_icache$(EXEEXT): $(riscv_flush_icache_OBJECTS) $(riscv_flush_icache_DEPENDENCIES) $(EXTRA_riscv_flush_icache_DEPENDENCIES) 
+	@rm -f riscv_flush_icache$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(riscv_flush_icache_OBJECTS) $(riscv_flush_icache_LDADD) $(LIBS)
+
 rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES) $(EXTRA_rmdir_DEPENDENCIES) 
 	@rm -f rmdir$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS)
@@ -5124,6 +5338,30 @@
 	@rm -f run_expect_termsig$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS)
 
+s390_guarded_storage$(EXEEXT): $(s390_guarded_storage_OBJECTS) $(s390_guarded_storage_DEPENDENCIES) $(EXTRA_s390_guarded_storage_DEPENDENCIES) 
+	@rm -f s390_guarded_storage$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_guarded_storage_OBJECTS) $(s390_guarded_storage_LDADD) $(LIBS)
+
+s390_guarded_storage-v$(EXEEXT): $(s390_guarded_storage_v_OBJECTS) $(s390_guarded_storage_v_DEPENDENCIES) $(EXTRA_s390_guarded_storage_v_DEPENDENCIES) 
+	@rm -f s390_guarded_storage-v$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_guarded_storage_v_OBJECTS) $(s390_guarded_storage_v_LDADD) $(LIBS)
+
+s390_pci_mmio_read_write$(EXEEXT): $(s390_pci_mmio_read_write_OBJECTS) $(s390_pci_mmio_read_write_DEPENDENCIES) $(EXTRA_s390_pci_mmio_read_write_DEPENDENCIES) 
+	@rm -f s390_pci_mmio_read_write$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_pci_mmio_read_write_OBJECTS) $(s390_pci_mmio_read_write_LDADD) $(LIBS)
+
+s390_runtime_instr$(EXEEXT): $(s390_runtime_instr_OBJECTS) $(s390_runtime_instr_DEPENDENCIES) $(EXTRA_s390_runtime_instr_DEPENDENCIES) 
+	@rm -f s390_runtime_instr$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_runtime_instr_OBJECTS) $(s390_runtime_instr_LDADD) $(LIBS)
+
+s390_sthyi$(EXEEXT): $(s390_sthyi_OBJECTS) $(s390_sthyi_DEPENDENCIES) $(EXTRA_s390_sthyi_DEPENDENCIES) 
+	@rm -f s390_sthyi$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_sthyi_OBJECTS) $(s390_sthyi_LDADD) $(LIBS)
+
+s390_sthyi-v$(EXEEXT): $(s390_sthyi_v_OBJECTS) $(s390_sthyi_v_DEPENDENCIES) $(EXTRA_s390_sthyi_v_DEPENDENCIES) 
+	@rm -f s390_sthyi-v$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_sthyi_v_OBJECTS) $(s390_sthyi_v_LDADD) $(LIBS)
+
 sched_get_priority_mxx$(EXEEXT): $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_DEPENDENCIES) $(EXTRA_sched_get_priority_mxx_DEPENDENCIES) 
 	@rm -f sched_get_priority_mxx$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_LDADD) $(LIBS)
@@ -5176,6 +5414,10 @@
 	@rm -f select$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
 
+select-P$(EXEEXT): $(select_P_OBJECTS) $(select_P_DEPENDENCIES) $(EXTRA_select_P_DEPENDENCIES) 
+	@rm -f select-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(select_P_OBJECTS) $(select_P_LDADD) $(LIBS)
+
 semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIES) 
 	@rm -f semop$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
@@ -5360,6 +5602,10 @@
 	@rm -f socketcall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(socketcall_OBJECTS) $(socketcall_LDADD) $(LIBS)
 
+sockopt-sol_netlink$(EXEEXT): $(sockopt_sol_netlink_OBJECTS) $(sockopt_sol_netlink_DEPENDENCIES) $(EXTRA_sockopt_sol_netlink_DEPENDENCIES) 
+	@rm -f sockopt-sol_netlink$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sockopt_sol_netlink_OBJECTS) $(sockopt_sol_netlink_LDADD) $(LIBS)
+
 splice$(EXEEXT): $(splice_OBJECTS) $(splice_DEPENDENCIES) $(EXTRA_splice_DEPENDENCIES) 
 	@rm -f splice$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(splice_OBJECTS) $(splice_LDADD) $(LIBS)
@@ -5368,6 +5614,10 @@
 	@rm -f stack-fcall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
 
+stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
+	@rm -f stack-fcall-mangled$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
+
 stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES) 
 	@rm -f stat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS)
@@ -5596,6 +5846,10 @@
 	@rm -f xet_robust_list$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
 
+xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) 
+	@rm -f xet_thread_area_x86$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS)
+
 xetitimer$(EXEEXT): $(xetitimer_OBJECTS) $(xetitimer_DEPENDENCIES) $(EXTRA_xetitimer_DEPENDENCIES) 
 	@rm -f xetitimer$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(xetitimer_OBJECTS) $(xetitimer_LDADD) $(LIBS)
@@ -5622,6 +5876,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@
@@ -5746,6 +6001,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-nv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop.Po@am__quote@
@@ -5831,6 +6087,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modify_ldt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq.Po@am__quote@
@@ -5904,10 +6161,16 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls-d.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap-v-none.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldfstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldlstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
@@ -5924,7 +6187,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_free.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_mprotect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-arg2-intptr.Po@am__quote@
@@ -5981,6 +6246,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renameat2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/request_key.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/restart_syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/riscv_flush_icache.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
@@ -5991,6 +6257,12 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_pci_mmio_read_write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_runtime_instr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@
@@ -6003,6 +6275,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
@@ -6050,11 +6323,17 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sock_filter-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockopt-sol_netlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-0.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
@@ -6113,6 +6392,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@
@@ -7094,6 +7374,9 @@
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/_newselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7385,21 +7668,36 @@
 $(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_dm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_kvm_run.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_loop-nv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7415,6 +7713,9 @@
 $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7538,6 +7839,9 @@
 $(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/modify_ldt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7733,12 +8037,30 @@
 $(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/old_mmap-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap-v-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/oldselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7778,6 +8100,9 @@
 $(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ppoll-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7889,6 +8214,9 @@
 $(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/riscv_flush_icache.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7913,6 +8241,24 @@
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_guarded_storage-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_pci_mmio_read_write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_runtime_instr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7949,6 +8295,9 @@
 $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -8072,6 +8421,9 @@
 $(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/sockopt-sol_netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
diff --git a/tests-m32/_newselect-P.c b/tests-m32/_newselect-P.c
new file mode 100644
index 0000000..561fbfe
--- /dev/null
+++ b/tests-m32/_newselect-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "_newselect.c"
diff --git a/tests-m32/_newselect-P.gen.test b/tests-m32/_newselect-P.gen.test
new file mode 100755
index 0000000..9c4247a
--- /dev/null
+++ b/tests-m32/_newselect-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect-P -e trace=_newselect -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=_newselect -P /dev/full 9>>/dev/full
diff --git a/tests-m32/_newselect.gen.test b/tests-m32/_newselect.gen.test
index 490abe4..8e4d5f2 100755
--- a/tests-m32/_newselect.gen.test
+++ b/tests-m32/_newselect.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/accept.c b/tests-m32/accept.c
index 8d42ba1..40b45db 100644
--- a/tests-m32/accept.c
+++ b/tests-m32/accept.c
@@ -2,6 +2,7 @@
  * Check decoding of accept syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,9 +28,34 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef TEST_SYSCALL_NAME
-# define TEST_SYSCALL_NAME accept
-#endif
+#include "tests.h"
+
+#include <unistd.h>
+
+#include <asm/unistd.h>
+
+#if defined __NR_accept
+
+# ifndef TEST_SYSCALL_NAME
+#  define TEST_SYSCALL_NAME do_accept
+
+#  ifndef TEST_SYSCALL_STR
+#   define TEST_SYSCALL_STR "accept"
+#  endif
+
+int do_accept(int sockfd, void *addr, void *addrlen)
+{
+	return syscall(__NR_accept, sockfd, addr, addrlen);
+}
+# endif /* !TEST_SYSCALL_NAME */
+
+#else /* !__NR_accept */
+
+# ifndef TEST_SYSCALL_NAME
+#  define TEST_SYSCALL_NAME accept
+# endif
+
+#endif /* __NR_accept */
 
 #define TEST_SYSCALL_PREPARE connect_un()
 static void connect_un(void);
diff --git a/tests-m32/accept.gen.test b/tests-m32/accept.gen.test
index 3ebba3b..45d9239 100755
--- a/tests-m32/accept.gen.test
+++ b/tests-m32/accept.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-m32/accept4.gen.test b/tests-m32/accept4.gen.test
index 5bd7fe6..7119970 100755
--- a/tests-m32/accept4.gen.test
+++ b/tests-m32/accept4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests-m32/accept_compat.h b/tests-m32/accept_compat.h
new file mode 100644
index 0000000..c45b255
--- /dev/null
+++ b/tests-m32/accept_compat.h
@@ -0,0 +1,25 @@
+#ifndef _STRACE_TESTS_ACCEPT_COMPAT_H_
+#define _STRACE_TESTS_ACCEPT_COMPAT_H_
+
+#include <unistd.h>
+#include <sys/socket.h>
+#include <asm/unistd.h>
+
+#if defined __NR_socketcall && defined __sparc__
+/*
+ * Work around the fact that
+ * - glibc >= 2.26 uses accept4 syscall to implement accept() call on sparc;
+ * - accept syscall had not been wired up on sparc until v4.4-rc8~4^2~1.
+ */
+static inline int
+do_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
+{
+	const long args[] = { sockfd, (long) addr, (long) addrlen };
+
+	return syscall(__NR_socketcall, 5, args);
+}
+#else
+# define do_accept accept
+#endif
+
+#endif /* !_STRACE_TESTS_ACCEPT_COMPAT_H_ */
diff --git a/tests-m32/acct.gen.test b/tests-m32/acct.gen.test
index fa14e85..4a98dd4 100755
--- a/tests-m32/acct.gen.test
+++ b/tests-m32/acct.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/adjtimex.gen.test b/tests-m32/adjtimex.gen.test
index 8db59f2..e602443 100755
--- a/tests-m32/adjtimex.gen.test
+++ b/tests-m32/adjtimex.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-m32/alarm.gen.test b/tests-m32/alarm.gen.test
index ba1dea8..25982e1 100755
--- a/tests-m32/alarm.gen.test
+++ b/tests-m32/alarm.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/attach-p-cmd-cmd.c b/tests-m32/attach-p-cmd-cmd.c
index d0f824e..70e3a2d 100644
--- a/tests-m32/attach-p-cmd-cmd.c
+++ b/tests-m32/attach-p-cmd-cmd.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of attach-p-cmd strace test.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,19 +32,41 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include "attach-p-cmd.h"
 
-int
-main(void)
+static void
+write_pidfile(const pid_t pid)
 {
-	static const char lockdir[] = "attach-p-cmd.test-lock";
+	FILE *fp = fopen(pidfile, "w");
+	if (!fp)
+		perror_msg_and_fail("fopen: %s", pidfile);
+
+	if (fprintf(fp, "%d", pid) < 0)
+		perror_msg_and_fail("fprintf: %s", pidfile);
+
+	if (fclose(fp))
+		perror_msg_and_fail("fclose: %s", pidfile);
+}
+
+static void
+wait_for_peer_invocation(void)
+{
 	/* wait for the lock directory to be created by peer */
 	while (rmdir(lockdir)) {
 		if (ENOENT != errno)
 			perror_msg_and_fail("rmdir: %s", lockdir);
 	}
+}
+
+int
+main(void)
+{
+	const pid_t pid = getpid();
+	write_pidfile(pid);
+
+	wait_for_peer_invocation();
 
 	static const char dir[] = "attach-p-cmd.test cmd";
-	pid_t pid = getpid();
 	int rc = chdir(dir);
 
 	printf("%-5d chdir(\"%s\") = %s\n"
diff --git a/tests-m32/attach-p-cmd-p.c b/tests-m32/attach-p-cmd-p.c
index 254d19a..843db95 100644
--- a/tests-m32/attach-p-cmd-p.c
+++ b/tests-m32/attach-p-cmd-p.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of attach-p-cmd strace test.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,27 +33,14 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
+#include <time.h>
 #include <unistd.h>
+#include "attach-p-cmd.h"
 
 static void
-handler(int signo)
+wait_for_peer_invocation(void)
 {
-}
-
-int
-main(void)
-{
-	const struct sigaction act = { .sa_handler = handler };
-	if (sigaction(SIGALRM, &act, NULL))
-		perror_msg_and_fail("sigaction");
-
-	sigset_t mask = {};
-	sigaddset(&mask, SIGALRM);
-	if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
-		perror_msg_and_fail("sigprocmask");
-
-	static const char lockdir[] = "attach-p-cmd.test-lock";
-	/* create a lock directory */
+	/* create the lock directory */
 	if (mkdir(lockdir, 0700))
 		perror_msg_and_fail("mkdir: %s", lockdir);
 
@@ -63,21 +50,51 @@
 			perror_msg_and_fail("mkdir: %s", lockdir);
 	}
 
-	/* remove the lock directory */
+	/* cleanup the lock directory */
 	if (rmdir(lockdir))
 		perror_msg_and_fail("rmdir: %s", lockdir);
+}
 
-	alarm(1);
-	pause();
+static void
+wait_for_peer_termination(void)
+{
+	FILE *fp = fopen(pidfile, "r");
+	if (!fp)
+		perror_msg_and_fail("fopen: %s", pidfile);
+
+	pid_t pid;
+	if (fscanf(fp, "%d", &pid) < 0)
+		perror_msg_and_fail("fscanf: %s", pidfile);
+	if (pid < 0)
+		error_msg_and_fail("pid = %d", pid);
+
+	if (fclose(fp))
+		perror_msg_and_fail("fclose: %s", pidfile);
+
+	if (unlink(pidfile))
+		perror_msg_and_fail("unlink: %s", pidfile);
+
+	while (kill(pid, 0) == 0)
+		;
+}
+
+int
+main(void)
+{
+	wait_for_peer_invocation();
+	wait_for_peer_termination();
+
+	static const struct timespec ts = { .tv_nsec = 123456789 };
+	if (nanosleep(&ts, NULL))
+		perror_msg_and_fail("nanosleep");
 
 	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"
+	printf("%-5d chdir(\"%s\") = %s\n"
 	       "%-5d +++ exited with 0 +++\n",
-	       pid, pid, dir, rc, errno2name(), pid);
+	       pid, dir, sprintrc(rc), pid);
 
 	return 0;
 }
diff --git a/tests-m32/attach-p-cmd.h b/tests-m32/attach-p-cmd.h
new file mode 100644
index 0000000..e04af38
--- /dev/null
+++ b/tests-m32/attach-p-cmd.h
@@ -0,0 +1,2 @@
+static const char lockdir[] = "attach-p-cmd.test-lock";
+static const char pidfile[] = "attach-p-cmd.test-pid";
diff --git a/tests-m32/bpf.c b/tests-m32/bpf.c
index bec30f8..3f963fa 100644
--- a/tests-m32/bpf.c
+++ b/tests-m32/bpf.c
@@ -34,8 +34,11 @@
  && (defined HAVE_UNION_BPF_ATTR_ATTACH_FLAGS	\
   || defined HAVE_UNION_BPF_ATTR_BPF_FD		\
   || defined HAVE_UNION_BPF_ATTR_FLAGS		\
-  || defined HAVE_UNION_BPF_ATTR_INNER_MAP_FD	\
-  || defined HAVE_UNION_BPF_ATTR_PROG_FLAGS)
+  || defined HAVE_UNION_BPF_ATTR_INFO_INFO	\
+  || defined HAVE_UNION_BPF_ATTR_NEXT_ID	\
+  || defined HAVE_UNION_BPF_ATTR_NUMA_NODE	\
+  || defined HAVE_UNION_BPF_ATTR_PROG_FLAGS	\
+  || defined HAVE_UNION_BPF_ATTR_TEST_DURATION)
 
 # include <stddef.h>
 # include <stdio.h>
@@ -43,6 +46,7 @@
 # include <string.h>
 # include <unistd.h>
 # include <linux/bpf.h>
+# include "print_fields.h"
 
 static const kernel_ulong_t long_bits = (kernel_ulong_t) 0xfacefeed00000000ULL;
 static const char *errstr;
@@ -183,18 +187,22 @@
 		  init_ ## cmd_ ## _attr, print_ ## cmd_ ## _attr)	\
 	/* End of TEST_BPF definition. */
 
-# ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+#define DEF_BPF_INIT_FIRST(cmd_, field_, value_)			\
+	static unsigned int						\
+	init_ ## cmd_ ## _first(const unsigned long eop)		\
+	{								\
+		static const union bpf_attr attr = { .field_ = value_ };\
+		static const unsigned int offset = sizeof(attr.field_);	\
+		const unsigned long addr = eop - offset;		\
+									\
+		memcpy((void *) addr, &attr.field_, offset);		\
+		return offset;						\
+	}								\
+	/* End of DEF_INIT_FIRST definition. */
 
-static unsigned int
-init_BPF_MAP_CREATE_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .map_type = 2 };
-	static const unsigned int offset = sizeof(attr.map_type);
-	const unsigned long addr = eop - offset;
+# ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
 
-	memcpy((void *) addr, &attr.map_type, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_MAP_CREATE, map_type, 2)
 
 static void
 print_BPF_MAP_CREATE_first(const unsigned long addr)
@@ -211,11 +219,12 @@
 		.key_size = 4,
 		.value_size = 8,
 		.max_entries = 256,
-		.map_flags = 1,
-		.inner_map_fd = -1
+		.map_flags = 7,
+		.inner_map_fd = -1,
+		.numa_node = 42
 	};
 	static const unsigned int offset =
-		offsetofend(union bpf_attr, inner_map_fd);
+		offsetofend(union bpf_attr, numa_node);
 	const unsigned long addr = eop - offset;
 
 	memcpy((void *) addr, &attr, offset);
@@ -227,23 +236,15 @@
 {
 	printf("map_type=BPF_MAP_TYPE_HASH, key_size=4"
 	       ", value_size=8, max_entries=256"
-	       ", map_flags=BPF_F_NO_PREALLOC, inner_map_fd=-1");
+	       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NO_COMMON_LRU"
+	       "|BPF_F_NUMA_NODE, inner_map_fd=-1, numa_node=42");
 }
 
-# endif /* HAVE_UNION_BPF_ATTR_INNER_MAP_FD */
+# endif /* HAVE_UNION_BPF_ATTR_NUMA_NODE */
 
 # ifdef HAVE_UNION_BPF_ATTR_FLAGS
 
-static unsigned int
-init_BPF_MAP_LOOKUP_ELEM_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .map_fd = -1 };
-	static const unsigned int offset = sizeof(attr.map_fd);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.map_fd, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_MAP_LOOKUP_ELEM, map_fd, -1)
 
 static void
 print_BPF_MAP_LOOKUP_ELEM_first(const unsigned long addr)
@@ -367,16 +368,7 @@
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_FLAGS
 
-static unsigned int
-init_BPF_PROG_LOAD_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .prog_type = 1 };
-	static const unsigned int offset = sizeof(attr.prog_type);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.prog_type, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_PROG_LOAD, prog_type, 1)
 
 static void
 print_BPF_PROG_LOAD_first(const unsigned long addr)
@@ -435,16 +427,7 @@
  */
 # ifdef HAVE_UNION_BPF_ATTR_BPF_FD
 
-static unsigned int
-init_BPF_OBJ_PIN_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = {};
-	static const unsigned int offset = sizeof(attr.pathname);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.pathname, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_OBJ_PIN, pathname, 0)
 
 static void
 print_BPF_OBJ_PIN_first(const unsigned long addr)
@@ -484,16 +467,7 @@
 /* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 
-static unsigned int
-init_BPF_PROG_ATTACH_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .target_fd = -1 };
-	static const unsigned int offset = sizeof(attr.target_fd);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.target_fd, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_PROG_ATTACH, target_fd, -1)
 
 static void
 print_BPF_PROG_ATTACH_first(const unsigned long addr)
@@ -559,13 +533,171 @@
 
 # endif /* HAVE_UNION_BPF_ATTR_ATTACH_FLAGS */
 
+/* BPF_PROG_TEST_RUN command appears in kernel 4.12. */
+# ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
+
+DEF_BPF_INIT_FIRST(BPF_PROG_TEST_RUN, test.prog_fd, -1)
+
+static void
+print_BPF_PROG_TEST_RUN_first(const unsigned long addr)
+{
+	printf("test={prog_fd=-1, retval=0, data_size_in=0, data_size_out=0"
+	       ", data_in=0, data_out=0, repeat=0, duration=0}");
+}
+
+static const union bpf_attr sample_BPF_PROG_TEST_RUN_attr = {
+	.test = {
+		.prog_fd = -1,
+		.retval = 0xfac1fed2,
+		.data_size_in = 0xfac3fed4,
+		.data_size_out = 0xfac5fed6,
+		.data_in = (uint64_t) 0xfacef11dbadc2ded,
+		.data_out = (uint64_t) 0xfacef33dbadc4ded,
+		.repeat = 0xfac7fed8,
+		.duration = 0xfac9feda
+	}
+};
+static unsigned int
+init_BPF_PROG_TEST_RUN_attr(const unsigned long eop)
+{
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, test);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &sample_BPF_PROG_TEST_RUN_attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_PROG_TEST_RUN_attr(const unsigned long addr)
+{
+	PRINT_FIELD_D("test={", sample_BPF_PROG_TEST_RUN_attr.test, prog_fd);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, retval);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_size_in);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_size_out);
+	PRINT_FIELD_X(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_in);
+	PRINT_FIELD_X(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_out);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, repeat);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, duration);
+	printf("}");
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_TEST_DURATION */
+
+# ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
+
+DEF_BPF_INIT_FIRST(BPF_PROG_GET_NEXT_ID, start_id, 0xdeadbeef)
+
+static void
+print_BPF_PROG_GET_NEXT_ID_first(const unsigned long addr)
+{
+	printf("start_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static unsigned int
+init_BPF_PROG_GET_NEXT_ID_attr(const unsigned long eop)
+{
+	static const union bpf_attr attr = {
+		.start_id = 0xbadc0ded,
+		.next_id = 0xcafef00d
+	};
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, next_id);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_PROG_GET_NEXT_ID_attr(const unsigned long addr)
+{
+	printf("start_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+#  define init_BPF_MAP_GET_NEXT_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define print_BPF_MAP_GET_NEXT_ID_first print_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_MAP_GET_NEXT_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+#  define print_BPF_MAP_GET_NEXT_ID_attr print_BPF_PROG_GET_NEXT_ID_attr
+
+#  define init_BPF_PROG_GET_FD_BY_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_PROG_GET_FD_BY_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+
+static void
+print_BPF_PROG_GET_FD_BY_ID_first(const unsigned long addr)
+{
+	printf("prog_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static void
+print_BPF_PROG_GET_FD_BY_ID_attr(const unsigned long addr)
+{
+	printf("prog_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+#  define init_BPF_MAP_GET_FD_BY_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_MAP_GET_FD_BY_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+
+static void
+print_BPF_MAP_GET_FD_BY_ID_first(const unsigned long addr)
+{
+	printf("map_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static void
+print_BPF_MAP_GET_FD_BY_ID_attr(const unsigned long addr)
+{
+	printf("map_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_NEXT_ID */
+
+# ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
+
+DEF_BPF_INIT_FIRST(BPF_OBJ_GET_INFO_BY_FD, info.bpf_fd, -1)
+
+static void
+print_BPF_OBJ_GET_INFO_BY_FD_first(const unsigned long addr)
+{
+	printf("info={bpf_fd=-1, info_len=0, info=0}");
+}
+
+static const union bpf_attr sample_BPF_OBJ_GET_INFO_BY_FD_attr = {
+	.info = {
+		.bpf_fd = -1,
+		.info_len = 0xdeadbeef,
+		.info = (uint64_t) 0xfacefeedbadc0ded
+	}
+};
+static unsigned int
+init_BPF_OBJ_GET_INFO_BY_FD_attr(const unsigned long eop)
+{
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, info);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &sample_BPF_OBJ_GET_INFO_BY_FD_attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_OBJ_GET_INFO_BY_FD_attr(const unsigned long addr)
+{
+	PRINT_FIELD_D("info={", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, bpf_fd);
+	PRINT_FIELD_U(", ", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, info_len);
+	PRINT_FIELD_X(", ", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, info);
+	printf("}");
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_INFO_INFO */
+
 int
 main(void)
 {
 	page_size = get_page_size();
 	end_of_page = (unsigned long) tail_alloc(1) + 1;
 
-# ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+# ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
 	TEST_BPF(BPF_MAP_CREATE);
 # endif
 
@@ -590,6 +722,21 @@
 	TEST_BPF(BPF_PROG_DETACH);
 # endif
 
+# ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
+	TEST_BPF(BPF_PROG_TEST_RUN);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
+	TEST_BPF(BPF_PROG_GET_NEXT_ID);
+	TEST_BPF(BPF_MAP_GET_NEXT_ID);
+	TEST_BPF(BPF_PROG_GET_FD_BY_ID);
+	TEST_BPF(BPF_MAP_GET_FD_BY_ID);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
+	TEST_BPF(BPF_OBJ_GET_INFO_BY_FD);
+# endif
+
 	sys_bpf(0xfacefeed, end_of_page, 40);
 	printf("bpf(0xfacefeed /* BPF_??? */, %#lx, 40) = %s\n",
 	       end_of_page, errstr);
diff --git a/tests-m32/bpf.gen.test b/tests-m32/bpf.gen.test
index 7ee9e7f..1391d6b 100755
--- a/tests-m32/bpf.gen.test
+++ b/tests-m32/bpf.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/btrfs.gen.test b/tests-m32/btrfs.gen.test
index a7118ef..3976cf5 100755
--- a/tests-m32/btrfs.gen.test
+++ b/tests-m32/btrfs.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/chmod.gen.test b/tests-m32/chmod.gen.test
index 438665a..4033088 100755
--- a/tests-m32/chmod.gen.test
+++ b/tests-m32/chmod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/chown.gen.test b/tests-m32/chown.gen.test
index 46889a1..87cc0f0 100755
--- a/tests-m32/chown.gen.test
+++ b/tests-m32/chown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/chown32.gen.test b/tests-m32/chown32.gen.test
index f0f603e..8d9d891 100755
--- a/tests-m32/chown32.gen.test
+++ b/tests-m32/chown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests-m32/chroot.gen.test b/tests-m32/chroot.gen.test
index 6ea81dd..40eb55b 100755
--- a/tests-m32/chroot.gen.test
+++ b/tests-m32/chroot.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/clock_adjtime.gen.test b/tests-m32/clock_adjtime.gen.test
index 735e3af..22d5dbc 100755
--- a/tests-m32/clock_adjtime.gen.test
+++ b/tests-m32/clock_adjtime.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests-m32/copy_file_range.gen.test b/tests-m32/copy_file_range.gen.test
index 4f3063b..e90c6c1 100755
--- a/tests-m32/copy_file_range.gen.test
+++ b/tests-m32/copy_file_range.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/creat.gen.test b/tests-m32/creat.gen.test
index d2e47d3..baff916 100755
--- a/tests-m32/creat.gen.test
+++ b/tests-m32/creat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/delete_module.gen.test b/tests-m32/delete_module.gen.test
index 4e4c671..028515f 100755
--- a/tests-m32/delete_module.gen.test
+++ b/tests-m32/delete_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
+run_strace_match_diff -a23 
diff --git a/tests-m32/dup.gen.test b/tests-m32/dup.gen.test
index e5729c0..e559cdb 100755
--- a/tests-m32/dup.gen.test
+++ b/tests-m32/dup.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-m32/dup2.gen.test b/tests-m32/dup2.gen.test
index fd1f5c9..6a6d2f5 100755
--- a/tests-m32/dup2.gen.test
+++ b/tests-m32/dup2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests-m32/dup3.gen.test b/tests-m32/dup3.gen.test
index d6ff7d7..776b9a7 100755
--- a/tests-m32/dup3.gen.test
+++ b/tests-m32/dup3.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/epoll_create.gen.test b/tests-m32/epoll_create.gen.test
index 841da6d..277a5aa 100755
--- a/tests-m32/epoll_create.gen.test
+++ b/tests-m32/epoll_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/epoll_create1.gen.test b/tests-m32/epoll_create1.gen.test
index c5e62a0..c510c32 100755
--- a/tests-m32/epoll_create1.gen.test
+++ b/tests-m32/epoll_create1.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/epoll_ctl.gen.test b/tests-m32/epoll_ctl.gen.test
index 68c96eb..dba65f7 100755
--- a/tests-m32/epoll_ctl.gen.test
+++ b/tests-m32/epoll_ctl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/epoll_pwait.gen.test b/tests-m32/epoll_pwait.gen.test
index c558efc..f98e2b5 100755
--- a/tests-m32/epoll_pwait.gen.test
+++ b/tests-m32/epoll_pwait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/epoll_wait.gen.test b/tests-m32/epoll_wait.gen.test
index 024cc0f..d90fbeb 100755
--- a/tests-m32/epoll_wait.gen.test
+++ b/tests-m32/epoll_wait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
+run_strace_match_diff -a26 
diff --git a/tests-m32/error_msg.c b/tests-m32/error_msg.c
index 498a882..9cb3e80 100644
--- a/tests-m32/error_msg.c
+++ b/tests-m32/error_msg.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,6 +26,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define perror_msg_and_fail perror_msg_and_fail
+#define error_msg_and_fail error_msg_and_fail
+
 #include "tests.h"
 #include <errno.h>
 #include <stdarg.h>
diff --git a/tests-m32/execveat.gen.test b/tests-m32/execveat.gen.test
index c92e4d6..180b829 100755
--- a/tests-m32/execveat.gen.test
+++ b/tests-m32/execveat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/fadvise64_64.gen.test b/tests-m32/fadvise64_64.gen.test
index 5f95b3c..e46bf81 100755
--- a/tests-m32/fadvise64_64.gen.test
+++ b/tests-m32/fadvise64_64.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test ); do not edit.
+set -- 
 . "${srcdir=.}/fadvise64.test"
diff --git a/tests-m32/fallocate.gen.test b/tests-m32/fallocate.gen.test
index c6cfdb7..3bb5bbf 100755
--- a/tests-m32/fallocate.gen.test
+++ b/tests-m32/fallocate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-m32/fanotify_init.gen.test b/tests-m32/fanotify_init.gen.test
index ee519e6..69807a7 100755
--- a/tests-m32/fanotify_init.gen.test
+++ b/tests-m32/fanotify_init.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/fanotify_mark.gen.test b/tests-m32/fanotify_mark.gen.test
index ce16a55..4651260 100755
--- a/tests-m32/fanotify_mark.gen.test
+++ b/tests-m32/fanotify_mark.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 
diff --git a/tests-m32/fchdir.gen.test b/tests-m32/fchdir.gen.test
index c80e141..a352a21 100755
--- a/tests-m32/fchdir.gen.test
+++ b/tests-m32/fchdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests-m32/fchmod.gen.test b/tests-m32/fchmod.gen.test
index f327fb7..828c9b5 100755
--- a/tests-m32/fchmod.gen.test
+++ b/tests-m32/fchmod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-m32/fchmodat.gen.test b/tests-m32/fchmodat.gen.test
index 9ee1f01..3646185 100755
--- a/tests-m32/fchmodat.gen.test
+++ b/tests-m32/fchmodat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/fchown.gen.test b/tests-m32/fchown.gen.test
index 63ee545..ec7f7c5 100755
--- a/tests-m32/fchown.gen.test
+++ b/tests-m32/fchown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests-m32/fchown32.gen.test b/tests-m32/fchown32.gen.test
index d8167dd..1670583 100755
--- a/tests-m32/fchown32.gen.test
+++ b/tests-m32/fchown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-m32/fchownat.gen.test b/tests-m32/fchownat.gen.test
index 2ec9e32..54bd043 100755
--- a/tests-m32/fchownat.gen.test
+++ b/tests-m32/fchownat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/fcntl.gen.test b/tests-m32/fcntl.gen.test
index 83a1af4..9de26c0 100755
--- a/tests-m32/fcntl.gen.test
+++ b/tests-m32/fcntl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-m32/fcntl64.gen.test b/tests-m32/fcntl64.gen.test
index 9d3b98a..fee01b6 100755
--- a/tests-m32/fcntl64.gen.test
+++ b/tests-m32/fcntl64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-m32/fdatasync.gen.test b/tests-m32/fdatasync.gen.test
index 0dbea8a..9aa5f2a 100755
--- a/tests-m32/fdatasync.gen.test
+++ b/tests-m32/fdatasync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-m32/file_ioctl.gen.test b/tests-m32/file_ioctl.gen.test
index f7e58f5..0abab81 100755
--- a/tests-m32/file_ioctl.gen.test
+++ b/tests-m32/file_ioctl.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/m4/st_bpf.m4 b/tests-m32/filtering_fd-syntax.test
old mode 100644
new mode 100755
similarity index 62%
rename from m4/st_bpf.m4
rename to tests-m32/filtering_fd-syntax.test
index ae44d28..4f4e9c7
--- a/m4/st_bpf.m4
+++ b/tests-m32/filtering_fd-syntax.test
@@ -1,6 +1,9 @@
-#!/usr/bin/m4
+#!/bin/sh
 #
-# Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Check descriptor set parsing syntax.
+#
+# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -25,26 +28,33 @@
 # (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_CHECK_UNION_BPF_ATTR],[
+. "${srcdir=.}/syntax.sh"
 
-pushdef([ATTR_NAME], translit([$1], [a-z], [A-Z]))
-pushdef([attr_text], [union bpf_attr.][$1])
-pushdef([have_attr], [st_cv_member_union_bpf_attr_][$1])
+check_fd_qualify()
+{
+	check_e "invalid descriptor '$1'" -e"read=$2"
+	check_e "invalid descriptor '$1'" -e "read=$2"
+	check_e "invalid descriptor '$1'" -e"write=$2"
+	check_e "invalid descriptor '$1'" -e "write=$2"
+}
 
-AC_CACHE_CHECK([whether attr_text initialization works],
-	       [have_attr],
-	       [AC_COMPILE_IFELSE(
-		[AC_LANG_PROGRAM([[#include <linux/bpf.h>]],
-				 [union bpf_attr a = { .$1 = 0 };])],
-		[have_attr=yes],
-		[have_attr=no])])
+for arg in '' , ,, ,,, ; do
+	check_fd_qualify "$arg" "$arg"
+	check_fd_qualify "!$arg" "!$arg"
+done
 
-if test $have_attr = yes; then
-	AC_DEFINE([HAVE_UNION_BPF_ATTR_]ATTR_NAME, [1],
-		  [Define to 1 if attr_text initialization works])
-fi
+for arg in -1 -42 \
+	   not_fd \
+	   2147483648 \
+	   4294967296 \
+	   ; do
+	check_fd_qualify "$arg" "$arg"
+	check_fd_qualify "$arg" "1,$arg"
+	check_fd_qualify "$arg" "$arg,1"
+	check_fd_qualify "$arg" "!$arg"
+done
 
-popdef([have_attr])
-popdef([attr_text])
-popdef([ATTR_NAME])
-])
+for arg in ! all none; do
+	check_fd_qualify "$arg" "1,$arg"
+	check_fd_qualify "!$arg" "1,!$arg"
+done
diff --git a/tests-m32/filtering_syscall-syntax.test b/tests-m32/filtering_syscall-syntax.test
new file mode 100755
index 0000000..8fda8dc
--- /dev/null
+++ b/tests-m32/filtering_syscall-syntax.test
@@ -0,0 +1,121 @@
+#!/bin/sh
+#
+# Check syscall set parsing syntax.
+#
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@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.
+
+. "${srcdir=.}/syntax.sh"
+
+check_syscall()
+{
+	[ -z "$2" ] || check_e "invalid system call '$1'" -e"$2"
+
+	check_e "invalid system call '$1'" -e "$2"
+	check_e "invalid system call '$1'" -etrace="$2"
+	check_e "invalid system call '$1'" -e trace="$2"
+
+	check_e "invalid system call '$1'" -eabbrev="$2"
+	check_e "invalid system call '$1'" -e abbrev="$2"
+
+	check_e "invalid system call '$1'" -everbose="$2"
+	check_e "invalid system call '$1'" -e verbose="$2"
+
+	check_e "invalid system call '$1'" -eraw="$2"
+	check_e "invalid system call '$1'" -e raw="$2"
+
+	check_e "invalid system call '$1'" -einject="$2"
+	check_e "invalid system call '$1'" -e inject="$2"
+	check_e "invalid system call '$1'" -einject="$2:"
+	check_e "invalid system call '$1'" -einject="$2::"
+	check_e "invalid system call '$1'" -einject="$2:::"
+	check_e "invalid system call '$1'" -e inject="$2:"
+	check_e "invalid system call '$1'" -e inject="$2::"
+	check_e "invalid system call '$1'" -e inject="$2:::"
+	check_e "invalid system call '$1'" -einject="$2:when=3"
+	check_e "invalid system call '$1'" -e inject="$2:when=3"
+
+	check_e "invalid system call '$1'" -efault="$2"
+	check_e "invalid system call '$1'" -e fault="$2"
+	check_e "invalid system call '$1'" -efault="$2:"
+	check_e "invalid system call '$1'" -efault="$2::"
+	check_e "invalid system call '$1'" -efault="$2:::"
+	check_e "invalid system call '$1'" -e fault="$2:"
+	check_e "invalid system call '$1'" -e fault="$2::"
+	check_e "invalid system call '$1'" -e fault="$2:::"
+	check_e "invalid system call '$1'" -efault="$2:when=4"
+	check_e "invalid system call '$1'" -e fault="$2:when=4"
+}
+
+for arg in '' , ,, ,,, ; do
+	check_syscall "$arg" "$arg"
+	check_syscall "!$arg" "!$arg"
+done
+
+for arg in -1 -2 -3 -4 -5 \
+	   invalid_syscall_name \
+	   0x 0y \
+	   32767 \
+	   2147483647 \
+	   2147483648 \
+	   4294967295 \
+	   4294967296 \
+	   /non_syscall \
+	   % %not_a_class \
+	   ; do
+	check_syscall "$arg" "$arg"
+	check_syscall "$arg" "!$arg"
+	check_syscall "$arg" "1,$arg"
+done
+
+for arg in '!chdir' none all; do
+	check_syscall "$arg" "1,$arg"
+done
+
+# invalid syscall, multiple syscalls
+for arg in %desc \
+	   %file \
+	   %memory \
+	   %process \
+	   %network \
+	   chdir \
+	   1 \
+	   ?32767 \
+	   ?invalid \
+	   ?%not_a_class \
+	   ?/non_syscall \
+	   ; do
+	check_syscall nonsense "$arg,nonsense"
+	check_syscall nonsense "!$arg,nonsense"
+	check_syscall nonsense "nonsense,$arg"
+	check_syscall nonsense "!nonsense,$arg"
+done
+
+check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
+check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
+check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
+check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
+check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
diff --git a/tests-m32/finit_module.gen.test b/tests-m32/finit_module.gen.test
index f2e56af..5ffafd3 100755
--- a/tests-m32/finit_module.gen.test
+++ b/tests-m32/finit_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-m32/flock.gen.test b/tests-m32/flock.gen.test
index dff2bac..67a9d8c 100755
--- a/tests-m32/flock.gen.test
+++ b/tests-m32/flock.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-m32/fstatfs.gen.test b/tests-m32/fstatfs.gen.test
index 3dd04d8..27deaf3 100755
--- a/tests-m32/fstatfs.gen.test
+++ b/tests-m32/fstatfs.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-m32/fstatfs64.gen.test b/tests-m32/fstatfs64.gen.test
index b9527be..d693726 100755
--- a/tests-m32/fstatfs64.gen.test
+++ b/tests-m32/fstatfs64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/fsync.gen.test b/tests-m32/fsync.gen.test
index 921e804..5e72cc2 100755
--- a/tests-m32/fsync.gen.test
+++ b/tests-m32/fsync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/ftruncate.gen.test b/tests-m32/ftruncate.gen.test
index 709a851..6e5926b 100755
--- a/tests-m32/ftruncate.gen.test
+++ b/tests-m32/ftruncate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/ftruncate64.gen.test b/tests-m32/ftruncate64.gen.test
index 4cb1fe7..d910f61 100755
--- a/tests-m32/ftruncate64.gen.test
+++ b/tests-m32/ftruncate64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-m32/futex.c b/tests-m32/futex.c
index e1dbcb7..0c095b8 100644
--- a/tests-m32/futex.c
+++ b/tests-m32/futex.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,10 +57,11 @@
 # include "xlat/futexwakecmps.h"
 
 void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
-	int *uaddr2, unsigned long val3, int rc)
+	int *uaddr2, unsigned long val3, int rc, const char *func, int line)
 {
-	perror_msg_and_fail("futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
-		uaddr, op, (unsigned) val, timeout, uaddr, (unsigned) val3, rc);
+	perror_msg_and_fail("%s:%d: futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
+		func, line, uaddr, op, (unsigned) val, timeout, uaddr,
+		(unsigned) val3, rc);
 }
 
 # define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
@@ -77,7 +78,7 @@
 		if (!(check)) \
 			futex_error((uaddr), (op), (val), \
 				(unsigned long) (timeout), (int *) (uaddr2), \
-				(val3), rc); \
+				(val3), rc, __func__, __LINE__); \
 	} while (0)
 
 # define CHECK_FUTEX_ENOSYS(uaddr, op, val, timeout, uaddr2, val3, check) \
@@ -151,14 +152,20 @@
 	} while (0)
 
 /* Value which differs from one stored in int *val */
-# define VAL     ((unsigned long) 0xbadda7a0facefeedLLU)
-# define VAL_PR  ((unsigned) VAL)
+# define VAL      ((unsigned long) 0xbadda7a0facefeedLLU)
+# define VAL_PR   ((unsigned) VAL)
 
-# define VAL2    ((unsigned long) 0xbadda7a0ca7b100dLLU)
-# define VAL2_PR ((unsigned) VAL2)
+# define VALP     ((unsigned long) 0xbadda7a01acefeedLLU)
+# define VALP_PR  ((unsigned) VALP)
 
-# define VAL3    ((unsigned long) 0xbadda7a09caffee1LLU)
-# define VAL3_PR ((unsigned) VAL3)
+# define VAL2     ((unsigned long) 0xbadda7a0ca7b100dLLU)
+# define VAL2_PR  ((unsigned) VAL2)
+
+# define VAL2P    ((unsigned long) 0xbadda7a07a7b100dLLU)
+# define VAL2P_PR ((unsigned) VAL2P)
+
+# define VAL3     ((unsigned long) 0xbadda7a09caffee1LLU)
+# define VAL3_PR  ((unsigned) VAL3)
 
 int
 main(int argc, char *argv[])
@@ -418,16 +425,26 @@
 
 	/* Trying to re-queue some processes but there's nothing to re-queue */
 	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VAL, VAL2, uaddr2, VAL3,
-		(rc == 0));
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VALP, VAL2P, uaddr2, VAL3,
+		(rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
+		uaddr, VALP_PR, VAL2P_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));
+		uaddr2, VAL3, (rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
 
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_REQUEUE, VALP,
+		VAL2P, uaddr2, VAL3, (rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, sprintrc(rc));
+
 	CHECK_INVALID_CLOCKRT(FUTEX_REQUEUE, ARG3 | ARG4 | ARG5, "%u", "%u",
 		"%#lx");
 
@@ -444,22 +461,38 @@
 
 	/* Comparison re-queue with wrong val value */
 	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, VAL3,
-		(rc == -1) && (errno == EAGAIN));
+		(rc == -1) && (errno == EAGAIN || errno == EINVAL));
 	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, VAL3_PR, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VALP, VAL2P, uaddr2, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, VAL3_PR, sprintrc(rc));
+
 	/* Successful comparison re-queue */
 	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, *uaddr,
-		(rc == 0));
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VALP, VAL2P, uaddr2, *uaddr,
+		(rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_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));
+		VAL2, uaddr2, *uaddr,
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %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, VALP,
+		VAL2P, uaddr2, *uaddr, (rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, *uaddr, sprintrc(rc));
+
 	CHECK_INVALID_CLOCKRT(FUTEX_CMP_REQUEUE, ARG3 | ARG4 | ARG5 | ARG6,
 		"%u", "%u", "%#lx", "%u");
 
diff --git a/tests-m32/futimesat.gen.test b/tests-m32/futimesat.gen.test
index c3add8c..80d7a8b 100755
--- a/tests-m32/futimesat.gen.test
+++ b/tests-m32/futimesat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/gen_tests.am b/tests-m32/gen_tests.am
index 71e0013..29d8c64 100644
--- a/tests-m32/gen_tests.am
+++ b/tests-m32/gen_tests.am
@@ -1,9 +1,12 @@
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_kvm_run.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nsfs.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
 
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/_newselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -295,21 +298,36 @@
 $(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_dm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_kvm_run.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_loop-nv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -325,6 +343,9 @@
 $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -448,6 +469,9 @@
 $(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/modify_ldt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -643,12 +667,30 @@
 $(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/old_mmap-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap-v-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/oldselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -688,6 +730,9 @@
 $(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ppoll-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -799,6 +844,9 @@
 $(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/riscv_flush_icache.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -823,6 +871,24 @@
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_guarded_storage-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_pci_mmio_read_write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_runtime_instr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -859,6 +925,9 @@
 $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -982,6 +1051,9 @@
 $(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/sockopt-sol_netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
diff --git a/tests-m32/gen_tests.in b/tests-m32/gen_tests.in
index 091bbe5..ea33892 100644
--- a/tests-m32/gen_tests.in
+++ b/tests-m32/gen_tests.in
@@ -1,6 +1,6 @@
 # Input for gen_tests.sh
 #
-# Copyright (c) 2017 The strace developers.
+# Copyright (c) 2017-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -26,6 +26,7 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 _newselect
+_newselect-P	 -e trace=_newselect -P /dev/full 9>>/dev/full
 accept	-a22
 accept4	-a37
 access	-a30 -P access_sample
@@ -123,16 +124,22 @@
 inotify_init1	-a27
 int_0x80	-a11 -e trace=getgid32
 ioctl_block	+ioctl.test
+ioctl_dm	+ioctl.test -s9
+ioctl_dm-v	+ioctl.test -v -s9
 ioctl_evdev	+ioctl.test
-ioctl_evdev-v	+ioctl-v.sh
+ioctl_evdev-v	+ioctl.test -v
+ioctl_kvm_run	+ioctl.test -a36 -y
 ioctl_loop	+ioctl.test
-ioctl_loop-v	+ioctl-v.sh
+ioctl_loop-nv	+ioctl.test -a22 -e verbose=none
+ioctl_loop-v	+ioctl.test -v
 ioctl_mtd	+ioctl.test
+ioctl_nsfs	+ioctl.test -esignal=none
 ioctl_rtc	+ioctl.test
-ioctl_rtc-v	+ioctl-v.sh
+ioctl_rtc-v	+ioctl.test -v
 ioctl_scsi	+ioctl.test
 ioctl_sg_io_v3	+ioctl.test
 ioctl_sg_io_v4	+ioctl.test
+ioctl_sock_gifconf	+ioctl.test -a28 -s1
 ioctl_uffdio	+ioctl.test
 ioctl_v4l2	+ioctl.test
 ioperm	-a27
@@ -174,6 +181,7 @@
 mmsg-silent	-a25 -e verbose=none -e trace=sendmmsg,recvmmsg
 mmsg_name	-a25 -e trace=sendmmsg,recvmmsg
 mmsg_name-v	-v -a25 -e trace=sendmmsg,recvmmsg
+modify_ldt	-a23
 mount
 move_pages	-s3
 mq	-a32 -e trace=mq_getsetattr,mq_open,mq_unlink
@@ -239,11 +247,17 @@
 nlattr_tcmsg			+netlink_sock_diag.test
 nlattr_unix_diag_msg		+netlink_sock_diag.test
 old_mmap	-a11 -e trace=mmap
+old_mmap-P	-e trace=mmap -P "/dev/full" 9>>/dev/full
+old_mmap-v-none	-a11 -e trace=mmap -e verbose=none
 oldfstat	-a18 -v -P stat.sample
 oldlstat	-a32 -v -P stat.sample -P /dev/full
+oldselect	-a13 -e trace=select
+oldselect-P	-a13 -e trace=select -P /dev/full 9>>/dev/full
+oldselect-efault	-a13 -e trace=select
+oldselect-efault-P	-a13 -e trace=select -P /dev/full 9>>/dev/full
 oldstat	-a32 -v -P stat.sample -P /dev/full
 open	-a30 -P $NAME.sample
-openat	-P $NAME.sample
+openat	-a36 -P $NAME.sample
 osf_utimes	-a21
 pause	-a8 -esignal=none
 perf_event_open	-a1
@@ -254,6 +268,7 @@
 pkey_free	-a13
 pkey_mprotect	-a37
 ppoll	-s2
+ppoll-P	-s2 -e trace=ppoll -P /dev/full 9>>/dev/full
 ppoll-v	-v -s2 -e trace=ppoll
 pread64-pwrite64	-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
 preadv	-a21
@@ -281,7 +296,7 @@
 readdir	-a16
 readlink	-xx
 readlinkat	-xx
-reboot
+reboot		-s 256
 recvfrom	-a35
 recvmmsg-timeout	-a25 -e trace=recvmmsg
 recvmsg	-eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
@@ -291,6 +306,7 @@
 renameat
 renameat2
 request_key	-a33 -s12
+riscv_flush_icache	-a34
 rmdir	-a22
 rt_sigpending	-a20
 rt_sigprocmask
@@ -299,6 +315,12 @@
 rt_sigsuspend	-a20 -esignal=none
 rt_sigtimedwait	-a38
 rt_tgsigqueueinfo	-esignal=none
+s390_guarded_storage	-a32
+s390_guarded_storage-v	-e trace=s390_guarded_storage -a32 -v
+s390_pci_mmio_read_write	-e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
+s390_runtime_instr	-a50
+s390_sthyi	-a47
+s390_sthyi-v	-e trace=s390_sthyi -a47 -v
 sched	test_trace_expr times -e/sched
 sched_get_priority_mxx	-a33 -e trace=sched_get_priority_min,sched_get_priority_max
 sched_rr_get_interval	-a31
@@ -311,6 +333,7 @@
 seccomp-filter-v	-v -e trace=seccomp
 seccomp_get_action_avail	-e trace=seccomp
 select	-a36
+select-P	-a36 -e trace=select -P /dev/full 9>>/dev/full
 semop	-a32 -e trace=semop,semtimedop
 sendfile	-a27
 sendfile64	-a29
@@ -352,6 +375,7 @@
 so_peercred	-e trace=getsockopt
 sock_filter-v	-v -e trace=getsockopt,setsockopt
 socketcall	-a20
+sockopt-sol_netlink	-e trace=getsockopt,setsockopt
 splice
 stat	-a32 -v -P stat.sample -P /dev/full
 stat64	-a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/gen_tests.sh b/tests-m32/gen_tests.sh
index b062436..b41983e 100755
--- a/tests-m32/gen_tests.sh
+++ b/tests-m32/gen_tests.sh
@@ -1,6 +1,7 @@
 #!/bin/sh -efu
 #
 # Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 
 names=
 
-while read -r name args; do {
+while read -r name arg0 args; do {
 	[ -n "${name###*}" ] || continue
 	if [ -z "$match" ]; then
 		names="$names $name"
@@ -65,13 +66,14 @@
 
 	hdr="\
 #!/bin/sh -efu
-# Generated by $0 from $input ($name $args); do not edit."
+# Generated by $0 from $input ($name $arg0 $args); do not edit."
 
-	case "$args" in
+	case "$arg0" in
 		+*)
 		cat <<-EOF
 		$hdr
-		. "\${srcdir=.}/${args#+}"
+		set -- $args
+		. "\${srcdir=.}/${arg0#+}"
 		EOF
 		;;
 
@@ -79,7 +81,7 @@
 		cat <<-EOF
 		$hdr
 		. "\${srcdir=.}/init.sh"
-		run_strace_match_diff $args
+		run_strace_match_diff $arg0 $args
 		EOF
 		;;
 
@@ -87,7 +89,7 @@
 		cat <<-EOF
 		$hdr
 		. "\${srcdir=.}/init.sh"
-		$args
+		$arg0 $args
 		EOF
 		;;
 	esac > "$output"
diff --git a/tests-m32/get_regs.test b/tests-m32/get_regs.test
index c673fe9..eb69137 100755
--- a/tests-m32/get_regs.test
+++ b/tests-m32/get_regs.test
@@ -36,7 +36,7 @@
 run_strace -qq -esignal=none -eraw=all -etrace=none ../gettid > /dev/null
 
 run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > less' \
-	-- ${STRACE##* } -o "$LOG" $args > /dev/null
+	-- "$STRACE_EXE" -o "$LOG" $args > /dev/null
 
 [ "$(cat less)" -gt 0 ] ||
 	fail_ "$STRACE $args failed to catch any ptrace syscalls"
@@ -44,7 +44,7 @@
 run_strace -qq -esignal=none -eraw=all -etrace=all ../gettid > /dev/null
 
 run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > more' \
-	-- ${STRACE##* } -o "$LOG" $args > /dev/null
+	-- "$STRACE_EXE" -o "$LOG" $args > /dev/null
 
 [ "$(cat more)" -gt 0 ] ||
 	fail_ "$STRACE $args failed to catch any ptrace syscalls"
diff --git a/tests-m32/getcpu.gen.test b/tests-m32/getcpu.gen.test
index 44d9a4b..ae38aaa 100755
--- a/tests-m32/getcpu.gen.test
+++ b/tests-m32/getcpu.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-m32/getcwd.c b/tests-m32/getcwd.c
index 0c32f8d..2020df4 100644
--- a/tests-m32/getcwd.c
+++ b/tests-m32/getcwd.c
@@ -4,9 +4,9 @@
 
 #ifdef __NR_getcwd
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 
 int
 main(void)
diff --git a/tests-m32/getcwd.gen.test b/tests-m32/getcwd.gen.test
index af2ff08..f783a5b 100755
--- a/tests-m32/getcwd.gen.test
+++ b/tests-m32/getcwd.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-m32/getegid.gen.test b/tests-m32/getegid.gen.test
index d6fecc2..ddf8fa9 100755
--- a/tests-m32/getegid.gen.test
+++ b/tests-m32/getegid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getegid32.gen.test b/tests-m32/getegid32.gen.test
index 38c4a4b..a773f56 100755
--- a/tests-m32/getegid32.gen.test
+++ b/tests-m32/getegid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/geteuid.gen.test b/tests-m32/geteuid.gen.test
index 9e8c12f..c7da2aa 100755
--- a/tests-m32/geteuid.gen.test
+++ b/tests-m32/geteuid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/geteuid32.gen.test b/tests-m32/geteuid32.gen.test
index 5b78331..75c3f12 100755
--- a/tests-m32/geteuid32.gen.test
+++ b/tests-m32/geteuid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgid.gen.test b/tests-m32/getgid.gen.test
index 5a87aee..fc6ac3b 100755
--- a/tests-m32/getgid.gen.test
+++ b/tests-m32/getgid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgid32.gen.test b/tests-m32/getgid32.gen.test
index 05e2d70..b3a8756 100755
--- a/tests-m32/getgid32.gen.test
+++ b/tests-m32/getgid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgroups.gen.test b/tests-m32/getgroups.gen.test
index 48b09be..ae196d0 100755
--- a/tests-m32/getgroups.gen.test
+++ b/tests-m32/getgroups.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/getgroups32.gen.test b/tests-m32/getgroups32.gen.test
index 74637d0..54b71d5 100755
--- a/tests-m32/getgroups32.gen.test
+++ b/tests-m32/getgroups32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-m32/getpeername.gen.test b/tests-m32/getpeername.gen.test
index 66fb0a9..020583a 100755
--- a/tests-m32/getpeername.gen.test
+++ b/tests-m32/getpeername.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/getpgrp.gen.test b/tests-m32/getpgrp.gen.test
index 1ec48e9..26989cd 100755
--- a/tests-m32/getpgrp.gen.test
+++ b/tests-m32/getpgrp.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/getpid.gen.test b/tests-m32/getpid.gen.test
index 4691774..2a3eb1c 100755
--- a/tests-m32/getpid.gen.test
+++ b/tests-m32/getpid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a9
+run_strace_match_diff -a9 
diff --git a/tests-m32/getppid.gen.test b/tests-m32/getppid.gen.test
index 52116a0..655b0b7 100755
--- a/tests-m32/getppid.gen.test
+++ b/tests-m32/getppid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/getresgid.gen.test b/tests-m32/getresgid.gen.test
index f53bccc..dc32c62 100755
--- a/tests-m32/getresgid.gen.test
+++ b/tests-m32/getresgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-m32/getresgid32.gen.test b/tests-m32/getresgid32.gen.test
index 5f00506..0ee2829 100755
--- a/tests-m32/getresgid32.gen.test
+++ b/tests-m32/getresgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/getresuid.gen.test b/tests-m32/getresuid.gen.test
index e947a94..b0f478c 100755
--- a/tests-m32/getresuid.gen.test
+++ b/tests-m32/getresuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-m32/getresuid32.gen.test b/tests-m32/getresuid32.gen.test
index b088a22..1b2f232 100755
--- a/tests-m32/getresuid32.gen.test
+++ b/tests-m32/getresuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/getrlimit.gen.test b/tests-m32/getrlimit.gen.test
index b97c176..08daf2d 100755
--- a/tests-m32/getrlimit.gen.test
+++ b/tests-m32/getrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/getrusage.gen.test b/tests-m32/getrusage.gen.test
index c4fb182..161818a 100755
--- a/tests-m32/getrusage.gen.test
+++ b/tests-m32/getrusage.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -v
+run_strace_match_diff -v 
diff --git a/tests-m32/getsid.gen.test b/tests-m32/getsid.gen.test
index 123f177..2b9084a 100755
--- a/tests-m32/getsid.gen.test
+++ b/tests-m32/getsid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/getsockname.gen.test b/tests-m32/getsockname.gen.test
index cd40d3e..64cdeea 100755
--- a/tests-m32/getsockname.gen.test
+++ b/tests-m32/getsockname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/gettid.gen.test b/tests-m32/gettid.gen.test
index 1ceaa53..f5ad317 100755
--- a/tests-m32/gettid.gen.test
+++ b/tests-m32/gettid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a9
+run_strace_match_diff -a9 
diff --git a/tests-m32/getuid32.gen.test b/tests-m32/getuid32.gen.test
index ac0d0ad..e81eb06 100755
--- a/tests-m32/getuid32.gen.test
+++ b/tests-m32/getuid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-m32/group_req.c b/tests-m32/group_req.c
index 946fe5c..eb56cb7 100644
--- a/tests-m32/group_req.c
+++ b/tests-m32/group_req.c
@@ -2,6 +2,7 @@
  * Check decoding of MCAST_JOIN_GROUP/MCAST_LEAVE_GROUP.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,9 +34,9 @@
 
 #if defined MCAST_JOIN_GROUP && defined MCAST_LEAVE_GROUP
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
 
diff --git a/tests-m32/init_module.gen.test b/tests-m32/init_module.gen.test
index 8948e2e..b6961be 100755
--- a/tests-m32/init_module.gen.test
+++ b/tests-m32/init_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/inode_of_sockfd.c b/tests-m32/inode_of_sockfd.c
index b227f30..6a523c7 100644
--- a/tests-m32/inode_of_sockfd.c
+++ b/tests-m32/inode_of_sockfd.c
@@ -2,6 +2,7 @@
  * This file is part of strace test suite.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,11 +30,11 @@
 
 #include "tests.h"
 #include <assert.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 unsigned long
 inode_of_sockfd(const int fd)
diff --git a/tests-m32/inotify_init1.gen.test b/tests-m32/inotify_init1.gen.test
index d847b50..a1060c5 100755
--- a/tests-m32/inotify_init1.gen.test
+++ b/tests-m32/inotify_init1.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/ioctl-v.sh b/tests-m32/ioctl-v.sh
deleted file mode 100755
index be89671..0000000
--- a/tests-m32/ioctl-v.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -v -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl.c b/tests-m32/ioctl.c
index 3c666b0..af5f9ba 100644
--- a/tests-m32/ioctl.c
+++ b/tests-m32/ioctl.c
@@ -86,8 +86,13 @@
 	       " = -1 EBADF (%m)\n", &data);
 
 	(void) ioctl(-1, _IOR('M', 13, int), &data);
+# ifdef HAVE_STRUCT_MTD_WRITE_REQ
 	printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, [MTD_OTP_OFF])"
 	       " = -1 EBADF (%m)\n");
+# else
+	printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, %p)"
+	       " = -1 EBADF (%m)\n", &data);
+# endif
 
 	(void) ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), (kernel_ulong_t) -1ULL);
 	printf("ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), %#lx)"
diff --git a/tests-m32/ioctl.test b/tests-m32/ioctl.test
index 1eb469e..cbbadc8 100755
--- a/tests-m32/ioctl.test
+++ b/tests-m32/ioctl.test
@@ -6,6 +6,6 @@
 
 check_prog grep
 run_prog > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
+run_strace -a16 -eioctl "$@" $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl_block.gen.test b/tests-m32/ioctl_block.gen.test
index 0ffec6f..8b2c3df 100755
--- a/tests-m32/ioctl_block.gen.test
+++ b/tests-m32/ioctl_block.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_dm-v.gen.test b/tests-m32/ioctl_dm-v.gen.test
new file mode 100755
index 0000000..66fa585
--- /dev/null
+++ b/tests-m32/ioctl_dm-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_dm-v +ioctl.test -v -s9); do not edit.
+set -- -v -s9
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_dm-v.test b/tests-m32/ioctl_dm-v.test
deleted file mode 100755
index eed37c2..0000000
--- a/tests-m32/ioctl_dm-v.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check unabbreviated decoding of DM* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -s9 -veioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl_dm.c b/tests-m32/ioctl_dm.c
index 1e831df..bbdc00c 100644
--- a/tests-m32/ioctl_dm.c
+++ b/tests-m32/ioctl_dm.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Mikulas Patocka <mpatocka@redhat.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -143,7 +143,7 @@
 	ptr->length       = dts_length_base + dts_length_step * id;
 	ptr->status       = dts_status_base + dts_status_step * id;
 
-	strncpy(ptr->target_type, str129 +
+	memcpy(ptr->target_type, str129 +
 		id % (sizeof(str129) - sizeof(ptr->target_type)),
 		id % (sizeof(ptr->target_type) + 1));
 	if (id % (sizeof(ptr->target_type) + 1) < sizeof(ptr->target_type))
@@ -252,8 +252,8 @@
 
 	/* Unterminated name/uuid */
 	init_s(dm_arg, min_sizeof_dm_ioctl, 0);
-	strncpy(dm_arg->name, str129, sizeof(dm_arg->name));
-	strncpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
+	memcpy(dm_arg->name, str129, sizeof(dm_arg->name));
+	memcpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
 	ioctl(-1, DM_VERSION, dm_arg);
 	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=%zu, "
 	       "dev=makedev(18, 52), name=\"%.127s\"..., uuid=\"%.128s\"..., "
@@ -511,7 +511,7 @@
 					 target##id_next) - \
 				offsetof(struct dm_table_open_test, \
 					 target##id); \
-			strncpy(dm_arg_open3->param##id, str129 + id * 2, id); \
+			memcpy(dm_arg_open3->param##id, str129 + id * 2, id); \
 			dm_arg_open3->param##id[id] = '\0'; \
 		} while (0)
 	#define PRINT_DM_TARGET(id) \
diff --git a/tests-m32/ioctl_dm.gen.test b/tests-m32/ioctl_dm.gen.test
new file mode 100755
index 0000000..b60c717
--- /dev/null
+++ b/tests-m32/ioctl_dm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_dm +ioctl.test -s9); do not edit.
+set -- -s9
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_dm.test b/tests-m32/ioctl_dm.test
deleted file mode 100755
index e9cca03..0000000
--- a/tests-m32/ioctl_dm.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of DM* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -s9 -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl_evdev-v.gen.test b/tests-m32/ioctl_evdev-v.gen.test
index fc7e2f0..bf74ef4 100755
--- a/tests-m32/ioctl_evdev-v.gen.test
+++ b/tests-m32/ioctl_evdev-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev.gen.test b/tests-m32/ioctl_evdev.gen.test
index 26f0a28..68a43f7 100755
--- a/tests-m32/ioctl_evdev.gen.test
+++ b/tests-m32/ioctl_evdev.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_kvm_run.c b/tests-m32/ioctl_kvm_run.c
new file mode 100644
index 0000000..1794614
--- /dev/null
+++ b/tests-m32/ioctl_kvm_run.c
@@ -0,0 +1,242 @@
+/*
+ * Check decoding of KVM_* commands of ioctl syscall using /dev/kvm API.
+ * Based on kvmtest.c from https://lwn.net/Articles/658512/
+ *
+ * kvmtest.c author: Josh Triplett <josh@joshtriplett.org>
+ * Copyright (c) 2015 Intel Corporation
+ * Copyright (c) 2017-2018 The strace developers.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "tests.h"
+
+#if defined HAVE_LINUX_KVM_H				\
+ && defined HAVE_STRUCT_KVM_REGS			\
+ && defined HAVE_STRUCT_KVM_SREGS			\
+ && defined HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION	\
+ &&(defined __x86_64__ || defined __i386__)
+
+# include <fcntl.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <sys/mman.h>
+# include <linux/kvm.h>
+
+static int
+kvm_ioctl(int fd, unsigned long cmd, const char *cmd_str, void *arg)
+{
+	int rc = ioctl(fd, cmd, arg);
+	if (rc < 0)
+		perror_msg_and_skip("%s", cmd_str);
+	return rc;
+}
+
+#define KVM_IOCTL(fd_, cmd_, arg_)	\
+	kvm_ioctl((fd_), (cmd_), #cmd_, (arg_))
+
+static const char dev[] = "/dev/kvm";
+static const char vm_dev[] = "anon_inode:kvm-vm";
+static const char vcpu_dev[] = "anon_inode:kvm-vcpu";
+static size_t page_size;
+
+extern const char code[];
+extern const unsigned short code_size;
+
+__asm__(
+	".type code, @object		\n"
+	"code:				\n"
+	"	mov $0xd80003f8, %edx	\n"
+	"	mov $'\n', %al		\n"
+	"	out %al, (%dx)		\n"
+	"	hlt			\n"
+	".size code, . - code		\n"
+	".type code_size, @object	\n"
+	"code_size:			\n"
+	"	.short . - code		\n"
+	".size code_size, . - code_size	\n"
+	);
+
+
+static void
+run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
+	void *const mem)
+{
+	/* Initialize CS to point at 0, via a read-modify-write of sregs. */
+	struct kvm_sregs sregs;
+	KVM_IOCTL(vcpu_fd, KVM_GET_SREGS, &sregs);
+	printf("ioctl(%d<%s>, KVM_GET_SREGS, {cs={base=%#jx, limit=%u, selector=%u"
+	       ", type=%u, present=%u, dpl=%u, db=%u, s=%u, l=%u, g=%u, avl=%u}"
+	       ", ...}) = 0\n", vcpu_fd, vcpu_dev, (uintmax_t) sregs.cs.base,
+	       sregs.cs.limit, sregs.cs.selector, sregs.cs.type,
+	       sregs.cs.present, sregs.cs.dpl, sregs.cs.db, sregs.cs.s,
+	       sregs.cs.l, sregs.cs.g, sregs.cs.avl);
+
+	sregs.cs.base = 0;
+	sregs.cs.selector = 0;
+	KVM_IOCTL(vcpu_fd, KVM_SET_SREGS, &sregs);
+	printf("ioctl(%d<%s>, KVM_SET_SREGS, {cs={base=%#jx, limit=%u"
+	       ", selector=%u, type=%u, present=%u, dpl=%u, db=%u, s=%u"
+	       ", l=%u, g=%u, avl=%u}, ...}) = 0\n",
+	       vcpu_fd, vcpu_dev, (uintmax_t) sregs.cs.base,
+	       sregs.cs.limit, sregs.cs.selector, sregs.cs.type,
+	       sregs.cs.present, sregs.cs.dpl, sregs.cs.db, sregs.cs.s,
+	       sregs.cs.l, sregs.cs.g, sregs.cs.avl);
+
+	/*
+	 * Initialize registers: instruction pointer for our code, addends,
+	 * and initial flags required by x86 architecture.
+	 */
+	struct kvm_regs regs = {
+		.rip = page_size,
+		.rax = 2,
+		.rbx = 2,
+		.rflags = 0x2,
+	};
+	KVM_IOCTL(vcpu_fd, KVM_SET_REGS, &regs);
+	printf("ioctl(%d<%s>, KVM_SET_REGS, {rax=%#jx, ..."
+	       ", rsp=%#jx, rbp=%#jx, ..., rip=%#jx, rflags=%#jx}) = 0\n",
+	       vcpu_fd, vcpu_dev, (uintmax_t) regs.rax,
+	       (uintmax_t) regs.rsp, (uintmax_t) regs.rbp,
+	       (uintmax_t) regs.rip, (uintmax_t) regs.rflags);
+
+	/* Copy the code */
+	memcpy(mem, code, code_size);
+
+	const char *p = "\n";
+
+	/* Repeatedly run code and handle VM exits. */
+	for (;;) {
+		KVM_IOCTL(vcpu_fd, KVM_RUN, NULL);
+		printf("ioctl(%d<%s>, KVM_RUN, 0) = 0\n", vcpu_fd, vcpu_dev);
+
+		switch (run->exit_reason) {
+		case KVM_EXIT_HLT:
+			if (p)
+				error_msg_and_fail("premature KVM_EXIT_HLT");
+			return;
+		case KVM_EXIT_IO:
+			if (run->io.direction == KVM_EXIT_IO_OUT
+			    && run->io.size == 1
+			    && run->io.port == 0x03f8
+			    && run->io.count == 1
+			    && run->io.data_offset < mmap_size
+			    && p && *p == ((char *) run)[run->io.data_offset])
+				p = NULL;
+			else
+				error_msg_and_fail("unhandled KVM_EXIT_IO");
+			break;
+		case KVM_EXIT_MMIO:
+			error_msg_and_fail("Got an unexpected MMIO exit:"
+					   " phys_addr %#llx,"
+					   " data %02x %02x %02x %02x"
+						" %02x %02x %02x %02x,"
+					   " len %u, is_write %hhu",
+					   (unsigned long long) run->mmio.phys_addr,
+					   run->mmio.data[0], run->mmio.data[1],
+					   run->mmio.data[2], run->mmio.data[3],
+					   run->mmio.data[4], run->mmio.data[5],
+					   run->mmio.data[6], run->mmio.data[7],
+					   run->mmio.len, run->mmio.is_write);
+
+		default:
+			error_msg_and_fail("exit_reason = %#x",
+					   run->exit_reason);
+		}
+	}
+}
+
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	int kvm = open(dev, O_RDWR);
+	if (kvm < 0)
+		perror_msg_and_skip("open: %s", dev);
+
+	/* Make sure we have the stable version of the API */
+	int ret = KVM_IOCTL(kvm, KVM_GET_API_VERSION, 0);
+	if (ret != KVM_API_VERSION)
+		error_msg_and_skip("KVM_GET_API_VERSION returned %d"
+				   ", KVM_API_VERSION is %d",
+				   kvm, KVM_API_VERSION);
+	printf("ioctl(%d<%s>, KVM_GET_API_VERSION, 0) = %d\n",
+	       kvm, dev, ret);
+
+	int vm_fd = KVM_IOCTL(kvm, KVM_CREATE_VM, 0);
+	printf("ioctl(%d<%s>, KVM_CREATE_VM, 0) = %d<%s>\n",
+	       kvm, dev, vm_fd, vm_dev);
+
+	/* Allocate one aligned page of guest memory to hold the code. */
+	page_size = get_page_size();
+	void *const mem = mmap(NULL, page_size, PROT_READ | PROT_WRITE,
+				  MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+	if (mem == MAP_FAILED)
+		perror_msg_and_fail("mmap page");
+
+	/* Map it to the second page frame (to avoid the real-mode IDT at 0). */
+	struct kvm_userspace_memory_region region = {
+		.slot = 0,
+		.guest_phys_addr = page_size,
+		.memory_size = page_size,
+		.userspace_addr = (uintptr_t) mem,
+	};
+	KVM_IOCTL(vm_fd, KVM_SET_USER_MEMORY_REGION, &region);
+	printf("ioctl(%d<%s>, KVM_SET_USER_MEMORY_REGION"
+	       ", {slot=0, flags=0, guest_phys_addr=%#lx, memory_size=%lu"
+	       ", userspace_addr=%p}) = 0\n", vm_fd, vm_dev,
+	       (unsigned long) page_size, (unsigned long) page_size, mem);
+
+	int vcpu_fd = KVM_IOCTL(vm_fd, KVM_CREATE_VCPU, NULL);
+	printf("ioctl(%d<%s>, KVM_CREATE_VCPU, 0) = %d<%s>\n",
+	       vm_fd, vm_dev, vcpu_fd, vcpu_dev);
+
+	/* Map the shared kvm_run structure and following data. */
+	ret = KVM_IOCTL(kvm, KVM_GET_VCPU_MMAP_SIZE, NULL);
+	struct kvm_run *run;
+	if (ret < (int) sizeof(*run))
+		error_msg_and_fail("KVM_GET_VCPU_MMAP_SIZE returned %d < %d",
+				   ret, (int) sizeof(*run));
+	printf("ioctl(%d<%s>, KVM_GET_VCPU_MMAP_SIZE, 0) = %d\n",
+	       kvm, dev, ret);
+
+	const size_t mmap_size = (ret + page_size - 1) & -page_size;
+	run = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE,
+		   MAP_SHARED, vcpu_fd, 0);
+	if (run == MAP_FAILED)
+		perror_msg_and_fail("mmap vcpu");
+
+	run_kvm(vcpu_fd, run, mmap_size, mem);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else /* !HAVE_LINUX_KVM_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_KVM_H && HAVE_STRUCT_KVM_REGS && "
+		    "HAVE_STRUCT_KVM_SREGS && "
+		    "HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION && "
+		    "(__x86_64__ || __i386__)")
+
+#endif
diff --git a/tests-m32/ioctl_kvm_run.gen.test b/tests-m32/ioctl_kvm_run.gen.test
new file mode 100755
index 0000000..7ab473b
--- /dev/null
+++ b/tests-m32/ioctl_kvm_run.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_kvm_run +ioctl.test -a36 -y); do not edit.
+set -- -a36 -y
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_loop-nv.gen.test b/tests-m32/ioctl_loop-nv.gen.test
new file mode 100755
index 0000000..d9da86a
--- /dev/null
+++ b/tests-m32/ioctl_loop-nv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-nv +ioctl.test -a22 -e verbose=none); do not edit.
+set -- -a22 -e verbose=none
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_loop-nv.test b/tests-m32/ioctl_loop-nv.test
deleted file mode 100755
index 7d59cc2..0000000
--- a/tests-m32/ioctl_loop-nv.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check non-verbose decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl_loop-v.gen.test b/tests-m32/ioctl_loop-v.gen.test
index 7fd9f66..b03bf78 100755
--- a/tests-m32/ioctl_loop-v.gen.test
+++ b/tests-m32/ioctl_loop-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_loop.gen.test b/tests-m32/ioctl_loop.gen.test
index f7aee8e..d4ec35a 100755
--- a/tests-m32/ioctl_loop.gen.test
+++ b/tests-m32/ioctl_loop.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_mtd.c b/tests-m32/ioctl_mtd.c
index 6a7d94a..1b5be75 100644
--- a/tests-m32/ioctl_mtd.c
+++ b/tests-m32/ioctl_mtd.c
@@ -30,22 +30,20 @@
 
 #include "tests.h"
 
-#include <errno.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <linux/ioctl.h>
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
-# include "mtd-abi.h"
-#else
+#ifdef HAVE_STRUCT_MTD_WRITE_REQ
+
+# include <errno.h>
+# include <inttypes.h>
+# include <stdio.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <linux/ioctl.h>
+# include <linux/version.h>
 # include <mtd/mtd-abi.h>
-#endif
 
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
-#define TEST_NULL_ARG(cmd) \
+# define TEST_NULL_ARG(cmd) \
 	do { \
 		ioctl(-1, cmd, 0); \
 		if (_IOC_DIR(cmd) == _IOC_WRITE) \
@@ -60,7 +58,7 @@
 			printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \
 	} while (0)
 
-#define TEST_erase_info_user(cmd, eiu)						\
+# define TEST_erase_info_user(cmd, eiu)						\
 	do {									\
 		ioctl(-1, cmd, eiu);						\
 		printf("ioctl(-1, MIXER_%s(%u) or %s, {start=%#x, length=%#x})"	\
@@ -122,9 +120,9 @@
 	ioctl(-1, MEMGETREGIONINFO, riu);
 	printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
 	       "MEMGETREGIONINFO"
-#ifdef __i386__
+# ifdef __i386__
 	       " or MTRRIOC_GET_PAGE_ENTRY"
-#endif
+# endif
 	       , riu->regionindex);
 
 	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
@@ -198,3 +196,9 @@
 	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_MTD_WRITE_REQ")
+
+#endif
diff --git a/tests-m32/ioctl_mtd.gen.test b/tests-m32/ioctl_mtd.gen.test
index cbc3104..65b0003 100755
--- a/tests-m32/ioctl_mtd.gen.test
+++ b/tests-m32/ioctl_mtd.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_nsfs.gen.test b/tests-m32/ioctl_nsfs.gen.test
new file mode 100755
index 0000000..f9adc5f
--- /dev/null
+++ b/tests-m32/ioctl_nsfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_nsfs +ioctl.test -esignal=none); do not edit.
+set -- -esignal=none
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_nsfs.test b/tests-m32/ioctl_nsfs.test
deleted file mode 100755
index acdfb61..0000000
--- a/tests-m32/ioctl_nsfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of NS_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -eioctl -esignal=none $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl_rtc-v.gen.test b/tests-m32/ioctl_rtc-v.gen.test
index b534a02..820181b 100755
--- a/tests-m32/ioctl_rtc-v.gen.test
+++ b/tests-m32/ioctl_rtc-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_rtc.gen.test b/tests-m32/ioctl_rtc.gen.test
index e430a82..310b558 100755
--- a/tests-m32/ioctl_rtc.gen.test
+++ b/tests-m32/ioctl_rtc.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_scsi.gen.test b/tests-m32/ioctl_scsi.gen.test
index 23ac307..499bfc4 100755
--- a/tests-m32/ioctl_scsi.gen.test
+++ b/tests-m32/ioctl_scsi.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sg_io_v3.gen.test b/tests-m32/ioctl_sg_io_v3.gen.test
index e7e5ea5..ef8fd14 100755
--- a/tests-m32/ioctl_sg_io_v3.gen.test
+++ b/tests-m32/ioctl_sg_io_v3.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sg_io_v4.gen.test b/tests-m32/ioctl_sg_io_v4.gen.test
index 575ad96..4aa4e4e 100755
--- a/tests-m32/ioctl_sg_io_v4.gen.test
+++ b/tests-m32/ioctl_sg_io_v4.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sock_gifconf.gen.test b/tests-m32/ioctl_sock_gifconf.gen.test
new file mode 100755
index 0000000..5d6fe2f
--- /dev/null
+++ b/tests-m32/ioctl_sock_gifconf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sock_gifconf +ioctl.test -a28 -s1); do not edit.
+set -- -a28 -s1
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sock_gifconf.test b/tests-m32/ioctl_sock_gifconf.test
deleted file mode 100755
index 22d7ea4..0000000
--- a/tests-m32/ioctl_sock_gifconf.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of SIOCGIFCONF ioctl.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a28 -s1 -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-m32/ioctl_uffdio.gen.test b/tests-m32/ioctl_uffdio.gen.test
index 80fd2a6..ed73c5f 100755
--- a/tests-m32/ioctl_uffdio.gen.test
+++ b/tests-m32/ioctl_uffdio.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2.gen.test b/tests-m32/ioctl_v4l2.gen.test
index cbd36ba..4c57144 100755
--- a/tests-m32/ioctl_v4l2.gen.test
+++ b/tests-m32/ioctl_v4l2.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioperm.gen.test b/tests-m32/ioperm.gen.test
index 154d60a..bc69f69 100755
--- a/tests-m32/ioperm.gen.test
+++ b/tests-m32/ioperm.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/iopl.gen.test b/tests-m32/iopl.gen.test
index 3d9704c..f7769d2 100755
--- a/tests-m32/iopl.gen.test
+++ b/tests-m32/iopl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-m32/ip_mreq.c b/tests-m32/ip_mreq.c
index 3f4648c..12cc261 100644
--- a/tests-m32/ip_mreq.c
+++ b/tests-m32/ip_mreq.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,9 +32,9 @@
 #if defined IP_ADD_MEMBERSHIP && defined IPV6_ADD_MEMBERSHIP \
  && defined IPV6_JOIN_ANYCAST
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
 # include <net/if.h>
diff --git a/tests-m32/ipc.gen.test b/tests-m32/ipc.gen.test
index 5ed1f0d..0aa7578 100755
--- a/tests-m32/ipc.gen.test
+++ b/tests-m32/ipc.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-m32/ipc_msg.gen.test b/tests-m32/ipc_msg.gen.test
index f4fec80..b1f1f7e 100755
--- a/tests-m32/ipc_msg.gen.test
+++ b/tests-m32/ipc_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_msgbuf.c b/tests-m32/ipc_msgbuf.c
index d108389..c4af1be 100644
--- a/tests-m32/ipc_msgbuf.c
+++ b/tests-m32/ipc_msgbuf.c
@@ -38,11 +38,16 @@
 
 static int msqid = -1;
 
-static void
+static int
 cleanup(void)
 {
-	msgctl(msqid, IPC_RMID, 0);
-	msqid = -1;
+	if (msqid != -1) {
+		int rc = msgctl(msqid, IPC_RMID, 0);
+		msqid = -1;
+		if (rc == -1)
+			return 77;
+	}
+	return 0;
 }
 
 int
@@ -59,10 +64,11 @@
 	msqid = msgget(IPC_PRIVATE, IPC_CREAT | S_IRWXU);
 	if (msqid == -1)
 		perror_msg_and_skip("msgget");
-	atexit(cleanup);
+	typedef void (*atexit_func)(void);
+	atexit((atexit_func) cleanup);
 	if (msgsnd(msqid, &msg, msgsz, 0) == -1)
 		perror_msg_and_skip("msgsnd");
 	if (msgrcv(msqid, &msg, msgsz, mtype, 0) != msgsz)
 		perror_msg_and_skip("msgrcv");
-	return 0;
+	return cleanup();
 }
diff --git a/tests-m32/ipc_sem.gen.test b/tests-m32/ipc_sem.gen.test
index 54159a6..a1c03d2 100755
--- a/tests-m32/ipc_sem.gen.test
+++ b/tests-m32/ipc_sem.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_shm.c b/tests-m32/ipc_shm.c
index 66960ff..c793138 100644
--- a/tests-m32/ipc_shm.c
+++ b/tests-m32/ipc_shm.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +33,14 @@
 #include <stdlib.h>
 #include <sys/shm.h>
 
+#ifndef SHM_HUGE_SHIFT
+# define SHM_HUGE_SHIFT 26
+#endif
+
+#ifndef SHM_HUGE_MASK
+# define SHM_HUGE_MASK 0x3f
+#endif
+
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
@@ -64,18 +73,54 @@
 	#else
 		(size_t) 0x1e55c0de5dec0dedULL;
 	#endif
-	static const int bogus_flags = 0xface1e55;
-
+	static const unsigned int bogus_ipc_shm_flags =
+		IPC_CREAT | IPC_EXCL | SHM_HUGETLB | SHM_NORESERVE;
+	static const unsigned int huge_mask = SHM_HUGE_MASK << SHM_HUGE_SHIFT;
+	static const unsigned int huge_flags = 21 << SHM_HUGE_SHIFT;
+	int bogus_flags;
 	int rc;
 	struct shmid_ds ds;
 
-	rc = shmget(bogus_key, bogus_size, bogus_flags);
-	printf("shmget\\(%#llx, %zu, %s%s%s%#x\\|%#04o\\) += %s\n",
+	rc = shmget(bogus_key, bogus_size, 0);
+	printf("shmget\\(%#llx, %zu, 000\\) += %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),
+	       sprintrc_grep(rc));
+
+	rc = shmget(bogus_key, bogus_size, huge_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "21<<SHM_HUGE_SHIFT", 0, sprintrc_grep(rc));
+
+	bogus_flags = 0xface1e55 & ~(bogus_ipc_shm_flags | huge_mask);
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %#x\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       bogus_flags & ~0777,
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags |= bogus_ipc_shm_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
+	       bogus_flags & ~(0777 | bogus_ipc_shm_flags),
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags |= huge_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
+	       bogus_flags & ~(0777 | bogus_ipc_shm_flags | huge_mask),
+	       "21<<SHM_HUGE_SHIFT",
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags &= ~bogus_ipc_shm_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %#x\\|%s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       bogus_flags & ~(0777 | huge_mask),
+	       "21<<SHM_HUGE_SHIFT",
 	       bogus_flags & 0777, sprintrc_grep(rc));
 
 	id = shmget(private_key, 1, 0600);
diff --git a/tests-m32/ipc_shm.gen.test b/tests-m32/ipc_shm.gen.test
index 505eaba..8c6df9b 100755
--- a/tests-m32/ipc_shm.gen.test
+++ b/tests-m32/ipc_shm.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/kcmp.gen.test b/tests-m32/kcmp.gen.test
index c073a39..139e909 100755
--- a/tests-m32/kcmp.gen.test
+++ b/tests-m32/kcmp.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-m32/kexec_file_load.gen.test b/tests-m32/kexec_file_load.gen.test
index aefaab3..1101349 100755
--- a/tests-m32/kexec_file_load.gen.test
+++ b/tests-m32/kexec_file_load.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
+run_strace_match_diff -s9 
diff --git a/tests-m32/kexec_load.gen.test b/tests-m32/kexec_load.gen.test
index 0af9527..6ce1831 100755
--- a/tests-m32/kexec_load.gen.test
+++ b/tests-m32/kexec_load.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
+run_strace_match_diff -s9 
diff --git a/tests-m32/lchown.gen.test b/tests-m32/lchown.gen.test
index b31e29d..d346c76 100755
--- a/tests-m32/lchown.gen.test
+++ b/tests-m32/lchown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
+run_strace_match_diff -a30 
diff --git a/tests-m32/lchown32.gen.test b/tests-m32/lchown32.gen.test
index 83be4bc..5da2349 100755
--- a/tests-m32/lchown32.gen.test
+++ b/tests-m32/lchown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 
diff --git a/tests-m32/link.gen.test b/tests-m32/link.gen.test
index b6db34d..2ec3f5b 100755
--- a/tests-m32/link.gen.test
+++ b/tests-m32/link.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/linkat.gen.test b/tests-m32/linkat.gen.test
index 54b12b9..8bdf78b 100755
--- a/tests-m32/linkat.gen.test
+++ b/tests-m32/linkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/llseek.test b/tests-m32/llseek.test
index 8dcd65d..9db68e3 100755
--- a/tests-m32/llseek.test
+++ b/tests-m32/llseek.test
@@ -7,5 +7,5 @@
 check_prog grep
 run_prog > /dev/null
 run_strace -e_llseek $args > "$EXP"
-grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
+grep -v '^_llseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
diff --git a/tests-m32/lookup_dcookie.gen.test b/tests-m32/lookup_dcookie.gen.test
index 6357e19..616c705 100755
--- a/tests-m32/lookup_dcookie.gen.test
+++ b/tests-m32/lookup_dcookie.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/madvise.gen.test b/tests-m32/madvise.gen.test
index bd36dad..a549cf9 100755
--- a/tests-m32/madvise.gen.test
+++ b/tests-m32/madvise.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-m32/mbind.gen.test b/tests-m32/mbind.gen.test
index a0d144d..c47e0fc 100755
--- a/tests-m32/mbind.gen.test
+++ b/tests-m32/mbind.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/membarrier.c b/tests-m32/membarrier.c
index 73dd3b0..43f99f8 100644
--- a/tests-m32/membarrier.c
+++ b/tests-m32/membarrier.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,28 +45,49 @@
 	printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
 	       sprintrc(-1));
 	if (saved_errno != ENOSYS) {
+		const char *text_global;
 		const char *text;
 		int rc = syscall(__NR_membarrier, 0, 0);
 
-		switch (rc) {
-		case 1:
-			text = "MEMBARRIER_CMD_SHARED";
+		assert(rc >= 0);
+
+		text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
+
+		switch (rc & ~1) {
+		case 0:
+			text = "";
 			break;
-		case 1|8:
-			text = "MEMBARRIER_CMD_SHARED|"
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+		case 8:
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
 			break;
-		case 1|8|16:
-			text = "MEMBARRIER_CMD_SHARED|"
+		case 8|16:
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
+			break;
+
+		case 2|4|8|16:
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
 			break;
+
+		case 2|4|8|16|32|64:
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE";
+			break;
+
 		default:
 			error_msg_and_fail("membarrier returned %#x, does"
 					   " the test have to be updated?", rc);
 		}
-		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
-		       rc, text);
+		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
+		       rc, text_global, text[0] && text_global[0] ? "|" : "",
+		       text);
 	}
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/membarrier.gen.test b/tests-m32/membarrier.gen.test
index 7a6ea10..6ae6e91 100755
--- a/tests-m32/membarrier.gen.test
+++ b/tests-m32/membarrier.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-m32/memfd_create.c b/tests-m32/memfd_create.c
index 4559b42..8334af8 100644
--- a/tests-m32/memfd_create.c
+++ b/tests-m32/memfd_create.c
@@ -1,3 +1,32 @@
+/*
+ * Check decoding of memfd_create syscall.
+ *
+ * Copyright (c) 2015-2017 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>
 #include "scno.h"
@@ -5,17 +34,62 @@
 #ifdef __NR_memfd_create
 
 # include <stdio.h>
+# include <stdint.h>
 # include <unistd.h>
 
+# ifdef HAVE_LINUX_MEMFD_H
+#  include <linux/memfd.h>
+# endif
+
+# ifndef MFD_HUGE_SHIFT
+#  define MFD_HUGE_SHIFT 26
+# endif
+
+# ifndef MFD_HUGE_MASK
+#  define MFD_HUGE_MASK 0x3f
+# endif
+
+static const char *errstr;
+
+static long
+k_memfd_create(const kernel_ulong_t name, const kernel_ulong_t flags)
+{
+	const long rc = syscall(__NR_memfd_create, name, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
 int
 main(void)
 {
-	static const char text[] = "strace";
-	int rc = syscall(__NR_memfd_create, text, 0xf);
+	const size_t size = 255 - (sizeof("memfd:") - 1) + 1;
+	char *pattern = tail_alloc(size);
+	fill_memory_ex(pattern, size, '0', 10);
 
-	printf("memfd_create(\"%s\", %s) = %s\n",
-	       text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8",
-	       sprintrc(rc));
+	k_memfd_create((uintptr_t) pattern, 0);
+	printf("memfd_create(\"%.*s\"..., 0) = %s\n",
+	       (int) size - 1, pattern, errstr);
+
+	kernel_ulong_t flags = (kernel_ulong_t) 0xfacefeed00000007ULL;
+	k_memfd_create((uintptr_t) pattern, flags);
+	printf("memfd_create(\"%.*s\"..., %s) = %s\n",
+	       (int) size - 1, pattern,
+	       "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB",
+	       errstr);
+
+	pattern[size - 1] = '\0';
+	flags = 30 << MFD_HUGE_SHIFT;
+	k_memfd_create((uintptr_t) pattern, flags);
+	printf("memfd_create(\"%s\", 30<<MFD_HUGE_SHIFT) = %s\n",
+	       pattern, errstr);
+
+	pattern += size - 1;
+	flags = (kernel_ulong_t) -1ULL;
+	k_memfd_create(0, flags);
+	flags = -1U & ~(7 | (MFD_HUGE_MASK << MFD_HUGE_SHIFT));
+	printf("memfd_create(NULL, MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB"
+	       "|%#x|%u<<MFD_HUGE_SHIFT) = %s\n",
+	       (unsigned int) flags, MFD_HUGE_MASK, errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/memfd_create.gen.test b/tests-m32/memfd_create.gen.test
index 11762be..ccb5b52 100755
--- a/tests-m32/memfd_create.gen.test
+++ b/tests-m32/memfd_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/migrate_pages.gen.test b/tests-m32/migrate_pages.gen.test
index 20b7cad..0ea017d 100755
--- a/tests-m32/migrate_pages.gen.test
+++ b/tests-m32/migrate_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-m32/mincore.gen.test b/tests-m32/mincore.gen.test
index dc40726..45e43e2 100755
--- a/tests-m32/mincore.gen.test
+++ b/tests-m32/mincore.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-m32/mkdir.gen.test b/tests-m32/mkdir.gen.test
index 80b4995..8d34c8b 100755
--- a/tests-m32/mkdir.gen.test
+++ b/tests-m32/mkdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/mkdirat.gen.test b/tests-m32/mkdirat.gen.test
index 0f3fdae..eef8e52 100755
--- a/tests-m32/mkdirat.gen.test
+++ b/tests-m32/mkdirat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/mknod.gen.test b/tests-m32/mknod.gen.test
index 870c88b..ce08e99 100755
--- a/tests-m32/mknod.gen.test
+++ b/tests-m32/mknod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-m32/mknodat.gen.test b/tests-m32/mknodat.gen.test
index 747fcbe..dce7d44 100755
--- a/tests-m32/mknodat.gen.test
+++ b/tests-m32/mknodat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-m32/mlock2.gen.test b/tests-m32/mlock2.gen.test
index aa1818e..ff94eb8 100755
--- a/tests-m32/mlock2.gen.test
+++ b/tests-m32/mlock2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/mlockall.gen.test b/tests-m32/mlockall.gen.test
index 06d8ca4..59ef67f 100755
--- a/tests-m32/mlockall.gen.test
+++ b/tests-m32/mlockall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-m32/mmap64.gen.test b/tests-m32/mmap64.gen.test
index 5e747b0..0ecd529 100755
--- a/tests-m32/mmap64.gen.test
+++ b/tests-m32/mmap64.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test ); do not edit.
+set -- 
 . "${srcdir=.}/mmap.test"
diff --git a/tests-m32/modify_ldt.c b/tests-m32/modify_ldt.c
new file mode 100644
index 0000000..1e26bda
--- /dev/null
+++ b/tests-m32/modify_ldt.c
@@ -0,0 +1,137 @@
+/*
+ * Check decoding of modify_ldt syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_modify_ldt && defined HAVE_STRUCT_USER_DESC
+
+# include <errno.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "print_user_desc.c"
+
+void
+printrc(long rc)
+{
+#ifdef __x86_64__
+	int err = -rc;
+
+	/* Thanks, long return type of syscall(2) */
+	printf("%lld", zero_extend_signed_to_ull(rc));
+
+	if (err > 0 && err < 0x1000) {
+		errno = err;
+		printf(" %s (%m)", errno2name());
+	}
+#else
+	printf("%s", sprintrc(rc));
+#endif
+
+	puts("");
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_func =
+		(kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+	static const kernel_ulong_t bogus_bytecount =
+		(kernel_ulong_t) 0xdeadfacefa57beefULL;
+
+	struct user_desc *us = tail_alloc(sizeof(*us));
+	unsigned int *bogus_int = tail_alloc(sizeof(*bogus_int));
+	long rc;
+
+	fill_memory(us, sizeof(*us));
+
+	rc = syscall(__NR_modify_ldt, 0, 0, 0);
+	printf("modify_ldt(0, NULL, 0) = ");
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, (kernel_long_t) -1,
+		     bogus_bytecount);
+	printf("modify_ldt(%d, %#llx, %llu) = ",
+	       (int) bogus_func,
+	       zero_extend_signed_to_ull((kernel_long_t) -1),
+	       (unsigned long long) bogus_bytecount);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us + 1, 0);
+	printf("modify_ldt(%d, %p, 0) = ", (int) bogus_func, us + 1);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, 42);
+	printf("modify_ldt(%d, %p, 42) = ", (int) bogus_func, us);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us + 1, sizeof(*us));
+	printf("modify_ldt(%d, %p, %zu) = ",
+	       (int) bogus_func, us + 1, sizeof(*us));
+	printrc(rc);
+
+	/*
+	 * print_user_desc handles entry_number field in a special way for
+	 * get_thread_area syscall, so let's also check here that we don't
+	 * retrieve it accidentally.
+	 */
+	rc = syscall(__NR_modify_ldt, bogus_func, bogus_int, sizeof(*us));
+	printf("modify_ldt(%d, %p, %zu) = ",
+	       (int) bogus_func, bogus_int, sizeof(*us));
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, sizeof(*us));
+	printf("modify_ldt(%d, ", (int) bogus_func);
+	print_user_desc(us, NULL);
+	printf(", %zu) = ", sizeof(*us));
+	printrc(rc);
+
+	fill_memory_ex(us, sizeof(*us), 0x55, 80);
+	us->entry_number = -1;
+	us->base_addr = 0;
+	us->limit = 0;
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, sizeof(*us));
+	printf("modify_ldt(%d, ", (int) bogus_func);
+	print_user_desc(us, "-1");
+	printf(", %zu) = ", sizeof(*us));
+	printrc(rc);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_modify_ldt && HAVE_STRUCT_USER_DESC");
+
+#endif
diff --git a/tests-m32/modify_ldt.gen.test b/tests-m32/modify_ldt.gen.test
new file mode 100755
index 0000000..1a85b06
--- /dev/null
+++ b/tests-m32/modify_ldt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (modify_ldt -a23 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 
diff --git a/tests-m32/mount.gen.test b/tests-m32/mount.gen.test
index 0b124bc..69bc99b 100755
--- a/tests-m32/mount.gen.test
+++ b/tests-m32/mount.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/move_pages.gen.test b/tests-m32/move_pages.gen.test
index 2f060fa..9d472ef 100755
--- a/tests-m32/move_pages.gen.test
+++ b/tests-m32/move_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
+run_strace_match_diff -s3 
diff --git a/tests-m32/munlockall.gen.test b/tests-m32/munlockall.gen.test
index 18343cb..2e4e0c4 100755
--- a/tests-m32/munlockall.gen.test
+++ b/tests-m32/munlockall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests-m32/nanosleep.gen.test b/tests-m32/nanosleep.gen.test
index ea5b19a..41928de 100755
--- a/tests-m32/nanosleep.gen.test
+++ b/tests-m32/nanosleep.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/net-accept-connect.c b/tests-m32/net-accept-connect.c
index 4045e05..0756c9b 100644
--- a/tests-m32/net-accept-connect.c
+++ b/tests-m32/net-accept-connect.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,15 +49,16 @@
 	struct sockaddr_un addr = {
 		.sun_family = AF_UNIX,
 	};
-	socklen_t len;
 
 	assert(ac == 2);
-	assert(strlen(av[1]) > 0);
+	socklen_t len = strlen(av[1]);
+	assert(len > 0 && len <= sizeof(addr.sun_path));
 
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
-	len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
-	if (len > sizeof(addr))
-		len = sizeof(addr);
+	if (++len > sizeof(addr.sun_path))
+		len = sizeof(addr.sun_path);
+
+	memcpy(addr.sun_path, av[1], len);
+	len += offsetof(struct sockaddr_un, sun_path);
 
 	unlink(av[1]);
 	close(0);
diff --git a/tests-m32/net-y-unix.c b/tests-m32/net-y-unix.c
index fbdf590..847c735 100644
--- a/tests-m32/net-y-unix.c
+++ b/tests-m32/net-y-unix.c
@@ -2,6 +2,7 @@
  * This file is part of net-y-unix strace test.
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#include "accept_compat.h"
+
 #define TEST_SOCKET "net-y-unix.socket"
 
 int
@@ -106,7 +108,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	int accept_fd = accept(listen_fd, accept_sa, len);
+	int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
@@ -177,7 +179,7 @@
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	accept_fd = accept(listen_fd, accept_sa, len);
+	accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	accept_inode = inode_of_sockfd(accept_fd);
diff --git a/tests-m32/net-yy-inet.c b/tests-m32/net-yy-inet.c
index c043920..c69bb17 100644
--- a/tests-m32/net-yy-inet.c
+++ b/tests-m32/net-yy-inet.c
@@ -2,7 +2,7 @@
  * This file is part of net-yy-inet strace test.
  *
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,6 +39,8 @@
 #include <netinet/tcp.h>
 #include <arpa/inet.h>
 
+#include "accept_compat.h"
+
 int
 main(void)
 {
@@ -105,7 +107,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	const int accept_fd = accept(listen_fd, accept_sa, len);
+	const int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	const unsigned int connect_port =
diff --git a/tests-m32/net-yy-unix.c b/tests-m32/net-yy-unix.c
index 21822db..40ac3a6 100644
--- a/tests-m32/net-yy-unix.c
+++ b/tests-m32/net-yy-unix.c
@@ -2,6 +2,7 @@
  * This file is part of net-yy-unix strace test.
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#include "accept_compat.h"
+
 #define TEST_SOCKET "net-yy-unix.socket"
 
 int
@@ -107,7 +109,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	int accept_fd = accept(listen_fd, accept_sa, len);
+	int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
@@ -180,7 +182,7 @@
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	accept_fd = accept(listen_fd, accept_sa, len);
+	accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	accept_inode = inode_of_sockfd(accept_fd);
diff --git a/tests-m32/net.expected b/tests-m32/net.expected
index 80dd070..e33e296 100644
--- a/tests-m32/net.expected
+++ b/tests-m32/net.expected
@@ -3,5 +3,5 @@
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +bind\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +listen\(0, 5\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +getsockname\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, \[19\]\) += 0
-[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[19->2\]\) += 1
+[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept4?\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[19->2\](, 0)?\) += 1
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +connect\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
diff --git a/tests-m32/netlink_audit.gen.test b/tests-m32/netlink_audit.gen.test
index 6511067..5c17038 100755
--- a/tests-m32/netlink_audit.gen.test
+++ b/tests-m32/netlink_audit.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_audit +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_audit +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_crypto.gen.test b/tests-m32/netlink_crypto.gen.test
index b138099..fcb4c3d 100755
--- a/tests-m32/netlink_crypto.gen.test
+++ b/tests-m32/netlink_crypto.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_crypto +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_crypto +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_generic.gen.test b/tests-m32/netlink_generic.gen.test
index e51f15c..6f304d3 100755
--- a/tests-m32/netlink_generic.gen.test
+++ b/tests-m32/netlink_generic.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_generic +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_generic +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_kobject_uevent.gen.test b/tests-m32/netlink_kobject_uevent.gen.test
index 310a70b..46bdebd 100755
--- a/tests-m32/netlink_kobject_uevent.gen.test
+++ b/tests-m32/netlink_kobject_uevent.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_kobject_uevent +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_kobject_uevent +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_netfilter.gen.test b/tests-m32/netlink_netfilter.gen.test
index fffb72b..94b3f36 100755
--- a/tests-m32/netlink_netfilter.gen.test
+++ b/tests-m32/netlink_netfilter.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_netfilter +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_netfilter +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_route.gen.test b/tests-m32/netlink_route.gen.test
index 298dbf1..bd9c0d9 100755
--- a/tests-m32/netlink_route.gen.test
+++ b/tests-m32/netlink_route.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_route +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_route +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_selinux.gen.test b/tests-m32/netlink_selinux.gen.test
index a8871d6..484ffae 100755
--- a/tests-m32/netlink_selinux.gen.test
+++ b/tests-m32/netlink_selinux.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_selinux +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_selinux +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/netlink_xfrm.gen.test b/tests-m32/netlink_xfrm.gen.test
index 17f7444..3691898 100755
--- a/tests-m32/netlink_xfrm.gen.test
+++ b/tests-m32/netlink_xfrm.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_xfrm +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_xfrm +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_acct.gen.test b/tests-m32/nfnetlink_acct.gen.test
index 7db2276..e3aa889 100755
--- a/tests-m32/nfnetlink_acct.gen.test
+++ b/tests-m32/nfnetlink_acct.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_cthelper.gen.test b/tests-m32/nfnetlink_cthelper.gen.test
index 661c949..fa26e14 100755
--- a/tests-m32/nfnetlink_cthelper.gen.test
+++ b/tests-m32/nfnetlink_cthelper.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ctnetlink.gen.test b/tests-m32/nfnetlink_ctnetlink.gen.test
index d4c4daa..9e9ad15 100755
--- a/tests-m32/nfnetlink_ctnetlink.gen.test
+++ b/tests-m32/nfnetlink_ctnetlink.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ctnetlink_exp.gen.test b/tests-m32/nfnetlink_ctnetlink_exp.gen.test
index a5d83f9..4ed3707 100755
--- a/tests-m32/nfnetlink_ctnetlink_exp.gen.test
+++ b/tests-m32/nfnetlink_ctnetlink_exp.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_cttimeout.gen.test b/tests-m32/nfnetlink_cttimeout.gen.test
index e197f00..ab42fc7 100755
--- a/tests-m32/nfnetlink_cttimeout.gen.test
+++ b/tests-m32/nfnetlink_cttimeout.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ipset.gen.test b/tests-m32/nfnetlink_ipset.gen.test
index 418437a..ea129fb 100755
--- a/tests-m32/nfnetlink_ipset.gen.test
+++ b/tests-m32/nfnetlink_ipset.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_nft_compat.gen.test b/tests-m32/nfnetlink_nft_compat.gen.test
index c3dc890..aff04c5 100755
--- a/tests-m32/nfnetlink_nft_compat.gen.test
+++ b/tests-m32/nfnetlink_nft_compat.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_nftables.gen.test b/tests-m32/nfnetlink_nftables.gen.test
index 25e90e8..c23ad33 100755
--- a/tests-m32/nfnetlink_nftables.gen.test
+++ b/tests-m32/nfnetlink_nftables.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_osf.gen.test b/tests-m32/nfnetlink_osf.gen.test
index 2689574..aa54090 100755
--- a/tests-m32/nfnetlink_osf.gen.test
+++ b/tests-m32/nfnetlink_osf.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_queue.gen.test b/tests-m32/nfnetlink_queue.gen.test
index 739fb17..965e0d2 100755
--- a/tests-m32/nfnetlink_queue.gen.test
+++ b/tests-m32/nfnetlink_queue.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ulog.gen.test b/tests-m32/nfnetlink_ulog.gen.test
index 850ebaf..825ad9f 100755
--- a/tests-m32/nfnetlink_ulog.gen.test
+++ b/tests-m32/nfnetlink_ulog.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr.gen.test b/tests-m32/nlattr.gen.test
index 105801b..0ea2f18 100755
--- a/tests-m32/nlattr.gen.test
+++ b/tests-m32/nlattr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_br_port_msg.gen.test b/tests-m32/nlattr_br_port_msg.gen.test
index f843797..c957275 100755
--- a/tests-m32/nlattr_br_port_msg.gen.test
+++ b/tests-m32/nlattr_br_port_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_br_port_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_br_port_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_crypto_user_alg.gen.test b/tests-m32/nlattr_crypto_user_alg.gen.test
index 81d866e..e52b6be 100755
--- a/tests-m32/nlattr_crypto_user_alg.gen.test
+++ b/tests-m32/nlattr_crypto_user_alg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_crypto_user_alg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_crypto_user_alg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_dcbmsg.gen.test b/tests-m32/nlattr_dcbmsg.gen.test
index d78bfcf..f9ef39f 100755
--- a/tests-m32/nlattr_dcbmsg.gen.test
+++ b/tests-m32/nlattr_dcbmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_dcbmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_dcbmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_fib_rule_hdr.gen.test b/tests-m32/nlattr_fib_rule_hdr.gen.test
index cbdad4d..fb61343 100755
--- a/tests-m32/nlattr_fib_rule_hdr.gen.test
+++ b/tests-m32/nlattr_fib_rule_hdr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_fib_rule_hdr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_fib_rule_hdr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ifaddrlblmsg.gen.test b/tests-m32/nlattr_ifaddrlblmsg.gen.test
index 0c41dbe..0f51430 100755
--- a/tests-m32/nlattr_ifaddrlblmsg.gen.test
+++ b/tests-m32/nlattr_ifaddrlblmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrlblmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrlblmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ifaddrmsg.gen.test b/tests-m32/nlattr_ifaddrmsg.gen.test
index d659e00..3fb81bd 100755
--- a/tests-m32/nlattr_ifaddrmsg.gen.test
+++ b/tests-m32/nlattr_ifaddrmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ifinfomsg.gen.test b/tests-m32/nlattr_ifinfomsg.gen.test
index 618df14..b9a6456 100755
--- a/tests-m32/nlattr_ifinfomsg.gen.test
+++ b/tests-m32/nlattr_ifinfomsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifinfomsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifinfomsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ifla_brport.gen.test b/tests-m32/nlattr_ifla_brport.gen.test
index 48bfed4..6758d8d 100755
--- a/tests-m32/nlattr_ifla_brport.gen.test
+++ b/tests-m32/nlattr_ifla_brport.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_brport +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_brport +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ifla_port.gen.test b/tests-m32/nlattr_ifla_port.gen.test
index 605bf04..ecea89a 100755
--- a/tests-m32/nlattr_ifla_port.gen.test
+++ b/tests-m32/nlattr_ifla_port.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_port +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_port +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ifla_xdp.gen.test b/tests-m32/nlattr_ifla_xdp.gen.test
index a30e843..c6e0fab 100755
--- a/tests-m32/nlattr_ifla_xdp.gen.test
+++ b/tests-m32/nlattr_ifla_xdp.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_inet_diag_msg.gen.test b/tests-m32/nlattr_inet_diag_msg.gen.test
index 953a767..953a23d 100755
--- a/tests-m32/nlattr_inet_diag_msg.gen.test
+++ b/tests-m32/nlattr_inet_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_inet_diag_req_compat.gen.test b/tests-m32/nlattr_inet_diag_req_compat.gen.test
index bf8b65c..7b577dc 100755
--- a/tests-m32/nlattr_inet_diag_req_compat.gen.test
+++ b/tests-m32/nlattr_inet_diag_req_compat.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_compat +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_compat +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_inet_diag_req_v2.gen.test b/tests-m32/nlattr_inet_diag_req_v2.gen.test
index 0260bc4..01c73a1 100755
--- a/tests-m32/nlattr_inet_diag_req_v2.gen.test
+++ b/tests-m32/nlattr_inet_diag_req_v2.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_v2 +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_v2 +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_mdba_mdb_entry.gen.test b/tests-m32/nlattr_mdba_mdb_entry.gen.test
index 67253e8..8d09a03 100755
--- a/tests-m32/nlattr_mdba_mdb_entry.gen.test
+++ b/tests-m32/nlattr_mdba_mdb_entry.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_mdba_router_port.gen.test b/tests-m32/nlattr_mdba_router_port.gen.test
index ce9ea14..97230e8 100755
--- a/tests-m32/nlattr_mdba_router_port.gen.test
+++ b/tests-m32/nlattr_mdba_router_port.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ndmsg.gen.test b/tests-m32/nlattr_ndmsg.gen.test
index 06b8f1a..1d2763b 100755
--- a/tests-m32/nlattr_ndmsg.gen.test
+++ b/tests-m32/nlattr_ndmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_ndtmsg.gen.test b/tests-m32/nlattr_ndtmsg.gen.test
index d75ad57..bf7d122 100755
--- a/tests-m32/nlattr_ndtmsg.gen.test
+++ b/tests-m32/nlattr_ndtmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndtmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndtmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_netconfmsg.gen.test b/tests-m32/nlattr_netconfmsg.gen.test
index 9a061cb..27f3a66 100755
--- a/tests-m32/nlattr_netconfmsg.gen.test
+++ b/tests-m32/nlattr_netconfmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netconfmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netconfmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_netlink_diag_msg.gen.test b/tests-m32/nlattr_netlink_diag_msg.gen.test
index aa6aabf..eacc6df 100755
--- a/tests-m32/nlattr_netlink_diag_msg.gen.test
+++ b/tests-m32/nlattr_netlink_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netlink_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netlink_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_nlmsgerr.gen.test b/tests-m32/nlattr_nlmsgerr.gen.test
index 23df500..f06ea42 100755
--- a/tests-m32/nlattr_nlmsgerr.gen.test
+++ b/tests-m32/nlattr_nlmsgerr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_nlmsgerr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_nlmsgerr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_packet_diag_msg.gen.test b/tests-m32/nlattr_packet_diag_msg.gen.test
index 6af8749..7177ea2 100755
--- a/tests-m32/nlattr_packet_diag_msg.gen.test
+++ b/tests-m32/nlattr_packet_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag-v.sh"
diff --git a/tests-m32/nlattr_rtgenmsg.gen.test b/tests-m32/nlattr_rtgenmsg.gen.test
index 0ff6d13..37ec842 100755
--- a/tests-m32/nlattr_rtgenmsg.gen.test
+++ b/tests-m32/nlattr_rtgenmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtgenmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtgenmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_rtmsg.gen.test b/tests-m32/nlattr_rtmsg.gen.test
index 5525143..f075529 100755
--- a/tests-m32/nlattr_rtmsg.gen.test
+++ b/tests-m32/nlattr_rtmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_smc_diag_msg.gen.test b/tests-m32/nlattr_smc_diag_msg.gen.test
index 3e6407e..e64d21e 100755
--- a/tests-m32/nlattr_smc_diag_msg.gen.test
+++ b/tests-m32/nlattr_smc_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_smc_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_smc_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tc_stats.gen.test b/tests-m32/nlattr_tc_stats.gen.test
index 72780d4..11cadd2 100755
--- a/tests-m32/nlattr_tc_stats.gen.test
+++ b/tests-m32/nlattr_tc_stats.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tca_stab.gen.test b/tests-m32/nlattr_tca_stab.gen.test
index 14cd1a5..81d36c7 100755
--- a/tests-m32/nlattr_tca_stab.gen.test
+++ b/tests-m32/nlattr_tca_stab.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tcamsg.gen.test b/tests-m32/nlattr_tcamsg.gen.test
index 7c30207..1a6408d 100755
--- a/tests-m32/nlattr_tcamsg.gen.test
+++ b/tests-m32/nlattr_tcamsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcamsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcamsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tcmsg.gen.test b/tests-m32/nlattr_tcmsg.gen.test
index f5bf7a9..7e70ca2 100755
--- a/tests-m32/nlattr_tcmsg.gen.test
+++ b/tests-m32/nlattr_tcmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_unix_diag_msg.gen.test b/tests-m32/nlattr_unix_diag_msg.gen.test
index d913afc..fd5b828 100755
--- a/tests-m32/nlattr_unix_diag_msg.gen.test
+++ b/tests-m32/nlattr_unix_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_unix_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_unix_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nsyscalls-d.c b/tests-m32/nsyscalls-d.c
new file mode 100644
index 0000000..1525dea
--- /dev/null
+++ b/tests-m32/nsyscalls-d.c
@@ -0,0 +1,2 @@
+#define DEBUG_PRINT 1
+#include "nsyscalls.c"
diff --git a/tests-m32/nsyscalls-d.test b/tests-m32/nsyscalls-d.test
new file mode 100755
index 0000000..2cca32f
--- /dev/null
+++ b/tests-m32/nsyscalls-d.test
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Check decoding of out-of-range syscalls along with debug ouput
+
+. "${srcdir=.}/init.sh"
+
+: ${debug_flag=-d}
+NAME=nsyscalls-d
+
+if [ "$MIPS_ABI" = "o32" ]; then
+	syscall=syscall
+	[ -z "$debug_flag" ] ||
+		skip_ "mips $MIPS_ABI is not supported by this test yet"
+else
+	syscall=none
+fi
+
+run_strace $debug_flag -e trace=$syscall ../$NAME "$STRACE_EXE" 9 \
+	2> "$LOG-err-all" > "$EXP" 9> "$EXP-err"
+
+[ -n "$debug_flag" ] || > "$EXP-err"
+
+grep "invalid syscall" "$LOG-err-all" > "$LOG-err"
+
+match_diff "$LOG" "$EXP"
+match_diff "$LOG-err" "$EXP-err"
diff --git a/tests-m32/nsyscalls-nd.test b/tests-m32/nsyscalls-nd.test
new file mode 100755
index 0000000..7d2f1e1
--- /dev/null
+++ b/tests-m32/nsyscalls-nd.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+debug_flag=
+. "${srcdir=.}"/nsyscalls-d.test
diff --git a/tests-m32/nsyscalls.c b/tests-m32/nsyscalls.c
index 29f444a..9f74867 100644
--- a/tests-m32/nsyscalls.c
+++ b/tests-m32/nsyscalls.c
@@ -2,7 +2,7 @@
  * Check decoding of out-of-range syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +32,7 @@
 #include "sysent.h"
 #include <errno.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <asm/unistd.h>
 
@@ -43,6 +44,10 @@
 
 #include "sysent_shorthand_undefs.h"
 
+#ifndef DEBUG_PRINT
+# define DEBUG_PRINT 0
+#endif
+
 #if defined __X32_SYSCALL_BIT && defined __NR_read \
  && (__X32_SYSCALL_BIT & __NR_read) != 0
 # define SYSCALL_BIT __X32_SYSCALL_BIT
@@ -50,6 +55,11 @@
 # define SYSCALL_BIT 0
 #endif
 
+#if DEBUG_PRINT
+static const char *strace_name;
+static FILE *debug_out;
+#endif
+
 static void
 test_syscall(const unsigned long nr)
 {
@@ -64,13 +74,19 @@
 
 	long rc = syscall(nr | SYSCALL_BIT,
 			  a[0], a[1], a[2], a[3], a[4], a[5]);
+
+#if DEBUG_PRINT
+	fprintf(debug_out, "%s: pid %d invalid syscall %#lx\n",
+		strace_name, getpid(), nr | SYSCALL_BIT);
+#endif
+
 #ifdef LINUX_MIPSO32
 	printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)"
 	       " = %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,
+	printf("syscall_%#lx(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)"
+	       " = %ld (errno %d)\n", nr | SYSCALL_BIT,
 	       (unsigned long long) a[0],
 	       (unsigned long long) a[1],
 	       (unsigned long long) a[2],
@@ -82,8 +98,26 @@
 }
 
 int
-main(void)
+main(int argc, char *argv[])
 {
+#if DEBUG_PRINT
+	if (argc < 3)
+		error_msg_and_fail("Not enough arguments. "
+				   "Usage: %s STRACE_NAME DEBUG_OUT_FD",
+				   argv[0]);
+
+	strace_name = argv[1];
+
+	errno = 0;
+	int debug_out_fd = strtol(argv[2], NULL, 0);
+	if (errno)
+		error_msg_and_fail("Not a number: %s", argv[2]);
+
+	debug_out = fdopen(debug_out_fd, "a");
+	if (!debug_out)
+		perror_msg_and_fail("fdopen: %d", debug_out_fd);
+#endif
+
 	test_syscall(ARRAY_SIZE(syscallent));
 
 #ifdef SYS_socket_subcall
diff --git a/tests-m32/old_mmap-P.c b/tests-m32/old_mmap-P.c
new file mode 100644
index 0000000..bb28e88
--- /dev/null
+++ b/tests-m32/old_mmap-P.c
@@ -0,0 +1,3 @@
+#define TEST_FD 9
+#define PATH_TRACING
+#include "old_mmap.c"
diff --git a/tests-m32/old_mmap-P.gen.test b/tests-m32/old_mmap-P.gen.test
new file mode 100755
index 0000000..b1de934
--- /dev/null
+++ b/tests-m32/old_mmap-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap-P -e trace=mmap -P "/dev/full" 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=mmap -P "/dev/full" 9>>/dev/full
diff --git a/tests-m32/old_mmap-v-none.c b/tests-m32/old_mmap-v-none.c
new file mode 100644
index 0000000..033503c
--- /dev/null
+++ b/tests-m32/old_mmap-v-none.c
@@ -0,0 +1 @@
+#include "old_mmap.c"
diff --git a/tests-m32/old_mmap-v-none.gen.test b/tests-m32/old_mmap-v-none.gen.test
new file mode 100755
index 0000000..a568d98
--- /dev/null
+++ b/tests-m32/old_mmap-v-none.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap-v-none -a11 -e trace=mmap -e verbose=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap -e verbose=none
diff --git a/tests-m32/old_mmap.c b/tests-m32/old_mmap.c
index 2725fb7..35ec428 100644
--- a/tests-m32/old_mmap.c
+++ b/tests-m32/old_mmap.c
@@ -2,6 +2,7 @@
  * Check decoding of "old mmap" edition of mmap syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,57 +37,64 @@
  * it would require additional efforts to filter out mmap calls made by glibc.
  */
 
-#if defined __NR_mmap && \
-(   defined __arm__ \
- || defined __i386__ \
- || (defined __s390__ && !defined __s390x__) \
-)
+#if defined __NR_mmap \
+	&& (defined __arm__ || defined __i386__ || defined __m68k__ \
+		|| defined __s390__ || defined __s390x__) \
+	&& (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))
 
 # include <stdio.h>
 # include <string.h>
 # include <sys/mman.h>
 # include <unistd.h>
 
+# ifndef TEST_FD
+#  define TEST_FD -2LU
+# endif
+
 int
 main(void)
 {
 	long rc = syscall(__NR_mmap, 0);
+# ifndef PATH_TRACING
 	printf("mmap(NULL) = %ld %s (%m)\n", rc, errno2name());
+# endif
 
-	const unsigned int args1_c[6] = {
-		0xdeadbeef,		/* addr */
-		0xfacefeed,		/* len */
+	const unsigned long args1_c[6] = {
+		(unsigned long) 0xbadc0deddeadbeefULL,	/* addr */
+		(unsigned long) 0xdeefacedfacefeedULL,	/* len */
 		PROT_READ|PROT_EXEC,	/* prot */
 		MAP_FILE|MAP_FIXED,	/* flags */
-		-2U,			/* fd */
-		0xbadc0ded		/* offset */
+		TEST_FD,		/* fd */
+		(unsigned long) 0xdecaffedbadc0dedULL	/* offset */
 	};
-	const unsigned int page_size = get_page_size();
-	const unsigned int args2_c[6] = {
+	const unsigned long page_size = get_page_size();
+	const unsigned long args2_c[6] = {
 		0,
 		page_size,
 		PROT_READ|PROT_WRITE,
 		MAP_PRIVATE|MAP_ANONYMOUS,
-		-1U,
-		0xfaced000 & -page_size
+		-1LU,
+		(unsigned long) 0xda7a1057faced000ULL & -page_size
 	};
 	void *args = tail_memdup(args1_c, sizeof(args1_c));
 
 	rc = syscall(__NR_mmap, args);
-	printf("mmap(%#x, %u, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
-	       ", %d, %#x) = %ld %s (%m)\n",
-	       args1_c[0], args1_c[1], args1_c[4], args1_c[5],
+	printf("mmap(%#lx, %lu, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
+	       ", %d, %#lx) = %ld %s (%m)\n",
+	       args1_c[0], args1_c[1], (int) args1_c[4], args1_c[5],
 	       rc, errno2name());
 
 	memcpy(args, args2_c, sizeof(args2_c));
 	rc = syscall(__NR_mmap, args);
-	printf("mmap(NULL, %u, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
-	       ", %d, %#x) = %#lx\n",
-	       args2_c[1], args2_c[4], args2_c[5], rc);
+# ifndef PATH_TRACING
+	printf("mmap(NULL, %lu, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
+	       ", %d, %#lx) = %#lx\n",
+	       args2_c[1], (int) args2_c[4], args2_c[5], rc);
+# endif
 
 	void *addr = (void *) rc;
 	if (mprotect(addr, page_size, PROT_NONE))
-		perror_msg_and_fail("mprotect(%p, %u, PROT_NONE)",
+		perror_msg_and_fail("mprotect(%p, %lu, PROT_NONE)",
 				    addr, page_size);
 
 	puts("+++ exited with 0 +++");
@@ -95,7 +103,9 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_mmap && (__arm__ || __i386__"
-		    " || (__s390__ && !__s390x__))")
+SKIP_MAIN_UNDEFINED("defined __NR_mmap "
+	"&& (defined __arm__ || defined __i386__ || defined __m68k__ "
+		"|| defined __s390__ || defined __s390x__) "
+	"&& (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))")
 
 #endif
diff --git a/tests-m32/oldselect-P.c b/tests-m32/oldselect-P.c
new file mode 100644
index 0000000..67e2134
--- /dev/null
+++ b/tests-m32/oldselect-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "oldselect.c"
diff --git a/tests-m32/oldselect-P.gen.test b/tests-m32/oldselect-P.gen.test
new file mode 100755
index 0000000..3486ffd
--- /dev/null
+++ b/tests-m32/oldselect-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-P -a13 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests-m32/oldselect-efault-P.c b/tests-m32/oldselect-efault-P.c
new file mode 100644
index 0000000..9ebf73d
--- /dev/null
+++ b/tests-m32/oldselect-efault-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "oldselect-efault.c"
diff --git a/tests-m32/oldselect-efault-P.gen.test b/tests-m32/oldselect-efault-P.gen.test
new file mode 100755
index 0000000..a3d7176
--- /dev/null
+++ b/tests-m32/oldselect-efault-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests-m32/oldselect-efault.c b/tests-m32/oldselect-efault.c
new file mode 100644
index 0000000..3c44334
--- /dev/null
+++ b/tests-m32/oldselect-efault.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2015-2018 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_select && defined __NR__newselect \
+ && __NR_select != __NR__newselect \
+ && !defined __sparc__
+
+# include <stdint.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <sys/select.h>
+
+static const char *errstr;
+
+static long
+xselect(const kernel_ulong_t args)
+{
+	static const kernel_ulong_t dummy = F8ILL_KULONG_MASK | 0xfacefeed;
+	long rc = syscall(__NR_select, args, dummy, dummy, dummy, dummy, dummy);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	unsigned long *const args = tail_alloc(sizeof(*args) * 4);
+	memset(args, 0, sizeof(*args) * 4);
+
+	xselect(0);
+#ifndef PATH_TRACING_FD
+	printf("select(NULL) = %s\n", errstr);
+#endif
+
+	xselect((uintptr_t) args);
+#ifndef PATH_TRACING_FD
+	printf("select(%p) = %s\n", args, errstr);
+#endif
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
+		    " && __NR_select != __NR__newselect"
+		    " && !defined __sparc__")
+
+#endif
diff --git a/tests-m32/oldselect-efault.gen.test b/tests-m32/oldselect-efault.gen.test
new file mode 100755
index 0000000..bfeb557
--- /dev/null
+++ b/tests-m32/oldselect-efault.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-efault -a13 -e trace=select); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select
diff --git a/tests-m32/oldselect.c b/tests-m32/oldselect.c
index 7413fc3..7f548f8 100644
--- a/tests-m32/oldselect.c
+++ b/tests-m32/oldselect.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,37 +30,38 @@
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
- && !defined SPARC
+ && !defined __sparc__
 
-# include <unistd.h>
-# include <sys/select.h>
+# define TEST_SYSCALL_NR __NR_select
+# define TEST_SYSCALL_STR "select"
+# define xselect xselect
+# include "xselect.c"
 
-int
-main(void)
+static uint32_t *args;
+
+static long
+xselect(const kernel_ulong_t nfds,
+	const kernel_ulong_t rs,
+	const kernel_ulong_t ws,
+	const kernel_ulong_t es,
+	const kernel_ulong_t tv)
 {
-	int fds[2];
-	fd_set r = {}, w = {};
-	struct timeval timeout = { .tv_sec = 0, .tv_usec = 42 };
-	long args[] = {
-		2, (long) &r, (long) &w, 0, (long) &timeout,
-		0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded, 0xdeadbeef
-	};
-
-	(void) close(0);
-	(void) close(1);
-	if (pipe(fds))
-		perror_msg_and_fail("pipe");
-
-	FD_SET(0, &w);
-	FD_SET(1, &r);
-	if (syscall(__NR_select, args))
-		perror_msg_and_skip("select");
-
-	return 0;
+	if (!args)
+		args = tail_alloc(sizeof(*args) * 5);
+	args[0] = nfds;
+	args[1] = rs;
+	args[2] = ws;
+	args[3] = es;
+	args[4] = tv;
+	long rc = syscall(TEST_SYSCALL_NR, args);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect")
+SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
+		    " && __NR_select != __NR__newselect"
+		    " && !defined __sparc__")
 
 #endif
diff --git a/tests-m32/oldselect.expected b/tests-m32/oldselect.expected
deleted file mode 100644
index d6e7f3c..0000000
--- a/tests-m32/oldselect.expected
+++ /dev/null
@@ -1,2 +0,0 @@
-select(2, [1], [0], NULL, {tv_sec=0, tv_usec=42}) = 0 (Timeout)
-+++ exited with 0 +++
diff --git a/tests-m32/oldselect.gen.test b/tests-m32/oldselect.gen.test
new file mode 100755
index 0000000..1f10cbe
--- /dev/null
+++ b/tests-m32/oldselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect -a13 -e trace=select); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select
diff --git a/tests-m32/oldselect.test b/tests-m32/oldselect.test
deleted file mode 100755
index 35661ad..0000000
--- a/tests-m32/oldselect.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check old select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a34 -eselect $args
-match_diff
-
-exit 0
diff --git a/tests-m32/open.c b/tests-m32/open.c
index 01e89b0..fe486c5 100644
--- a/tests-m32/open.c
+++ b/tests-m32/open.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,7 +31,7 @@
 
 #ifdef __NR_open
 
-# include <fcntl.h>
+# include <asm/fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
@@ -56,16 +57,11 @@
 		       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
+# ifdef O_TMPFILE
 	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 */
+	printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+	       sample, sprintrc(fd));
+# endif /* O_TMPFILE */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/openat.c b/tests-m32/openat.c
index 1d6765c..8c97441 100644
--- a/tests-m32/openat.c
+++ b/tests-m32/openat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Katerina Koukiou <k.koukiou@gmail.com>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,17 +29,36 @@
 #include "tests.h"
 #include <asm/unistd.h>
 
-#if defined __NR_openat
+#ifdef __NR_openat
 
-# include <fcntl.h>
+# include <asm/fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+#ifdef O_TMPFILE
+/* The kernel & C libraries often inline O_DIRECTORY. */
+# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
+#else
+# define STRACE_O_TMPFILE 0
+#endif
+
+static const char sample[] = "openat.sample";
+
+static void
+test_mode_flag(unsigned int mode_val, const char *mode_str,
+	       unsigned int flag_val, const char *flag_str)
+{
+	long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0);
+	printf("openat(-1, \"%s\", %s%s%s%s) = %s\n",
+	       sample, mode_str,
+	       flag_val ? "|" : "", flag_str,
+	       flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "",
+	       sprintrc(rc));
+}
+
 int
 main(void)
 {
-	static const char sample[] = "openat.sample";
-
 	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));
@@ -53,6 +73,54 @@
 		       sample, sprintrc(fd));
 	}
 
+	struct {
+		unsigned int val;
+		const char *str;
+	} modes[] = {
+		{ ARG_STR(O_RDONLY) },
+		{ ARG_STR(O_WRONLY) },
+		{ ARG_STR(O_RDWR) },
+		{ ARG_STR(O_ACCMODE) }
+	}, flags[] = {
+		{ ARG_STR(O_APPEND) },
+		{ ARG_STR(O_DIRECT) },
+		{ ARG_STR(O_DIRECTORY) },
+		{ ARG_STR(O_EXCL) },
+		{ ARG_STR(O_LARGEFILE) },
+		{ ARG_STR(O_NOATIME) },
+		{ ARG_STR(O_NOCTTY) },
+		{ ARG_STR(O_NOFOLLOW) },
+		{ ARG_STR(O_NONBLOCK) },
+		{ ARG_STR(O_SYNC) },
+		{ ARG_STR(O_TRUNC) },
+		{ ARG_STR(O_CREAT) },
+# ifdef O_CLOEXEC
+		{ ARG_STR(O_CLOEXEC) },
+# endif
+# ifdef O_DSYNC
+		{ ARG_STR(O_DSYNC) },
+# endif
+# ifdef __O_SYNC
+		{ ARG_STR(__O_SYNC) },
+# endif
+# ifdef O_PATH
+		{ ARG_STR(O_PATH) },
+# endif
+# ifdef O_TMPFILE
+		{ ARG_STR(O_TMPFILE) },
+# endif
+# ifdef __O_TMPFILE
+		{ ARG_STR(__O_TMPFILE) },
+# endif
+		{ ARG_STR(0x80000000) },
+		{ 0, "" }
+	};
+
+	for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m)
+		for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f)
+			test_mode_flag(modes[m].val, modes[m].str,
+				       flags[f].val, flags[f].str);
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests-m32/openat.gen.test b/tests-m32/openat.gen.test
index fe29e1c..29dd349 100755
--- a/tests-m32/openat.gen.test
+++ b/tests-m32/openat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -a36 -P $NAME.sample); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
+run_strace_match_diff -a36 -P $NAME.sample
diff --git a/tests-m32/options-syntax.test b/tests-m32/options-syntax.test
index 2e459c9..f81dd99 100755
--- a/tests-m32/options-syntax.test
+++ b/tests-m32/options-syntax.test
@@ -3,7 +3,7 @@
 # Check strace options syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2017 The strace developers.
+# Copyright (c) 2016-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,33 +37,10 @@
 check_e "Syscall 'chdir' for -b isn't supported" -b chdir
 check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
 
-check_e "invalid system call '-1'" -e-1
-check_e "invalid system call '-2'" -e -2
-check_e "invalid system call '-3'" -etrace=-3
-check_e "invalid system call '-4'" -e trace=-4
-check_e "invalid system call '-5'" -e trace=1,-5
-check_e "invalid system call '/non_syscall'" -e trace=/non_syscall
-check_e "invalid system call '2147483647'" -e 2147483647
-check_e "invalid system call '2147483648'" -e 2147483648
-check_e "invalid system call '4294967295'" -e 4294967295
-check_e "invalid system call '4294967296'" -e 4294967296
+check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')"
 
-check_e "invalid descriptor '-1'" -eread=-1
-check_e "invalid descriptor '-42'" -ewrite=-42
-check_e "invalid descriptor '2147483648'" -eread=2147483648
-check_e "invalid descriptor '4294967296'" -ewrite=4294967296
-check_e "invalid descriptor 'foo'" -eread=foo
-check_e "invalid descriptor ''" -ewrite=
-check_e "invalid descriptor ','" -eread=,
-check_e "invalid descriptor '!'" -ewrite='!'
-check_e "invalid descriptor '!'" -eread='0,!'
-check_e "invalid descriptor '!,'" -ewrite='!,'
-
-check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
-check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
-check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
-check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
-check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
+ff_name="$(printf '%4084s' ' ')"
+check_e_using_grep "$ff_name: File *name too long" -ff -o "$ff_name" true
 
 check_h 'must have PROG [ARGS] or -p PID'
 check_h 'PROG [ARGS] must be specified with -D' -D -p $$
@@ -80,12 +57,12 @@
 check_h "invalid -s argument: '1073741824'" -s 1073741824
 check_h "invalid -I argument: '5'" -I 5
 
-../zeroargc "$strace_exp" /bin/true 2> "$LOG" &&
+../zeroargc "$STRACE_EXE" /bin/true 2> "$LOG" &&
 	dump_log_and_fail_with \
 		'zeroargc strace failed to handle the error properly'
 cat > "$EXP" << __EOF__
-$strace_exp: must have PROG [ARGS] or -p PID
-Try '$strace_exp -h' for more information.
+$STRACE_EXE: must have PROG [ARGS] or -p PID
+Try '$STRACE_EXE -h' for more information.
 __EOF__
 diff -u -- "$EXP" "$LOG" > /dev/null || {
 	cat > "$EXP" <<- '__EOF__'
@@ -107,17 +84,17 @@
 
 	for c in i r t T y; do
 		check_e "-$c has no effect with -c
-$strace_exp: $umsg" -u :nosuchuser: -c -$c true
+$STRACE_EXE: $umsg" -u :nosuchuser: -c -$c true
 	done
 		check_e "-i has no effect with -c
-$strace_exp: -r has no effect with -c
-$strace_exp: -t has no effect with -c
-$strace_exp: -T has no effect with -c
-$strace_exp: -y has no effect with -c
-$strace_exp: $umsg" -u :nosuchuser: -cirtTy true
+$STRACE_EXE: -r has no effect with -c
+$STRACE_EXE: -t has no effect with -c
+$STRACE_EXE: -T has no effect with -c
+$STRACE_EXE: -y has no effect with -c
+$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTy true
 
 	check_e "-tt has no effect with -r
-$strace_exp: $umsg" -u :nosuchuser: -r -tt true
+$STRACE_EXE: $umsg" -u :nosuchuser: -r -tt true
 fi
 
 args='-p 2147483647'
@@ -127,7 +104,7 @@
 
 for cmd in PTRACE_SEIZE PTRACE_ATTACH; do
 	cat > "$EXP" << __EOF__
-$strace_exp: attach: ptrace($cmd, 2147483647): No such process
+$STRACE_EXE: attach: ptrace($cmd, 2147483647): No such process
 __EOF__
 	diff -- "$EXP" "$LOG" ||
 		continue
diff --git a/tests-m32/osf_utimes.gen.test b/tests-m32/osf_utimes.gen.test
index b6be305..9e683b4 100755
--- a/tests-m32/osf_utimes.gen.test
+++ b/tests-m32/osf_utimes.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-m32/perf_event_open.c b/tests-m32/perf_event_open.c
index 74ff952..667c31f 100644
--- a/tests-m32/perf_event_open.c
+++ b/tests-m32/perf_event_open.c
@@ -2,7 +2,7 @@
  * Check verbose decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -102,7 +102,8 @@
 		 use_clockid			:1,
 		 context_switch			:1,
 		 write_backward			:1,
-		 __reserved_1			:36;
+		 namespaces			:1,
+		 __reserved_1			:35;
 };
 
 static const char *
@@ -351,9 +352,17 @@
 # endif
 	printf(", write_backward=%" PRIu64, val);
 
+	val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES
+		attr->namespaces;
+# else
+		flags_data.flags.namespaces;
+# endif
+	printf(", namespaces=%" PRIu64, val);
+
 	val = flags_data.flags.__reserved_1;
 	if (val)
-		printf(", __reserved_1=%#" PRIx64 " /* Bits 63..28 */", val);
+		printf(", __reserved_1=%#" PRIx64 " /* Bits 63..29 */", val);
 
 	printf(", %s=%u",
 		attr->watermark ? "wakeup_watermark" : "wakeup_events",
@@ -523,7 +532,8 @@
 	"PERF_SAMPLE_BRANCH_IND_JUMP|" \
 	"PERF_SAMPLE_BRANCH_CALL|" \
 	"PERF_SAMPLE_BRANCH_NO_FLAGS|" \
-	"PERF_SAMPLE_BRANCH_NO_CYCLES"
+	"PERF_SAMPLE_BRANCH_NO_CYCLES|" \
+	"PERF_SAMPLE_BRANCH_TYPE_SAVE"
 
 int
 main(void)
@@ -608,7 +618,7 @@
 	static const struct u64_val_str sample_types[] = {
 		{ ARG_STR(0) },
 		{ 0x800, "PERF_SAMPLE_BRANCH_STACK" },
-		{ ARG_ULL_STR(0xdeadc0deda780000) " /* PERF_SAMPLE_??? */" },
+		{ ARG_ULL_STR(0xdeadc0deda700000) " /* PERF_SAMPLE_??? */" },
 		{ 0xffffffffffffffffULL,
 			"PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
 			"PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
@@ -618,7 +628,8 @@
 			"PERF_SAMPLE_REGS_USER|PERF_SAMPLE_STACK_USER|"
 			"PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
 			"PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
-			"PERF_SAMPLE_REGS_INTR|0xfffffffffff80000" },
+			"PERF_SAMPLE_REGS_INTR|PERF_SAMPLE_PHYS_ADDR|"
+			"0xfffffffffff00000" },
 	};
 	static const struct u64_val_str read_formats[] = {
 		{ ARG_STR(0) },
@@ -650,11 +661,11 @@
 	static const struct u64_val_str branch_sample_types[] = {
 		{ ARG_STR(0) },
 		{ 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
-		{ 0xffff, BRANCH_TYPE_ALL },
-		{ ARG_ULL_STR(0xdeadcaffeeed0000)
+		{ 0x1ffff, BRANCH_TYPE_ALL },
+		{ ARG_ULL_STR(0xdeadcaffeeec0000)
 			" /* PERF_SAMPLE_BRANCH_??? */" },
 		{ 0xffffffffffffffffULL,
-			BRANCH_TYPE_ALL "|0xffffffffffff0000" }
+			BRANCH_TYPE_ALL "|0xfffffffffffe0000" }
 	};
 	static const struct s32_val_str clockids[] = {
 		{ 11, "CLOCK_TAI" },
diff --git a/tests-m32/perf_event_open.gen.test b/tests-m32/perf_event_open.gen.test
index 85336c3..02d468a 100755
--- a/tests-m32/perf_event_open.gen.test
+++ b/tests-m32/perf_event_open.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a1 
diff --git a/tests-m32/pipe2.gen.test b/tests-m32/pipe2.gen.test
index 5a06c03..50b8fd6 100755
--- a/tests-m32/pipe2.gen.test
+++ b/tests-m32/pipe2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-m32/pkey_alloc.c b/tests-m32/pkey_alloc.c
index 4577278..4a0aa72 100644
--- a/tests-m32/pkey_alloc.c
+++ b/tests-m32/pkey_alloc.c
@@ -2,6 +2,7 @@
  * Check decoding of pkey_alloc syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -53,10 +54,12 @@
 			sizeof(kernel_ulong_t) > sizeof(int) ?
 			"PKEY_DISABLE_WRITE|0xbadc0ded00000000" :
 			"PKEY_DISABLE_WRITE" },
-		{ 0xdec0ded, "PKEY_DISABLE_ACCESS|0xdec0dec" },
-		{ 0x3, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE" },
+		{ 0xdec0ded, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_EXECUTE|"
+				"0xdec0de8" },
+		{ 0x7, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE|"
+				"PKEY_DISABLE_EXECUTE" },
 		{ ARG_STR(0) },
-		{ 0xbadc0dec, "0xbadc0dec /* PKEY_??? */" },
+		{ 0xbadc0de8, "0xbadc0de8 /* PKEY_??? */" },
 	};
 
 	long rc;
diff --git a/tests-m32/pkey_alloc.gen.test b/tests-m32/pkey_alloc.gen.test
index b3e5869..fb554ef 100755
--- a/tests-m32/pkey_alloc.gen.test
+++ b/tests-m32/pkey_alloc.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/pkey_free.gen.test b/tests-m32/pkey_free.gen.test
index 588d1aa..0374cc7 100755
--- a/tests-m32/pkey_free.gen.test
+++ b/tests-m32/pkey_free.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests-m32/pkey_mprotect.gen.test b/tests-m32/pkey_mprotect.gen.test
index 14be231..11a902a 100755
--- a/tests-m32/pkey_mprotect.gen.test
+++ b/tests-m32/pkey_mprotect.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests-m32/poll-P.c b/tests-m32/poll-P.c
new file mode 100644
index 0000000..7bbeb79
--- /dev/null
+++ b/tests-m32/poll-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "poll.c"
diff --git a/tests-m32/poll-P.test b/tests-m32/poll-P.test
new file mode 100755
index 0000000..a190572
--- /dev/null
+++ b/tests-m32/poll-P.test
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Check path tracing of poll syscall.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a16 -vepoll -P /dev/full 9>>/dev/full \
+	$args > "$EXP"
+match_diff "$LOG" "$EXP"
+
+for abbrev in 0 1 2 3 4 5; do
+	run_prog "../$NAME" $abbrev > /dev/null
+	run_strace -a16 -epoll -s$abbrev -P /dev/full 9>>/dev/full \
+		$args > "$EXP"
+	match_diff "$LOG" "$EXP"
+done
diff --git a/tests-m32/poll.c b/tests-m32/poll.c
index 2bf8c1a..c5930a3 100644
--- a/tests-m32/poll.c
+++ b/tests-m32/poll.c
@@ -1,8 +1,7 @@
 /*
- * This file is part of poll strace test.
+ * Check decoding of poll syscall.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,6 +37,7 @@
 # include <poll.h>
 # include <stdio.h>
 # include <stdlib.h>
+# include <string.h>
 # include <unistd.h>
 
 #define PRINT_EVENT(flag, member)			\
@@ -163,12 +163,19 @@
 int
 main(int ac, char **av)
 {
+# ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+# endif
+
 	tprintf("%s", "");
 
 	assert(syscall(__NR_poll, NULL, 42, 0) == -1);
 	if (ENOSYS == errno)
 		perror_msg_and_skip("poll");
+
+# ifndef PATH_TRACING_FD
 	tprintf("poll(NULL, 42, 0) = -1 EFAULT (%m)\n");
+# endif
 
 	int fds[2];
 	if (pipe(fds) || pipe(fds))
@@ -187,7 +194,93 @@
 	int rc = syscall(__NR_poll, tail_fds0, 0, timeout);
 	assert(rc == 0);
 
+# ifndef PATH_TRACING_FD
 	tprintf("poll([], 0, %d) = %d (Timeout)\n", timeout, rc);
+# endif
+
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 3);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	tail_fds0[0].fd = -1;
+	tail_fds0[2].fd = -3;
+	tail_fds0[4].events = 0;
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 2);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	tail_fds0[1].fd = -2;
+	tail_fds0[4].fd = -5;
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	struct pollfd pfds1[] = {
+		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+	};
+	struct pollfd *const tail_fds1 = tail_memdup(pfds1, sizeof(pfds1));
+	rc = syscall(__NR_poll, tail_fds1, ARRAY_SIZE(pfds1), timeout);
+	assert(rc == 0);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
+				    ARRAY_SIZE(pfds1), abbrev);
+	tprintf(", %u, %d) = %d (Timeout)\n",
+		(unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
+# endif /* !PATH_TRACING_FD */
+
+	const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
+	rc = syscall(__NR_poll, efault, 1, 0);
+	assert(rc == -1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(%p, 1, 0) = -1 EFAULT (%m)\n", efault);
+# endif
+
+	const unsigned int valid = 1;
+	const void *const epfds = tail_fds0 + ARRAY_SIZE(pfds0) - valid;
+	rc = syscall(__NR_poll, epfds, valid + 1, 0);
+	assert(rc == -1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(epfds, valid + 1, valid, abbrev);
+	errno = EFAULT;
+	tprintf(", %u, 0) = -1 EFAULT (%m)\n", valid + 1);
+# endif /* !PATH_TRACING_FD */
+
+# ifdef PATH_TRACING_FD
+	memcpy(tail_fds0, pfds0, sizeof(pfds0));
+	tail_fds0[4].fd = PATH_TRACING_FD;
 
 	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
 	assert(rc == 3);
@@ -200,60 +293,15 @@
 	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
 	tprintf(")\n");
 
-	tail_fds0[0].fd = -1;
-	tail_fds0[2].fd = -3;
-	tail_fds0[4].events = 0;
-	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
-	assert(rc == 2);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
-				    ARRAY_SIZE(pfds0), abbrev);
-	tprintf(", %u, %d) = %d (",
-		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
-	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
-	tprintf(")\n");
-
-	tail_fds0[1].fd = -2;
-	tail_fds0[4].fd = -5;
-	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
-	assert(rc == 1);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
-				    ARRAY_SIZE(pfds0), abbrev);
-	tprintf(", %u, %d) = %d (",
-		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
-	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
-	tprintf(")\n");
-
-	struct pollfd pfds1[] = {
-		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
-	};
-	struct pollfd *const tail_fds1 = tail_memdup(pfds1, sizeof(pfds1));
-	rc = syscall(__NR_poll, tail_fds1, ARRAY_SIZE(pfds1), timeout);
-	assert(rc == 0);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
-				    ARRAY_SIZE(pfds1), abbrev);
-	tprintf(", %u, %d) = %d (Timeout)\n",
-		(unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
-
-	const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
-	rc = syscall(__NR_poll, efault, 1, 0);
-	assert(rc == -1);
-	tprintf("poll(%p, 1, 0) = -1 EFAULT (%m)\n", efault);
-
-	const unsigned int valid = 1;
-	const void *const epfds = tail_fds0 + ARRAY_SIZE(pfds0) - valid;
 	rc = syscall(__NR_poll, epfds, valid + 1, 0);
 	assert(rc == -1);
+
+	/* the 1st pollfd element is readable and contains PATH_TRACING_FD */
 	tprintf("poll(");
 	print_pollfd_array_entering(epfds, valid + 1, valid, abbrev);
 	errno = EFAULT;
 	tprintf(", %u, 0) = -1 EFAULT (%m)\n", valid + 1);
+# endif /* PATH_TRACING_FD */
 
 	tprintf("+++ exited with 0 +++\n");
 	return 0;
diff --git a/tests-m32/ppoll-P.c b/tests-m32/ppoll-P.c
new file mode 100644
index 0000000..c2c572e
--- /dev/null
+++ b/tests-m32/ppoll-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "ppoll.c"
diff --git a/tests-m32/ppoll-P.gen.test b/tests-m32/ppoll-P.gen.test
new file mode 100755
index 0000000..25a9704
--- /dev/null
+++ b/tests-m32/ppoll-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-P -s2 -e trace=ppoll -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -e trace=ppoll -P /dev/full 9>>/dev/full
diff --git a/tests-m32/ppoll.c b/tests-m32/ppoll.c
index 6224183..b33f959 100644
--- a/tests-m32/ppoll.c
+++ b/tests-m32/ppoll.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of ppoll syscall.
  *
- * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,10 @@
 int
 main(void)
 {
+# ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+# endif
+
 	static const kernel_ulong_t bogus_nfds =
 		(kernel_ulong_t) 0xdeadbeeffacefeedULL;
 	static const kernel_ulong_t bogus_sigsetsize =
@@ -76,28 +80,36 @@
 	sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
 	if (ENOSYS == errno)
 		perror_msg_and_skip("ppoll");
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
 	       (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
 	       errstr);
+# endif
 
 	sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
 		  (unsigned long) efault + 16, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
 	       efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+# endif
 
 	ts->tv_sec = 0xdeadbeefU;
 	ts->tv_nsec = 0xfacefeedU;
 	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
 	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 	       sigset_size, errstr);
+# endif
 
 	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
 	ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
 	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
 	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 	       sigset_size, errstr);
+# endif
 
 	if (pipe(pipe_fd) || pipe(pipe_fd + 2))
 		perror_msg_and_fail("pipe");
@@ -124,24 +136,56 @@
 		       (unsigned long) sigmask, sigset_size);
 	if (rc != 2)
 		perror_msg_and_fail("ppoll 1");
+# ifndef PATH_TRACING_FD
 	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
 	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
-#if VERBOSE
+#  if VERBOSE
 	       ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
-#else
+#  else
 	       ", ...]"
-#endif
+#  endif
 	       ", %u, {tv_sec=42, tv_nsec=999999999}, [%s], %u) = %ld"
 	       " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
 	       ", left {tv_sec=%u, tv_nsec=%u})\n",
 	       pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
-#if VERBOSE
+#  if VERBOSE
 	       pipe_fd[2], pipe_fd[3],
-#endif
+#  endif
 	       (unsigned int) ARRAY_SIZE(fds1), USR2_CHLD_str,
 	       (unsigned int) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
 	       pipe_fd[3], (unsigned int) ts->tv_sec,
 	       (unsigned int) ts->tv_nsec);
+# endif /* !PATH_TRACING_FD */
+
+# ifdef PATH_TRACING_FD
+	ts->tv_sec = 123;
+	ts->tv_nsec = 987654321;
+	fds[3].fd = PATH_TRACING_FD;
+
+	rc = sys_ppoll((unsigned long) fds,
+		       F8ILL_KULONG_MASK | ARRAY_SIZE(fds1), (unsigned long) ts,
+		       (unsigned long) sigmask, sigset_size);
+	if (rc != 2)
+		perror_msg_and_fail("ppoll -P");
+	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
+	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
+#  if VERBOSE
+	       ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
+#  else
+	       ", ...]"
+#  endif
+	       ", %u, {tv_sec=123, tv_nsec=987654321}, [%s], %u) = %ld"
+	       " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
+	       ", left {tv_sec=%u, tv_nsec=%u})\n",
+	       pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
+#  if VERBOSE
+	       pipe_fd[2], PATH_TRACING_FD,
+#  endif
+	       (unsigned int) ARRAY_SIZE(fds1), USR2_CHLD_str,
+	       (unsigned int) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+	       PATH_TRACING_FD, (unsigned int) ts->tv_sec,
+	       (unsigned int) ts->tv_nsec);
+# endif /* PATH_TRACING_FD */
 
 	ts->tv_sec = 0;
 	ts->tv_nsec = 999;
@@ -163,23 +207,27 @@
 		       (unsigned long) sigmask, sigset_size);
 	if (rc != 0)
 		perror_msg_and_fail("ppoll 2");
+# ifndef PATH_TRACING_FD
 	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
 	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}], %u"
 	       ", {tv_sec=0, tv_nsec=999}, ~[HUP KILL STOP], %u)"
 	       " = %ld (Timeout)\n",
 	       pipe_fd[1], pipe_fd[0], POLLWRNORM_str,
 	       (unsigned) ARRAY_SIZE(fds2), sigset_size, rc);
+# endif /* !PATH_TRACING_FD */
 
 	if (F8ILL_KULONG_SUPPORTED) {
 		sys_ppoll(f8ill_ptr_to_kulong(fds), ARRAY_SIZE(fds2),
 			  f8ill_ptr_to_kulong(ts), f8ill_ptr_to_kulong(sigmask),
 			  sigset_size);
+# ifndef PATH_TRACING_FD
 		printf("ppoll(%#llx, %u, %#llx, %#llx, %u) = %s\n",
 		       (unsigned long long) f8ill_ptr_to_kulong(fds),
 		       (unsigned) ARRAY_SIZE(fds2),
 		       (unsigned long long) f8ill_ptr_to_kulong(ts),
 		       (unsigned long long) f8ill_ptr_to_kulong(sigmask),
 		       (unsigned) sigset_size, errstr);
+# endif /* !PATH_TRACING_FD */
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/ppoll.gen.test b/tests-m32/ppoll.gen.test
index 4c07598..120e953 100755
--- a/tests-m32/ppoll.gen.test
+++ b/tests-m32/ppoll.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s2
+run_strace_match_diff -s2 
diff --git a/tests-m32/prctl-dumpable.c b/tests-m32/prctl-dumpable.c
index 1049bce..52c1668 100644
--- a/tests-m32/prctl-dumpable.c
+++ b/tests-m32/prctl-dumpable.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,7 +33,8 @@
 #include <asm/unistd.h>
 #include <linux/prctl.h>
 
-#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE
+#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE \
+ && !defined __ia64__
 
 # include <stdio.h>
 # include <unistd.h>
@@ -101,6 +103,7 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE"
+		    " && !__ia64__")
 
 #endif
diff --git a/tests-m32/preadv.gen.test b/tests-m32/preadv.gen.test
index 8fb7b54..c3fabe6 100755
--- a/tests-m32/preadv.gen.test
+++ b/tests-m32/preadv.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-m32/print_user_desc.c b/tests-m32/print_user_desc.c
new file mode 100644
index 0000000..2dac387
--- /dev/null
+++ b/tests-m32/print_user_desc.c
@@ -0,0 +1,78 @@
+/*
+ * Auxiliary printing function for the struct user_desc type.
+ * Used by modify_ldt and xet_thread_area tests.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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"
+
+#ifdef HAVE_STRUCT_USER_DESC
+
+# include <asm/ldt.h>
+
+/**
+ * Print user_desc structure.
+ *
+ * @param us        Pointer to struct user_desc to print.
+ * @param entry_str If not NULL, the string is printed as a value of
+ *                  entry_number field.
+ */
+static void
+print_user_desc(struct user_desc *us, const char *entry_str)
+{
+	if (entry_str)
+		printf("{entry_number=%s", entry_str);
+	else
+		printf("{entry_number=%u", us->entry_number);
+
+	printf(", base_addr=%#08x"
+	       ", limit=%#08x"
+	       ", seg_32bit=%u"
+	       ", contents=%u"
+	       ", read_exec_only=%u"
+	       ", limit_in_pages=%u"
+	       ", seg_not_present=%u"
+	       ", useable=%u"
+# ifdef __x86_64__
+	       ", lm=%u"
+# endif
+	       "}",
+	       us->base_addr,
+	       us->limit,
+	       us->seg_32bit,
+	       us->contents,
+	       us->read_exec_only,
+	       us->limit_in_pages,
+	       us->seg_not_present,
+	       us->useable
+# ifdef __x86_64__
+	       , us->lm
+# endif
+	       );
+}
+
+#endif /* HAVE_STRUCT_USER_DESC */
diff --git a/tests-m32/printpath-umovestr.c b/tests-m32/printpath-umovestr.c
index a7251e5..0d5955f 100644
--- a/tests-m32/printpath-umovestr.c
+++ b/tests-m32/printpath-umovestr.c
@@ -2,6 +2,7 @@
  * Test regular printpath/umovestr.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,8 +30,8 @@
 
 #include "tests.h"
 #include "test_ucopy.h"
+#include <limits.h>
 #include <stdio.h>
-#include <sys/param.h>
 
 int
 main(void)
diff --git a/tests-m32/prlimit64.gen.test b/tests-m32/prlimit64.gen.test
index 11964a5..2c94fc9 100755
--- a/tests-m32/prlimit64.gen.test
+++ b/tests-m32/prlimit64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/pselect6.gen.test b/tests-m32/pselect6.gen.test
index c89e705..29d3896 100755
--- a/tests-m32/pselect6.gen.test
+++ b/tests-m32/pselect6.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/ptrace.c b/tests-m32/ptrace.c
index d776dcd..c70d568 100644
--- a/tests-m32/ptrace.c
+++ b/tests-m32/ptrace.c
@@ -2,7 +2,7 @@
  * Check decoding of ptrace syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,12 +32,12 @@
 #include <asm/unistd.h>
 
 #include <errno.h>
+#include "ptrace.h"
 #include <signal.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/wait.h>
 #include <unistd.h>
-#include "ptrace.h"
 #include <linux/audit.h>
 
 static const char *errstr;
diff --git a/tests-m32/pure_executables.am b/tests-m32/pure_executables.am
index 2cae9ae..128028f 100644
--- a/tests-m32/pure_executables.am
+++ b/tests-m32/pure_executables.am
@@ -104,6 +104,7 @@
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_kvm_run \
   ioctl_loop \
   ioctl_mtd \
   ioctl_rtc \
@@ -154,6 +155,7 @@
   mmap64 \
   mmsg \
   mmsg_name \
+  modify_ldt \
   mount \
   move_pages \
   mq \
@@ -223,9 +225,12 @@
   nlattr_tcmsg \
   nlattr_unix_diag_msg \
   old_mmap \
+  old_mmap-P \
+  old_mmap-v-none \
   oldfstat \
   oldlstat \
   oldselect \
+  oldselect-efault \
   oldstat \
   open \
   openat \
@@ -239,7 +244,9 @@
   pkey_free \
   pkey_mprotect \
   poll \
+  poll-P \
   ppoll \
+  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -282,6 +289,7 @@
   renameat \
   renameat2 \
   request_key \
+  riscv_flush_icache \
   rmdir \
   rt_sigaction \
   rt_sigpending \
@@ -291,6 +299,12 @@
   rt_sigsuspend \
   rt_sigtimedwait \
   rt_tgsigqueueinfo \
+  s390_guarded_storage \
+  s390_guarded_storage-v \
+  s390_pci_mmio_read_write \
+  s390_runtime_instr \
+  s390_sthyi \
+  s390_sthyi-v \
   sched_get_priority_mxx \
   sched_rr_get_interval \
   sched_xetaffinity \
@@ -342,6 +356,7 @@
   so_peercred \
   sock_filter-v \
   socketcall \
+  sockopt-sol_netlink \
   splice \
   stat \
   stat64 \
@@ -393,6 +408,7 @@
   xattr \
   xattr-strings \
   xet_robust_list \
+  xet_thread_area_x86 \
   xetitimer \
   xetpgid \
   xetpriority \
diff --git a/tests-m32/pure_executables.list b/tests-m32/pure_executables.list
index d98b17d..2f602a9 100755
--- a/tests-m32/pure_executables.list
+++ b/tests-m32/pure_executables.list
@@ -103,6 +103,7 @@
 ioctl_block
 ioctl_dm
 ioctl_evdev
+ioctl_kvm_run
 ioctl_loop
 ioctl_mtd
 ioctl_rtc
@@ -153,6 +154,7 @@
 mmap64
 mmsg
 mmsg_name
+modify_ldt
 mount
 move_pages
 mq
@@ -222,9 +224,12 @@
 nlattr_tcmsg
 nlattr_unix_diag_msg
 old_mmap
+old_mmap-P
+old_mmap-v-none
 oldfstat
 oldlstat
 oldselect
+oldselect-efault
 oldstat
 open
 openat
@@ -238,7 +243,9 @@
 pkey_free
 pkey_mprotect
 poll
+poll-P
 ppoll
+ppoll-P
 prctl-arg2-intptr
 prctl-dumpable
 prctl-name
@@ -281,6 +288,7 @@
 renameat
 renameat2
 request_key
+riscv_flush_icache
 rmdir
 rt_sigaction
 rt_sigpending
@@ -290,6 +298,12 @@
 rt_sigsuspend
 rt_sigtimedwait
 rt_tgsigqueueinfo
+s390_guarded_storage
+s390_guarded_storage-v
+s390_pci_mmio_read_write
+s390_runtime_instr
+s390_sthyi
+s390_sthyi-v
 sched_get_priority_mxx
 sched_rr_get_interval
 sched_xetaffinity
@@ -341,6 +355,7 @@
 so_peercred
 sock_filter-v
 socketcall
+sockopt-sol_netlink
 splice
 stat
 stat64
@@ -392,6 +407,7 @@
 xattr
 xattr-strings
 xet_robust_list
+xet_thread_area_x86
 xetitimer
 xetpgid
 xetpriority
diff --git a/tests-m32/qual_fault-syntax.test b/tests-m32/qual_fault-syntax.test
index 0cce539..43ade76 100755
--- a/tests-m32/qual_fault-syntax.test
+++ b/tests-m32/qual_fault-syntax.test
@@ -2,7 +2,7 @@
 #
 # Check -e fault= syntax.
 #
-# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -40,16 +40,7 @@
 		"strace -e fault=$* failed to handle an argument error properly"
 }
 
-for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
-	   invalid_syscall_name \
-	   invalid_syscall_name:when=3 \
-	   -1 \!-1 \
-	   -1:when=4 \
-	   -2 \
-	   -2:when=5 \
-	   32767 \!32767 \
-	   32767:when=6 \
-	   chdir:42 \!chdir:42 \
+for arg in chdir:42 \!chdir:42 \
 	   chdir:42:when=7 \
 	   chdir:invalid \
 	   chdir:invalid:when=8 \
@@ -92,12 +83,6 @@
 	   chdir:when=65536:error=30 \
 	   chdir:when=1+65536 \
 	   chdir:when=1+65536:error=31 \
-	   file,nonsense \
-	   \!desc,nonsense \
-	   chdir,nonsense \
-	   \!chdir,nonsense \
-	   1,nonsense \
-	   \!1,nonsense \
 	   chdir:retval=0 \
 	   chdir:signal=1 \
 	   chdir:error=1:error=2 \
diff --git a/tests-m32/qual_fault.c b/tests-m32/qual_fault.c
index 05401de..670d9fe 100644
--- a/tests-m32/qual_fault.c
+++ b/tests-m32/qual_fault.c
@@ -2,7 +2,7 @@
  * Check that fault injection works properly.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,11 +33,11 @@
 #include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
diff --git a/tests-m32/qual_inject-syntax.test b/tests-m32/qual_inject-syntax.test
index 7aa6180..46cead2 100755
--- a/tests-m32/qual_inject-syntax.test
+++ b/tests-m32/qual_inject-syntax.test
@@ -2,7 +2,7 @@
 #
 # Check -e inject= syntax.
 #
-# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -40,17 +40,7 @@
 		"strace -e inject=$* failed to handle an argument error properly"
 }
 
-for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
-	   invalid_syscall_name \
-	   invalid_syscall_name:when=3 \
-	   -1 \!-1 \
-	   -1:when=4 \
-	   -2 \
-	   -2:when=5 \
-	   32767 \!32767 \
-	   32767:when=6 \
-	   42 \
-	   chdir \
+for arg in 42 chdir \
 	   chdir:42 \!chdir:42 \
 	   chdir:42:when=7 \
 	   chdir:invalid \
@@ -94,12 +84,6 @@
 	   chdir:when=65536:error=30 \
 	   chdir:when=1+65536 \
 	   chdir:when=1+65536:error=31 \
-	   file,nonsense \
-	   \!desc,nonsense \
-	   chdir,nonsense \
-	   \!chdir,nonsense \
-	   1,nonsense \
-	   \!1,nonsense \
 	   chdir:retval=-1 \
 	   chdir:signal=0 \
 	   chdir:signal=129 \
diff --git a/tests-m32/quotactl.gen.test b/tests-m32/quotactl.gen.test
index c6ad6e1..6d2dc75 100755
--- a/tests-m32/quotactl.gen.test
+++ b/tests-m32/quotactl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/readahead.gen.test b/tests-m32/readahead.gen.test
index 4e88efa..c27ab0d 100755
--- a/tests-m32/readahead.gen.test
+++ b/tests-m32/readahead.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a1 
diff --git a/tests-m32/readdir.gen.test b/tests-m32/readdir.gen.test
index 10da83b..09aad4f 100755
--- a/tests-m32/readdir.gen.test
+++ b/tests-m32/readdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests-m32/readlink.gen.test b/tests-m32/readlink.gen.test
index 755fc8b..4263234 100755
--- a/tests-m32/readlink.gen.test
+++ b/tests-m32/readlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
+run_strace_match_diff -xx 
diff --git a/tests-m32/readlinkat.gen.test b/tests-m32/readlinkat.gen.test
index 2a50299..d7de993 100755
--- a/tests-m32/readlinkat.gen.test
+++ b/tests-m32/readlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
+run_strace_match_diff -xx 
diff --git a/tests-m32/reboot.c b/tests-m32/reboot.c
index ce651dc..3f819ce 100644
--- a/tests-m32/reboot.c
+++ b/tests-m32/reboot.c
@@ -10,21 +10,83 @@
 # define INVALID_MAGIC 319887762
 # define INVALID_CMD 0x01234568
 
+# define STR32 "AbCdEfGhIjKlMnOpQrStUvWxYz012345"
+# define STR128 STR32 STR32 STR32 STR32
+
 int
 main(void)
 {
+	static const kernel_ulong_t bogus_magic1 =
+		(kernel_ulong_t) 0xFFFFFFFFFFFFFFFFULL;
+	static const kernel_ulong_t bogus_magic2 =
+		(kernel_ulong_t) 0xdeadfacefa57beefULL;
+	static const kernel_ulong_t bogus_cmd =
+		(kernel_ulong_t) 0xbadda7a09caffee1ULL;
 	static const char buf[] = "reboot";
-	long rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
+	static const char str256_buf[] = STR128 STR128;
+
+	long rc;
+	char *str256 = tail_memdup(str256_buf, sizeof(str256_buf) - 1);
+
+	rc = syscall(__NR_reboot, 0, 0, 0, 0);
+	printf("reboot(0 /* LINUX_REBOOT_MAGIC_??? */, "
+	       "0 /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_CAD_OFF) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_reboot, bogus_magic1, bogus_magic2, bogus_cmd, -1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_CMD_??? */) = %s\n",
+	       (unsigned int) bogus_magic1, (unsigned int) bogus_magic2,
+	       (unsigned int) bogus_cmd, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
 			  INVALID_MAGIC, LINUX_REBOOT_CMD_RESTART2, buf);
 	printf("reboot(LINUX_REBOOT_MAGIC1, %#x /* LINUX_REBOOT_MAGIC_??? */,"
-	       " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %ld %s (%m)\n",
-	       INVALID_MAGIC, buf, rc, errno2name());
+	       " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %s\n",
+	       INVALID_MAGIC, buf, sprintrc(rc));
 
 	rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
 		     LINUX_REBOOT_MAGIC2, INVALID_CMD);
 	printf("reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,"
-	       " %#x /* LINUX_REBOOT_CMD_??? */) = %ld %s (%m)\n",
-	       INVALID_CMD, rc, errno2name());
+	       " %#x /* LINUX_REBOOT_CMD_??? */) = %s\n",
+	       INVALID_CMD, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2A,
+			  LINUX_REBOOT_CMD_RESTART2, str256);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2A, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, str256, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2B,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2B, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, str256 + 1, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2C,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 2);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2C, "
+	       "LINUX_REBOOT_CMD_RESTART2, %p) = %s\n",
+	       INVALID_MAGIC, str256 + 2, sprintrc(rc));
+
+	str256[255] = '\0';
+	rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1,
+			  LINUX_REBOOT_CMD_RESTART2, str256);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, (unsigned int) bogus_magic1, str256,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.254s\") = %s\n",
+	       INVALID_MAGIC, (unsigned int) bogus_magic1, str256 + 1,
+	       sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/reboot.gen.test b/tests-m32/reboot.gen.test
index 0a48dea..06d2f0c 100755
--- a/tests-m32/reboot.gen.test
+++ b/tests-m32/reboot.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot -s 256); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff -s 256
diff --git a/tests-m32/recvfrom.gen.test b/tests-m32/recvfrom.gen.test
index c23780c..2741d21 100755
--- a/tests-m32/recvfrom.gen.test
+++ b/tests-m32/recvfrom.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-m32/remap_file_pages.c b/tests-m32/remap_file_pages.c
index 452d2de..4e40963 100644
--- a/tests-m32/remap_file_pages.c
+++ b/tests-m32/remap_file_pages.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of remap_file_pages syscall.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,22 +33,62 @@
 #ifdef __NR_remap_file_pages
 
 # include <stdio.h>
-# include <sys/mman.h>
+# include <stdint.h>
 # include <unistd.h>
+# include <linux/mman.h>
+
+static const char *errstr;
+
+static long
+k_remap_file_pages(const kernel_ulong_t addr,
+		   const kernel_ulong_t size,
+		   const kernel_ulong_t prot,
+		   const kernel_ulong_t pgoff,
+		   const kernel_ulong_t flags)
+{
+	const long rc = syscall(__NR_remap_file_pages,
+				addr, size, prot, pgoff, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
-	const unsigned long size = (unsigned long) 0xdefaced1bad2f00dULL;
-	const unsigned long prot = PROT_READ|PROT_WRITE|PROT_EXEC;
-	const unsigned long pgoff = (unsigned long) 0xcaf3babebad4deedULL;
-	const unsigned long flags = MAP_PRIVATE|MAP_ANONYMOUS;
+	kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+	kernel_ulong_t size = (kernel_ulong_t) 0xdefaced1bad2f00dULL;
+	kernel_ulong_t prot = PROT_READ|PROT_WRITE|PROT_EXEC;
+	kernel_ulong_t pgoff = (kernel_ulong_t) 0xcaf3babebad4deedULL;
+	kernel_ulong_t flags = MAP_PRIVATE|MAP_ANONYMOUS;
 
-	long rc = syscall(__NR_remap_file_pages, addr, size, prot, pgoff, flags);
-	printf("remap_file_pages(%#lx, %lu, %s, %lu, %s) = %ld %s (%m)\n",
-	       addr, size, "PROT_READ|PROT_WRITE|PROT_EXEC", pgoff,
-	       "MAP_PRIVATE|MAP_ANONYMOUS", rc, errno2name());
+	k_remap_file_pages(addr, size, prot, pgoff, flags);
+	printf("remap_file_pages(%#jx, %ju, %s, %ju, %s) = %s\n",
+	       (uintmax_t) addr, (uintmax_t) size,
+	       "PROT_READ|PROT_WRITE|PROT_EXEC",
+	       (uintmax_t) pgoff, "MAP_PRIVATE|MAP_ANONYMOUS", errstr);
+
+#ifdef MAP_HUGETLB
+# ifndef MAP_HUGE_2MB
+#  ifndef MAP_HUGE_SHIFT
+#   define MAP_HUGE_SHIFT 26
+#  endif
+#  define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
+# endif /* !MAP_HUGE_2MB */
+	addr = (kernel_ulong_t) 0xfacefeeddeadf00dULL;
+	size = (kernel_ulong_t) 0xdefaced1bad2beefULL;
+	prot = (kernel_ulong_t) 0xdefaced00000000ULL | PROT_NONE;
+	flags = MAP_TYPE | MAP_FIXED | MAP_NORESERVE | MAP_HUGETLB | MAP_HUGE_2MB;
+
+	k_remap_file_pages(addr, size, prot, pgoff, flags);
+	printf("remap_file_pages(%#jx, %ju, %s, %ju"
+	       ", %#x /* MAP_??? */"
+	       "|MAP_FIXED|MAP_NORESERVE|MAP_HUGETLB|21<<MAP_HUGE_SHIFT)"
+	       " = %s\n",
+	       (uintmax_t) addr, (uintmax_t) size,
+	       prot == PROT_NONE ? "PROT_NONE" :
+				   "0xdefaced00000000 /* PROT_??? */",
+	       (uintmax_t) pgoff, MAP_TYPE, errstr);
+#endif /* MAP_HUGETLB */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/remap_file_pages.gen.test b/tests-m32/remap_file_pages.gen.test
index e489473..b358988 100755
--- a/tests-m32/remap_file_pages.gen.test
+++ b/tests-m32/remap_file_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/rename.gen.test b/tests-m32/rename.gen.test
index 07f0180..81fb039 100755
--- a/tests-m32/rename.gen.test
+++ b/tests-m32/rename.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-m32/renameat.gen.test b/tests-m32/renameat.gen.test
index f2879cd..dbc6e05 100755
--- a/tests-m32/renameat.gen.test
+++ b/tests-m32/renameat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/renameat2.gen.test b/tests-m32/renameat2.gen.test
index cd7c34c..78251cb 100755
--- a/tests-m32/renameat2.gen.test
+++ b/tests-m32/renameat2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/riscv_flush_icache.c b/tests-m32/riscv_flush_icache.c
new file mode 100644
index 0000000..8aaeda5
--- /dev/null
+++ b/tests-m32/riscv_flush_icache.c
@@ -0,0 +1,93 @@
+/*
+ * Check decoding of riscv_flush_icache syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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>
+
+#include "scno.h"
+
+#ifdef __NR_riscv_flush_icache
+
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int main(void)
+{
+	static struct {
+		kernel_ulong_t addr;
+		const char *str;
+	} addrs[] = {
+		{ (kernel_ulong_t) (uintptr_t) ARG_STR(NULL) },
+		{ (kernel_ulong_t) 0xbadc0deddeadf157ULL,
+			sizeof(kernel_ulong_t) == 8 ? "0xbadc0deddeadf157" :
+			"0xdeadf157" },
+	};
+	static struct {
+		kernel_ulong_t val;
+		const char *str;
+	} flags[] = {
+		{ ARG_STR(0) },
+		{ 1, "SYS_RISCV_FLUSH_ICACHE_LOCAL" },
+		{ (kernel_ulong_t) 0xfacefeedfffffffeULL,
+			sizeof(kernel_ulong_t) == 8 ?
+			"0xfacefeedfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" :
+			"0xfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" },
+		{ (kernel_ulong_t) 0xfacefeedffffffffULL,
+			sizeof(kernel_ulong_t) == 8 ?
+			"SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfacefeedfffffffe" :
+			"SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfffffffe" },
+	};
+
+	for (size_t i = 0; i < ARRAY_SIZE(addrs); i++) {
+		for (size_t j = 0; j < ARRAY_SIZE(addrs); j++) {
+			for (size_t k = 0; k < ARRAY_SIZE(flags); k++) {
+				long rc = syscall(__NR_riscv_flush_icache,
+						  addrs[i].addr,
+						  addrs[j].addr,
+						  flags[k].val);
+
+				printf("riscv_flush_icache(%s, %s, %s) = %s\n",
+				       addrs[i].str, addrs[j].str, flags[k].str,
+				       sprintrc(rc));
+			}
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_riscv_flush_icache");
+
+#endif
diff --git a/tests-m32/riscv_flush_icache.gen.test b/tests-m32/riscv_flush_icache.gen.test
new file mode 100755
index 0000000..1a1f793
--- /dev/null
+++ b/tests-m32/riscv_flush_icache.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (riscv_flush_icache -a34 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 
diff --git a/tests-m32/rmdir.gen.test b/tests-m32/rmdir.gen.test
index b511039..8b346af 100755
--- a/tests-m32/rmdir.gen.test
+++ b/tests-m32/rmdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-m32/rt_sigpending.gen.test b/tests-m32/rt_sigpending.gen.test
index 0458876..d52858a 100755
--- a/tests-m32/rt_sigpending.gen.test
+++ b/tests-m32/rt_sigpending.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/rt_sigprocmask.gen.test b/tests-m32/rt_sigprocmask.gen.test
index a21c6db..67fcdc0 100755
--- a/tests-m32/rt_sigprocmask.gen.test
+++ b/tests-m32/rt_sigprocmask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/rt_sigqueueinfo.gen.test b/tests-m32/rt_sigqueueinfo.gen.test
index 7baf0e4..d11eecc 100755
--- a/tests-m32/rt_sigqueueinfo.gen.test
+++ b/tests-m32/rt_sigqueueinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-m32/rt_sigreturn.gen.test b/tests-m32/rt_sigreturn.gen.test
index 0672f11..d8b153e 100755
--- a/tests-m32/rt_sigreturn.gen.test
+++ b/tests-m32/rt_sigreturn.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1'); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1' ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal='!USR1'
+run_strace_match_diff -esignal='!USR1' 
diff --git a/tests-m32/rt_sigtimedwait.gen.test b/tests-m32/rt_sigtimedwait.gen.test
index 2b18e7a..a9409ae 100755
--- a/tests-m32/rt_sigtimedwait.gen.test
+++ b/tests-m32/rt_sigtimedwait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
+run_strace_match_diff -a38 
diff --git a/tests-m32/rt_tgsigqueueinfo.gen.test b/tests-m32/rt_tgsigqueueinfo.gen.test
index 407bbff..0539e35 100755
--- a/tests-m32/rt_tgsigqueueinfo.gen.test
+++ b/tests-m32/rt_tgsigqueueinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-m32/run.sh b/tests-m32/run.sh
index d1b796c..208aa0f 100755
--- a/tests-m32/run.sh
+++ b/tests-m32/run.sh
@@ -9,4 +9,9 @@
 $TIMEOUT true > /dev/null 2>&1 ||
 	TIMEOUT=
 
-exec $TIMEOUT "$@"
+if [ $# -eq 0 ]; then
+	echo 'No command or test-file specified' >&2
+	exit 1
+fi
+
+exec $TIMEOUT "$@" < /dev/null
diff --git a/tests-m32/s390_guarded_storage-v.c b/tests-m32/s390_guarded_storage-v.c
new file mode 100644
index 0000000..05afd9f
--- /dev/null
+++ b/tests-m32/s390_guarded_storage-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "s390_guarded_storage.c"
diff --git a/tests-m32/s390_guarded_storage-v.gen.test b/tests-m32/s390_guarded_storage-v.gen.test
new file mode 100755
index 0000000..045ff76
--- /dev/null
+++ b/tests-m32/s390_guarded_storage-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_guarded_storage -a32 -v
diff --git a/tests-m32/s390_guarded_storage.c b/tests-m32/s390_guarded_storage.c
new file mode 100644
index 0000000..ab67c15
--- /dev/null
+++ b/tests-m32/s390_guarded_storage.c
@@ -0,0 +1,229 @@
+/*
+ * Check decoding of s390_guarded_storage syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_guarded_storage && defined HAVE_ASM_GUARDED_STORAGE_H
+
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <asm/guarded_storage.h>
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
+static void
+gs_no_arg(kernel_ulong_t val, const char *val_str)
+{
+	static const kernel_ulong_t bogus_addr =
+		(kernel_ulong_t) 0xcaffeedadeadbed5ULL;
+	static const kernel_ulong_t bogus_cmd_mask =
+		(kernel_ulong_t) 0xbadc0ded00000000ULL;
+	long rc;
+
+	rc = syscall(__NR_s390_guarded_storage, val | bogus_cmd_mask,
+		     bogus_addr);
+	printf("s390_guarded_storage(%s) = %s\n", val_str, sprintrc(rc));
+}
+
+static void
+gs_print_epl(uint64_t addr, bool valid, const char *str)
+{
+	if (!valid) {
+		if (str)
+			printf("%s", str);
+		else
+			printf("%#" PRIx64, addr);
+
+		return;
+	}
+
+	struct gs_epl *gsepl = (struct gs_epl *) (uintptr_t) addr;
+
+	printf("[{");
+
+# if VERBOSE
+	if (gsepl->pad1)
+		printf("pad1=%#02x, ", gsepl->pad1);
+
+	printf("gs_eam=%#02x /* extended addressing mode: %u, "
+	       "basic addressing mode: %u */"
+	       ", gs_eci=%#02x /* CPU in TX: %u, CPU in CX: %u, "
+	       "instruction: %s */"
+	       ", gs_eai=%#02x /* DAT: %u, address space indication: %u, "
+	       "AR number: %u */, ",
+	       gsepl->gs_eam, gsepl->e, gsepl->b,
+	       gsepl->gs_eci, gsepl->tx, gsepl->cx,
+	       gsepl->in ? "LLGFGS": "LGG",
+	       gsepl->gs_eai, gsepl->t, gsepl->as, gsepl->ar);
+
+	if (gsepl->pad2)
+		printf("pad2=%#08x, ", gsepl->pad2);
+# endif /* VERBOSE */
+
+	printf("gs_eha=%#llx, ", (unsigned long long) gsepl->gs_eha);
+
+# if VERBOSE
+	printf("gs_eia=%#llx, gs_eoa=%#llx, gs_eir=%#llx, gs_era=%#llx",
+	       (unsigned long long) gsepl->gs_eia,
+	       (unsigned long long) gsepl->gs_eoa,
+	       (unsigned long long) gsepl->gs_eir,
+	       (unsigned long long) gsepl->gs_era);
+# else /* !VERBOSE */
+	printf("...");
+# endif /* VERBOSE */
+
+	printf("}]");
+}
+
+static void
+gs_set_cb(kernel_ulong_t addr, bool valid, bool epl_valid,
+	  const char *bc_str, const char *epl_str)
+{
+	static const kernel_ulong_t bogus_cmd_mask =
+		(kernel_ulong_t) 0xda7a105700000000ULL;
+
+	long rc;
+
+	printf("s390_guarded_storage(GS_SET_BC_CB, ");
+
+	if (valid) {
+		struct gs_cb *gscb = (struct gs_cb *) (uintptr_t) addr;
+
+		printf("{");
+
+		if (gscb->reserved)
+			printf("reserved=%#016llx, ",
+			       (unsigned long long) gscb->reserved);
+
+		printf("gsd=%#16llx",
+		       (unsigned long long) gscb->gsd);
+# if VERBOSE
+		printf(" /* GS origin: ");
+
+		unsigned int gsc = gscb->gsd & 0x3F;
+		unsigned int gls = (gscb->gsd >> 8) & 7;
+		bool gsc_valid = gsc >= 25 && gsc <= 56;
+
+		if (gsc_valid) {
+			uint64_t gls = gscb->gsd >> gsc;
+			int field_size = 2 + (67 - gsc) / 4;
+
+			printf("%#0*" PRIx64, field_size, gls);
+		} else {
+			printf("[invalid]");
+		}
+
+		printf(", guard load shift: %u, GS characteristic: %u */",
+		       gls, gsc);
+# endif /* VERBOSE */
+
+		printf(", gssm=%#016llx, gs_epl_a=",
+		       (unsigned long long) gscb->gssm);
+
+		gs_print_epl(gscb->gs_epl_a, epl_valid, epl_str);
+
+		printf("}");
+	} else {
+		if (bc_str)
+			printf("%s", bc_str);
+		else
+			printf("%#llx", (unsigned long long) addr);
+	}
+
+	rc = syscall(__NR_s390_guarded_storage,
+		     GS_SET_BC_CB | bogus_cmd_mask, addr);
+	printf(") = %s\n", sprintrc(rc));
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_cmd =
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL;
+	static const kernel_ulong_t bogus_addr =
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL;
+
+	struct gs_cb *gscb = tail_alloc(sizeof(*gscb));
+	struct gs_epl *gsepl = tail_alloc(sizeof(*gsepl));
+
+	long rc;
+
+	rc = syscall(__NR_s390_guarded_storage, 5, 0);
+	printf("s390_guarded_storage(0x5 /* GS_??? */, NULL) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_guarded_storage, bogus_cmd, bogus_addr);
+	printf("s390_guarded_storage(%#x /* GS_??? */, %#lx) = %s\n",
+	       (unsigned) bogus_cmd, (unsigned long) bogus_addr, sprintrc(rc));
+
+	gs_no_arg(ARG_STR(GS_BROADCAST));
+	gs_no_arg(ARG_STR(GS_CLEAR_BC_CB));
+	gs_no_arg(ARG_STR(GS_DISABLE));
+	gs_no_arg(ARG_STR(GS_ENABLE));
+
+	fill_memory(gscb, sizeof(*gscb));
+	fill_memory_ex(gsepl, sizeof(*gsepl), 0xA5, 0x5A);
+
+	gs_set_cb(0, false, false, "NULL", NULL);
+	gs_set_cb((uintptr_t) (gscb + 1), false, false, NULL, NULL);
+
+	gscb->gs_epl_a = 0;
+	gs_set_cb((uintptr_t) gscb, true, false, NULL, "NULL");
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0x5A, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) (gsepl + 1) |
+		 (sizeof(kernel_ulong_t) < sizeof(uint64_t) ?
+			0xc0debad000000000ULL : 0);
+	gs_set_cb((uintptr_t) gscb, true, false, NULL, NULL);
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0xA7, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) gsepl;
+	gs_set_cb((uintptr_t) gscb, true, true, NULL, NULL);
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0x55, 0xAA);
+	fill_memory_ex(gsepl, sizeof(*gsepl), 0x5A, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) gsepl;
+	gs_set_cb((uintptr_t) gscb, true, true, NULL, NULL);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_guarded_storage && HAVE_ASM_GUARDED_STORAGE_H")
+
+#endif
diff --git a/tests-m32/s390_guarded_storage.gen.test b/tests-m32/s390_guarded_storage.gen.test
new file mode 100755
index 0000000..28b5981
--- /dev/null
+++ b/tests-m32/s390_guarded_storage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_guarded_storage -a32 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 
diff --git a/tests-m32/s390_pci_mmio_read_write.c b/tests-m32/s390_pci_mmio_read_write.c
new file mode 100644
index 0000000..b493948
--- /dev/null
+++ b/tests-m32/s390_pci_mmio_read_write.c
@@ -0,0 +1,155 @@
+/*
+ * Check decoding of s390_pci_mmio_read and s390_pci_mmio_write syscalls.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_pci_mmio_read && defined __NR_s390_pci_mmio_write
+
+# include <errno.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static void
+do_call(bool wr, kernel_ulong_t mmio_addr, kernel_ulong_t buf,
+	kernel_ulong_t len, bool buf_valid, const char *buf_str)
+{
+	long saved_errno = 0;
+	long rc = 0;
+
+	printf("s390_pci_mmio_%s(%#llx, ", wr ? "write" : "read",
+	       (unsigned long long) mmio_addr);
+
+	if (!wr) {
+		rc = syscall(__NR_s390_pci_mmio_read, mmio_addr, buf, len);
+		saved_errno = errno;
+	}
+
+	if (buf_valid && !rc) {
+		char *buf_ptr = (char *) (uintptr_t) buf;
+
+		print_quoted_hex(buf_ptr,
+				 len > DEFAULT_STRLEN ? DEFAULT_STRLEN : len);
+
+		if (len > DEFAULT_STRLEN)
+			printf("...");
+	} else {
+		if (buf_str)
+			printf("%s", buf_str);
+		else
+			printf("%#llx", (unsigned long long) buf);
+	}
+
+	printf(", %llu) = ", (unsigned long long) len);
+
+	if (wr)
+		rc = syscall(__NR_s390_pci_mmio_write, mmio_addr, buf, len);
+	else
+		errno = saved_errno;
+
+	puts(sprintrc(rc));
+}
+
+int
+main(void)
+{
+	static const size_t buf_size = DEFAULT_STRLEN + 10;
+
+	char *buf = tail_alloc(buf_size);
+
+	bool bools[] = { true, false };
+
+	kernel_ulong_t addrs[] = {
+		0,
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL,
+	};
+
+	struct {
+		kernel_ulong_t buf;
+		const char *str;
+		size_t size;
+	} bufs[] = {
+		{ (kernel_ulong_t) ARG_STR(NULL),            0 },
+		{ (kernel_ulong_t) (buf + buf_size), NULL,   0 },
+		{ (kernel_ulong_t) (buf),            NULL,   buf_size },
+		{ (kernel_ulong_t) (buf + 9),        NULL,   buf_size - 9 },
+		{ (kernel_ulong_t) (buf + 10),       NULL,   buf_size - 10 },
+		{ (kernel_ulong_t) (buf + 16),       NULL,   buf_size - 16 },
+		{ (kernel_ulong_t) (buf + 26),       NULL,   buf_size - 26 },
+		{ (kernel_ulong_t) (buf + 28),       NULL,   buf_size - 28 },
+	};
+
+	kernel_ulong_t sizes[] = {
+		0,
+		DEFAULT_STRLEN / 2,
+		DEFAULT_STRLEN - 10,
+		DEFAULT_STRLEN,
+		DEFAULT_STRLEN + 1,
+		buf_size,
+		buf_size + 10,
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL,
+	};
+
+	unsigned int i, j, k, l;
+	unsigned int ctr = 0;
+
+	for (i = 0; i < ARRAY_SIZE(addrs); i++) {
+		for (j = 0; j < ARRAY_SIZE(bufs); j++) {
+			for (k = 0; k < ARRAY_SIZE(sizes); k++) {
+				for (l = 0; l < ARRAY_SIZE(bools); l++) {
+					bool valid = bufs[j].buf &&
+						bufs[j].size >=
+						MIN(sizes[k],
+						    DEFAULT_STRLEN + 1);
+
+					if (bufs[j].size && bools[l])
+						fill_memory_ex((char *) buf,
+							       bufs[j].size,
+							       0xC0 + ctr, 255);
+
+					do_call(bools[l], addrs[i], bufs[j].buf,
+						sizes[k], valid, bufs[j].str);
+
+					ctr++;
+				}
+			}
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_pci_mmio_read && __NR_s390_pci_mmio_write");
+
+#endif
diff --git a/tests-m32/s390_pci_mmio_read_write.gen.test b/tests-m32/s390_pci_mmio_read_write.gen.test
new file mode 100755
index 0000000..cf32e0b
--- /dev/null
+++ b/tests-m32/s390_pci_mmio_read_write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_pci_mmio_read_write -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
diff --git a/tests-m32/s390_runtime_instr.c b/tests-m32/s390_runtime_instr.c
new file mode 100644
index 0000000..861bbd4
--- /dev/null
+++ b/tests-m32/s390_runtime_instr.c
@@ -0,0 +1,99 @@
+/*
+ * Check decoding of s390_runtime_instr syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_runtime_instr
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	static struct {
+		kernel_ulong_t cmd;
+		const char * cmd_str;
+	} cmd_args[] = {
+		{ 0, "???" },
+		{ 4, "???" },
+		{ (kernel_ulong_t) 0xdeafbeefdeadc0deULL, "???" },
+		{ 2, "STOP",  },
+	};
+
+	static struct {
+		kernel_ulong_t sig;
+		const char * sig_str;
+	} start_sig_args[] = {
+		{ 0, "SIG_0" },
+		{ (kernel_ulong_t) 0xfacefeedac0ffeedULL, NULL },
+		{ ARG_STR(SIGALRM) },
+		{ 33, "SIGRT_1" },
+		{ 63, "SIGRT_31" },
+	};
+
+	unsigned int i;
+	long rc;
+
+	for (i = 0; i < ARRAY_SIZE(cmd_args); i++) {
+		rc = syscall(__NR_s390_runtime_instr, cmd_args[i].cmd, 0xdead);
+		printf("s390_runtime_instr(%d /* S390_RUNTIME_INSTR_%s */) = "
+		       "%s\n",
+		       (int) cmd_args[i].cmd, cmd_args[i].cmd_str,
+		       sprintrc(rc));
+	}
+
+	for (i = 0; i < ARRAY_SIZE(start_sig_args); i++) {
+		long saved_errno;
+
+		rc = syscall(__NR_s390_runtime_instr, 1, start_sig_args[i].sig);
+		saved_errno = errno;
+		printf("s390_runtime_instr(1 /* S390_RUNTIME_INSTR_START */, ");
+
+		if (start_sig_args[i].sig_str)
+			printf("%s", start_sig_args[i].sig_str);
+		else
+			printf("%d", (int) start_sig_args[i].sig);
+
+		errno = saved_errno;
+		printf(") = %s\n", sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_runtime_instr")
+
+#endif
diff --git a/tests-m32/s390_runtime_instr.gen.test b/tests-m32/s390_runtime_instr.gen.test
new file mode 100755
index 0000000..9197dc3
--- /dev/null
+++ b/tests-m32/s390_runtime_instr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_runtime_instr -a50 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a50 
diff --git a/tests-m32/s390_sthyi-v.c b/tests-m32/s390_sthyi-v.c
new file mode 100644
index 0000000..8605520
--- /dev/null
+++ b/tests-m32/s390_sthyi-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "s390_sthyi.c"
diff --git a/tests-m32/s390_sthyi-v.gen.test b/tests-m32/s390_sthyi-v.gen.test
new file mode 100755
index 0000000..27ab447
--- /dev/null
+++ b/tests-m32/s390_sthyi-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_sthyi-v -e trace=s390_sthyi -a47 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_sthyi -a47 -v
diff --git a/tests-m32/s390_sthyi.c b/tests-m32/s390_sthyi.c
new file mode 100644
index 0000000..8b241dd
--- /dev/null
+++ b/tests-m32/s390_sthyi.c
@@ -0,0 +1,786 @@
+/*
+ * Check decoding of s390_sthyi syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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 HAVE_ICONV_H && defined HAVE_ICONV_OPEN && defined __NR_s390_sthyi
+
+# include <errno.h>
+# include <iconv.h>
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <sys/user.h>
+
+# define EBCDIC_MAX_LEN 16
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
+static bool
+print_0x8(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	if (!zero && !buf[offs])
+		return false;
+
+	printf("%s=%#02hhx", prefix, buf[offs]);
+
+	return true;
+}
+
+static bool
+print_u8(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	if (!zero && !buf[offs])
+		return false;
+
+	printf("%s=%hhu", prefix, buf[offs]);
+
+	return true;
+}
+
+static bool
+print_u16(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	uint16_t val = *(uint16_t *) (buf + offs);
+
+	if (!zero && !val)
+		return false;
+
+	printf("%s=%" PRIu16, prefix, val);
+
+	return true;
+}
+
+static bool
+print_x32(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	uint32_t val = *(uint32_t *) (buf + offs);
+
+	if (!zero && !val)
+		return false;
+
+	printf("%s=%#" PRIx32, prefix, val);
+
+	return true;
+}
+
+static bool
+print_weight(const char *prefix, unsigned char *buf, unsigned int offs,
+	     bool zero)
+{
+	uint32_t val = *(uint32_t *) (buf + offs);
+
+	if (print_x32(prefix, buf, offs, zero)) {
+		if (val)
+			printf(" /* %u %u/65536 cores */",
+			       val >> 16, val & 0xFFFF);
+		else
+			printf(" /* unlimited */");
+
+		return true;
+	}
+
+	return false;
+}
+
+static char *
+ebcdic2ascii(unsigned char *ebcdic, size_t size)
+{
+	static char ascii_buf[EBCDIC_MAX_LEN];
+
+	char *ebcdic_pos = (char *) ebcdic;
+	char *ascii_pos = ascii_buf;
+	size_t ebcdic_left = size;
+	size_t ascii_left = size;
+	size_t ret;
+
+	iconv_t cd = iconv_open("ASCII", "EBCDICUS");
+
+	if (size > sizeof(ascii_buf))
+		error_msg_and_fail("ebcdic2ascii: EBCDIC string is too big: "
+				   "%zu (maximum is %zu)",
+				   size, sizeof(ascii_buf));
+	if (cd == (iconv_t) -1)
+		perror_msg_and_fail("ebcdic2ascii: unable to allocate a "
+				    "conversion descriptior for converting "
+				    "EBCDIC to ASCII");
+
+	while ((ret = iconv(cd, &ebcdic_pos, &ebcdic_left,
+	    &ascii_pos, &ascii_left)) == (size_t) -1) {
+		switch (errno) {
+		case EILSEQ:
+		case EINVAL: /* That one is quite unexpected, actually */
+			if (!ebcdic_left || !ascii_left)
+				goto ebcdic2ascii_end;
+
+			*ascii_pos++ = ' ';
+			ebcdic_pos++;
+			ebcdic_left--;
+
+			break;
+
+		case E2BIG:
+			perror_msg_and_fail("ebcdic2ascii: ran out of "
+					    "ASCII buffer unexpectedly");
+		default:
+			perror_msg_and_fail("ebcdic2ascii: unexpected error");
+		}
+	}
+
+ebcdic2ascii_end:
+	iconv_close(cd);
+
+	if (ebcdic_left != ascii_left)
+		error_msg_and_fail("ebcdic2ascii: ASCII string differs in size "
+				   "from EBCDIC");
+
+	return ascii_buf;
+}
+
+# if VERBOSE
+static bool
+is_empty(unsigned char *ptr, size_t size)
+{
+	size_t i;
+
+	for (i = 0; !*ptr && i < size; ptr++, i++)
+		;
+
+	return i == size;
+}
+# endif /* !VERBOSE */
+
+static bool
+print_ebcdic(const char *prefix, unsigned char *addr, unsigned int offs,
+	     size_t size, bool zero, bool blank)
+{
+	const char *ascii = ebcdic2ascii(addr + offs, size);
+
+	if (!zero) {
+		size_t i;
+
+		for (i = 0; (addr[offs + i] == (blank ? 64 : 0)) && (i < size);
+		    i++)
+			;
+
+		if (i == size)
+			return false;
+	}
+
+	printf("%s=", prefix);
+	print_quoted_hex((char *) (addr + offs), size);
+	printf(" /* ");
+	print_quoted_memory(ascii, size);
+	printf(" */");
+
+	return true;
+}
+
+static void
+print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
+			unsigned int len_pos, bool mt)
+{
+	uint16_t offs = *(uint16_t *) (buf + offs_pos);
+	uint16_t hdr_size = *(uint16_t *) (buf + len_pos);
+	unsigned char *cur;
+
+	if (!offs)
+		return;
+	if (hdr_size < 32)
+		error_msg_and_fail("sthyi: hypervisor %d section is too small "
+			           "(got %hu, 32 expected)", level, hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* hypervisor %d */ {infyflg1", level);
+	print_0x8("", cur, 0, true);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - guest CPU usage had limiting is using "
+			       "the consumption method");
+			printed = true;
+		}
+		if (cur[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - LIMITHARD caps use prorated core time "
+			       "for capping");
+			printed = true;
+		}
+		if (cur[0] & 0x3F) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x3F);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infyflg2", cur, 1, false);
+	print_0x8(", infyval1", cur, 2, false);
+	print_0x8(", infyval2", cur, 3, false);
+
+	print_u8(", infytype", cur, 4, true);
+	if (cur[4] == 1)
+		printf(" /* z/VM is the hypervisor */");
+	else
+		printf(" /* unknown hypervisor type */");
+
+	if (cur[5])
+		printf(", reserved_1__=\"\\x%#02hhx\"", cur[5]);
+
+	print_u8(", infycpt",  cur, 6, mt);
+	print_u8(", infyiflt", cur, 7, mt);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infysyid", cur, 8,  8, VERBOSE, true);
+	print_ebcdic(", infyclnm", cur, 16, 8, VERBOSE, true);
+
+	print_u16(", infyscps", cur, 24, VERBOSE);
+	print_u16(", infydcps", cur, 26, VERBOSE);
+	print_u16(", infysifl", cur, 28, VERBOSE);
+	print_u16(", infydifl", cur, 30, VERBOSE);
+
+# if VERBOSE
+	if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 32), hdr_size - 32);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+}
+
+static void
+print_guest_header(unsigned char *buf, int level, unsigned int offs_pos,
+		   unsigned int len_pos)
+{
+	uint16_t offs = *(uint16_t *) (buf + offs_pos);
+	uint16_t hdr_size = *(uint16_t *) (buf + len_pos);
+	unsigned char *cur;
+
+	if (!offs)
+		return;
+	if (hdr_size < 56)
+		error_msg_and_fail("sthyi: guest %d section is too small "
+			           "(got %hu, 56 expected)", level, hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* guest %d */ {infgflg1", level);
+	print_0x8("", cur, 0, true);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - guest is mobility enabled");
+			printed = true;
+		}
+		if (cur[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - guest has multiple virtual CPU types");
+			printed = true;
+		}
+		if (cur[0] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - guest CP dispatch type has LIMITHARD "
+			       "cap");
+			printed = true;
+		}
+		if (cur[0] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - guest IFL dispatch type has LIMITHARD "
+			       "cap");
+			printed = true;
+		}
+		if (cur[0] & 0x08) {
+			if (printed)
+				printf(", ");
+			printf("0x08 - virtual CPs are thread dispatched");
+			printed = true;
+		}
+		if (cur[0] & 0x04) {
+			if (printed)
+				printf(", ");
+			printf("0x04 - virtual IFLs are thread dispatched");
+			printed = true;
+		}
+		if (cur[0] & 0x3) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x3);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infgflg2", cur, 1, false);
+	print_0x8(", infgval1", cur, 2, false);
+	print_0x8(", infgval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infgusid", cur, 4, 8, true, false);
+
+	print_u16(", infgscps", cur, 12, VERBOSE);
+	print_u16(", infgdcps", cur, 14, VERBOSE);
+
+# if VERBOSE
+	print_u8(", infgcpdt", cur, 16, true);
+	if (cur[16] == 0)
+		printf(" /* General Purpose (CP) */");
+	else
+		printf(" /* unknown */");
+
+	if (cur[17] || cur[18] || cur[19])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[17], cur[18], cur[19]);
+# endif /* !VERBOSE */
+
+	print_weight(", infgcpcc", cur, 20, VERBOSE);
+
+	print_u16(", infgsifl", cur, 24, VERBOSE);
+	print_u16(", infgdifl", cur, 26, VERBOSE);
+
+# if VERBOSE
+	print_u8(", infgifdt", cur, 28, true);
+	if (cur[28] == 0)
+		printf(" /* General Purpose (CP) */");
+	else if (cur[28] == 3)
+		printf(" /* Integrated Facility for Linux (IFL) */");
+	else
+		printf(" /* unknown */");
+
+	if (cur[29] || cur[30] || cur[31])
+		printf(", reserved_2__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[29], cur[30], cur[31]);
+# endif /* !VERBOSE */
+
+	print_weight(", infgifcc", cur, 32, VERBOSE);
+
+	print_0x8(", infgpflg", cur, 36, true);
+# if VERBOSE
+	if (cur[36]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[36] & 0x80) {
+			printf("0x80 - CPU pool's CP virtual type has "
+			       "LIMITHARD cap");
+			printed = true;
+		}
+		if (cur[36] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - CPU pool's CP virtual type has "
+			       "CAPACITY cap");
+			printed = true;
+		}
+		if (cur[36] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - CPU pool's IFL virtual type has "
+			       "LIMITHARD cap");
+			printed = true;
+		}
+		if (cur[36] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - CPU pool's IFL virtual type has "
+			       "CAPACITY cap");
+			printed = true;
+		}
+		if (cur[36] & 0x08) {
+			if (printed)
+				printf(", ");
+			printf("0x08 - CPU pool uses prorated core time");
+			printed = true;
+		}
+		if (cur[36] & 0x7) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[36] & 0x7);
+		}
+		printf(" */");
+	}
+
+	if (cur[37] || cur[38] || cur[39])
+		printf(", reserved_3__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[37], cur[38], cur[39]);
+
+	print_ebcdic(", infgpnam", cur, 40, 8, false, true);
+
+	print_weight(", infgpccc", cur, 48, true);
+	print_weight(", infgpicc", cur, 52, true);
+
+	if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 56), hdr_size - 56);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+}
+
+static void
+print_sthyi(unsigned char *buf)
+{
+	unsigned char *cur;
+	uint16_t hdr_size;
+	uint16_t offs;
+	bool mt = false;
+
+	hdr_size = *(uint16_t *) (buf + 10);
+	if (hdr_size < 44)
+		error_msg_and_fail("sthyi: header section is too small "
+			           "(got %hu, 44 expected)", hdr_size);
+
+	/* INFHFLG1 */
+	print_0x8("{/* header */ {infhflg1", buf, 0, true);
+# if VERBOSE
+	if (buf[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (buf[0] & 0x80) {
+			printf("0x80 - Global Performance Data unavailable");
+			printed = true;
+		}
+		if (buf[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - One or more hypervisor levels below "
+			       "this level does not support the STHYI "
+			       "instruction");
+			printed = true;
+		}
+		if (buf[0] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - Virtualization stack is incomplete");
+			printed = true;
+		}
+		if (buf[0] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - Execution environment is not within a "
+			       "logical partition");
+			printed = true;
+		}
+		if (buf[0] & 0xF) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", buf[0] & 0xF);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infhflg2", buf, 1, false);
+	print_0x8(", infhval1", buf, 2, false);
+	print_0x8(", infhval2", buf, 3, false);
+
+	/* Reserved */
+	if (buf[4] || buf[5] || buf[6])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       buf[4], buf[5], buf[6]);
+
+	print_u8(", infhygct", buf, 7, true);
+	print_u16(", infhtotl", buf, 8, true);
+	print_u16(", infhdln", buf, 10, true);
+	print_u16(", infmoff", buf, 12, true);
+	print_u16(", infmlen", buf, 14, true);
+	print_u16(", infpoff", buf, 16, true);
+	print_u16(", infplen", buf, 18, true);
+	print_u16(", infhoff1", buf, 20, true);
+	print_u16(", infhlen1", buf, 22, true);
+	print_u16(", infgoff1", buf, 24, true);
+	print_u16(", infglen1", buf, 26, true);
+	print_u16(", infhoff2", buf, 28, true);
+	print_u16(", infhlen2", buf, 30, true);
+	print_u16(", infgoff2", buf, 32, true);
+	print_u16(", infglen2", buf, 34, true);
+	print_u16(", infhoff3", buf, 36, true);
+	print_u16(", infhlen3", buf, 38, true);
+	print_u16(", infgoff3", buf, 40, true);
+	print_u16(", infglen3", buf, 42, true);
+
+	if (hdr_size > 44 && !is_empty(buf + 44, hdr_size - 44)) {
+		printf(", ");
+		print_quoted_hex((char *) (buf + 44), hdr_size - 44);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+	/* Machine header */
+	offs = *(uint16_t *) (buf + 12);
+	if (!offs)
+		goto partition_hdr;
+
+	hdr_size = *(uint16_t *) (buf + 14);
+	if (hdr_size < 60)
+		error_msg_and_fail("sthyi: machine section is too small "
+			           "(got %hu, 60 expected)", hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* machine */ {");
+
+# if VERBOSE
+	print_0x8("infmflg1", cur, 0, false);
+	if (cur[0])
+		printf(", ");
+	print_0x8("infmflg2", cur, 1, false);
+	if (cur[1])
+		printf(", ");
+# endif /* !VERBOSE */
+	print_0x8("infmval1", cur, 2, true);
+
+	bool cnt_valid = cur[2] & 0x80;
+# if VERBOSE
+	bool id_valid = cur[2] & 0x40;
+	bool name_valid = cur[2] & 0x20;
+
+	printf(" /* processor count validity: %d, machine ID validity: %d, "
+	       "machine name validity: %d",
+	       !!cnt_valid, !!id_valid, !!name_valid);
+	if (cur[2] & 0x1F)
+		printf(", %#hhx - ???", cur[2] & 0x1F);
+	printf(" */");
+	print_0x8(", infmval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_u16(", infmscps", cur, 4,  cnt_valid);
+	print_u16(", infmdcps", cur, 6,  cnt_valid);
+	print_u16(", infmsifl", cur, 8,  cnt_valid);
+	print_u16(", infmdifl", cur, 10, cnt_valid);
+
+# if VERBOSE
+	print_ebcdic(", infmname", cur, 12, 8, name_valid, false);
+
+	print_ebcdic(", infmtype", cur, 20, 4,  id_valid, false);
+	print_ebcdic(", infmmanu", cur, 24, 16, id_valid, false);
+	print_ebcdic(", infmseq",  cur, 40, 16, id_valid, false);
+	print_ebcdic(", infmpman", cur, 56, 4,  id_valid, false);
+
+	if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 60), hdr_size - 60);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+partition_hdr:
+	/* Partition header */
+	offs = *(uint16_t *) (buf + 16);
+	if (!offs)
+		goto hv_hdr;
+
+	hdr_size = *(uint16_t *) (buf + 18);
+	if (hdr_size < 56)
+		error_msg_and_fail("sthyi: partition section is too small "
+			           "(got %hu, 56 expected)", hdr_size);
+
+	cur = buf + offs;
+
+	print_0x8(", /* partition */ {infpflg1", cur, 0, true);
+	mt = !!(cur[0] & 0x80);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - multithreading is enabled");
+			printed = true;
+		}
+		if (cur[0] & 0x7F) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x7F);
+		}
+		printf(" */");
+	}
+	print_0x8(", infpflg2", cur, 1, false);
+# endif /* !VERBOSE */
+	print_0x8(", infpval1", cur, 2, true);
+
+	bool pcnt_valid  = cur[2] & 0x80;
+	bool pid_valid   = cur[2] & 0x10;
+# if VERBOSE
+	bool pwcap_valid = cur[2] & 0x40;
+	bool pacap_valid = cur[2] & 0x20;
+	bool lpar_valid  = cur[2] & 0x08;
+# endif /* !VERBOSE */
+
+# if VERBOSE
+	printf(" /* processor count validity: %d, partition weight-based "
+	       "capacity validity: %d, partition absolute capacity validity: "
+	       "%d, partition ID validity: %d, LPAR group absolute capacity "
+	       "capping information validity: %d",
+	       !!pcnt_valid, !!pwcap_valid, !!pacap_valid, !!pid_valid,
+	       !!lpar_valid);
+	if (cur[2] & 0x7)
+		printf(", %#hhx - ???", cur[2] & 0x7);
+	printf(" */");
+
+	print_0x8(", infpval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_u16(", infppnum", cur, 4, pid_valid);
+
+	print_u16(", infpscps", cur, 6,  pcnt_valid);
+	print_u16(", infpdcps", cur, 8,  pcnt_valid);
+	print_u16(", infpsifl", cur, 10, pcnt_valid);
+	print_u16(", infpdifl", cur, 12, pcnt_valid);
+
+# if VERBOSE
+	if (cur[14] || cur[15])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\"",
+		       cur[14], cur[15]);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infppnam", cur, 16, 8, pid_valid, false);
+
+# if VERBOSE
+	print_weight(", infpwbcp", cur, 24, pwcap_valid);
+	print_weight(", infpabcp", cur, 28, pacap_valid);
+	print_weight(", infpwbif", cur, 32, pwcap_valid);
+	print_weight(", infpabif", cur, 36, pacap_valid);
+
+	if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
+
+		print_weight(", infplgcp", cur, 48, false);
+		print_weight(", infplgif", cur, 52, false);
+	} else {
+		if (lpar_valid) {
+			printf(", infplgnm=");
+			print_quoted_hex((char *) (cur + 40), 8);
+		}
+
+		print_x32(", infplgcp", cur, 48, false);
+		print_x32(", infplgif", cur, 52, false);
+	}
+
+	if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 56), hdr_size - 56);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+hv_hdr:
+	/* Hypervisor/guest headers */
+	print_hypervisor_header(buf, 1, 20, 22, mt);
+	print_guest_header(buf, 1, 24, 26);
+	print_hypervisor_header(buf, 2, 28, 30, mt);
+	print_guest_header(buf, 2, 32, 34);
+	print_hypervisor_header(buf, 3, 36, 38, mt);
+	print_guest_header(buf, 3, 40, 42);
+
+	printf("}");
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_func =
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL;
+	static const kernel_ulong_t bogus_resp_buf =
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL;
+	static const kernel_ulong_t bogus_ret_code =
+		(kernel_ulong_t) 0xf00dfa57decaffedULL;
+	static const kernel_ulong_t bogus_flags =
+		(kernel_ulong_t) 0xfee1deadfa57beefULL;
+
+	unsigned char *buf = tail_alloc(PAGE_SIZE);
+	uint64_t *ret = tail_alloc(sizeof(*ret));
+
+	long rc;
+
+	rc = syscall(__NR_s390_sthyi, 0, 0, 0, 0);
+	printf("s390_sthyi(STHYI_FC_CP_IFL_CAP, NULL, NULL, 0) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, bogus_func, bogus_resp_buf,
+		     bogus_ret_code, bogus_flags);
+	printf("s390_sthyi(%#llx /* STHYI_FC_??? */, %#llx, %#llx, %#llx) = "
+	       "%s\n",
+	       (unsigned long long) bogus_func,
+	       (unsigned long long) bogus_resp_buf,
+	       (unsigned long long) bogus_ret_code,
+	       (unsigned long long) bogus_flags,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, bogus_func, buf, ret, 0);
+	printf("s390_sthyi(%#llx /* STHYI_FC_??? */, %p, %p, 0) = %s\n",
+	       (unsigned long long) bogus_func, buf, ret, sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, 0, buf, ret, 0);
+	if (rc)
+		error_msg_and_fail("syscall(__NR_s390_sthyi, 0, buf, ret, 0) "
+				   "returned unexpected value of %ld", rc);
+
+	printf("s390_sthyi(STHYI_FC_CP_IFL_CAP, ");
+	print_sthyi(buf);
+	printf(", [0], 0) = 0\n");
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_ICONV_H && HAVE_ICONV_OPEN && __NR_s390_sthyi")
+
+#endif
diff --git a/tests-m32/s390_sthyi.gen.test b/tests-m32/s390_sthyi.gen.test
new file mode 100755
index 0000000..cf27137
--- /dev/null
+++ b/tests-m32/s390_sthyi.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_sthyi -a47 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a47 
diff --git a/tests-m32/sched_rr_get_interval.gen.test b/tests-m32/sched_rr_get_interval.gen.test
index 493de64..02aad00 100755
--- a/tests-m32/sched_rr_get_interval.gen.test
+++ b/tests-m32/sched_rr_get_interval.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests-m32/sched_yield.gen.test b/tests-m32/sched_yield.gen.test
index 3f4542f..4b035fd 100755
--- a/tests-m32/sched_yield.gen.test
+++ b/tests-m32/sched_yield.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-m32/select-P.c b/tests-m32/select-P.c
new file mode 100644
index 0000000..868deed
--- /dev/null
+++ b/tests-m32/select-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "select.c"
diff --git a/tests-m32/select-P.gen.test b/tests-m32/select-P.gen.test
new file mode 100755
index 0000000..2f6fc7b
--- /dev/null
+++ b/tests-m32/select-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select-P -a36 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests-m32/select.gen.test b/tests-m32/select.gen.test
index cb3b8f1..2383614 100755
--- a/tests-m32/select.gen.test
+++ b/tests-m32/select.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-m32/sendfile.gen.test b/tests-m32/sendfile.gen.test
index 433878f..d32ef3a 100755
--- a/tests-m32/sendfile.gen.test
+++ b/tests-m32/sendfile.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/sendfile64.gen.test b/tests-m32/sendfile64.gen.test
index 1655dd3..24f0746 100755
--- a/tests-m32/sendfile64.gen.test
+++ b/tests-m32/sendfile64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
+run_strace_match_diff -a29 
diff --git a/tests-m32/set_ptracer_any.c b/tests-m32/set_ptracer_any.c
index 3b4ea2c..3c11296 100644
--- a/tests-m32/set_ptracer_any.c
+++ b/tests-m32/set_ptracer_any.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,10 +37,16 @@
 {
 	if (argc < 2)
 		return 99;
-#if defined HAVE_PRCTL && defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY
-	/* Turn off restrictions on tracing if applicable.  If the options
+#ifdef HAVE_PRCTL
+	/* Turn off restrictions on tracing if applicable.  If the command
 	 * aren't available on this system, that's OK too.  */
-	(void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
+# ifndef PR_SET_PTRACER
+#  define PR_SET_PTRACER 0x59616d61
+# endif
+# ifndef PR_SET_PTRACER_ANY
+#  define PR_SET_PTRACER_ANY -1UL
+# endif
+	(void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
 #endif
 	if (write(1, "\n", 1) != 1) {
 		perror("write");
diff --git a/tests-m32/setdomainname.gen.test b/tests-m32/setdomainname.gen.test
index 2b12e08..1f29563 100755
--- a/tests-m32/setdomainname.gen.test
+++ b/tests-m32/setdomainname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/setfsgid.gen.test b/tests-m32/setfsgid.gen.test
index caff401..bbb30cc 100755
--- a/tests-m32/setfsgid.gen.test
+++ b/tests-m32/setfsgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-m32/setfsgid32.gen.test b/tests-m32/setfsgid32.gen.test
index fae29e0..63b3eca 100755
--- a/tests-m32/setfsgid32.gen.test
+++ b/tests-m32/setfsgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-m32/setfsuid.gen.test b/tests-m32/setfsuid.gen.test
index e4c4d20..5896b30 100755
--- a/tests-m32/setfsuid.gen.test
+++ b/tests-m32/setfsuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-m32/setfsuid32.gen.test b/tests-m32/setfsuid32.gen.test
index b6cd67d..52d0820 100755
--- a/tests-m32/setfsuid32.gen.test
+++ b/tests-m32/setfsuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-m32/setgid.gen.test b/tests-m32/setgid.gen.test
index f10add6..be188d1 100755
--- a/tests-m32/setgid.gen.test
+++ b/tests-m32/setgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/setgid32.gen.test b/tests-m32/setgid32.gen.test
index 26f194e..9020b80 100755
--- a/tests-m32/setgid32.gen.test
+++ b/tests-m32/setgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-m32/sethostname.gen.test b/tests-m32/sethostname.gen.test
index 2827b1d..d68ed18 100755
--- a/tests-m32/sethostname.gen.test
+++ b/tests-m32/sethostname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-m32/setns.gen.test b/tests-m32/setns.gen.test
index 45fcc60..e25738b 100755
--- a/tests-m32/setns.gen.test
+++ b/tests-m32/setns.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-m32/setregid.gen.test b/tests-m32/setregid.gen.test
index 0125d7a..f84b1ac 100755
--- a/tests-m32/setregid.gen.test
+++ b/tests-m32/setregid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-m32/setregid32.gen.test b/tests-m32/setregid32.gen.test
index 24f1505..7320c8c 100755
--- a/tests-m32/setregid32.gen.test
+++ b/tests-m32/setregid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/setresgid.gen.test b/tests-m32/setresgid.gen.test
index ca5bc6b..792313c 100755
--- a/tests-m32/setresgid.gen.test
+++ b/tests-m32/setresgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-m32/setresgid32.gen.test b/tests-m32/setresgid32.gen.test
index a5edb90..6ecf936 100755
--- a/tests-m32/setresgid32.gen.test
+++ b/tests-m32/setresgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-m32/setresuid.gen.test b/tests-m32/setresuid.gen.test
index a6e0664..a0dcb4b 100755
--- a/tests-m32/setresuid.gen.test
+++ b/tests-m32/setresuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-m32/setresuid32.gen.test b/tests-m32/setresuid32.gen.test
index 3fbf36b..a9f4396 100755
--- a/tests-m32/setresuid32.gen.test
+++ b/tests-m32/setresuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-m32/setreuid.gen.test b/tests-m32/setreuid.gen.test
index 4c3dc93..0ecaef0 100755
--- a/tests-m32/setreuid.gen.test
+++ b/tests-m32/setreuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-m32/setreuid32.gen.test b/tests-m32/setreuid32.gen.test
index d179053..3eb0e95 100755
--- a/tests-m32/setreuid32.gen.test
+++ b/tests-m32/setreuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/setrlimit.gen.test b/tests-m32/setrlimit.gen.test
index dfe2da3..0d1508d 100755
--- a/tests-m32/setrlimit.gen.test
+++ b/tests-m32/setrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-m32/setugid.c b/tests-m32/setugid.c
index aba277c..6ceec7f 100644
--- a/tests-m32/setugid.c
+++ b/tests-m32/setugid.c
@@ -2,6 +2,7 @@
  * Check decoding of setuid/setgid/setuid32/setgid32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -61,6 +62,8 @@
 		const unsigned int num = (unsigned UGID_TYPE) tests[i];
 		long expected;
 
+		errno = 0;
+
 		if (num == ugid)
 			expected = 0;
 		else if ((UGID_TYPE) num == (UGID_TYPE) -1U)
@@ -77,8 +80,9 @@
 				       SYSCALL_NAME, ugid, errstr);
 				break;
 			}
-			perror_msg_and_fail("%s(%#lx) != %ld",
-					    SYSCALL_NAME, tests[i], expected);
+			perror_msg_and_fail("%s(%#lx) = %ld != %ld",
+					    SYSCALL_NAME, tests[i],
+					    rc, expected);
 		}
 
 		printf("%s(", SYSCALL_NAME);
diff --git a/tests-m32/setuid.gen.test b/tests-m32/setuid.gen.test
index 98d470f..00aeb7a 100755
--- a/tests-m32/setuid.gen.test
+++ b/tests-m32/setuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/setuid32.gen.test b/tests-m32/setuid32.gen.test
index 7d15495..ac8df8f 100755
--- a/tests-m32/setuid32.gen.test
+++ b/tests-m32/setuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-m32/shmxt.c b/tests-m32/shmxt.c
index 23cc7cc..398667c 100644
--- a/tests-m32/shmxt.c
+++ b/tests-m32/shmxt.c
@@ -18,6 +18,10 @@
 # define SHMAT "shmat"
 #endif
 
+#ifndef SHM_EXEC
+# define SHM_EXEC 0100000
+#endif
+
 int
 main(void)
 {
@@ -34,8 +38,8 @@
 	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,
+	printf("%s(%d, %p, SHM_RDONLY|SHM_RND|SHM_REMAP|SHM_EXEC|%#x) = %s\n",
+	       SHMAT, bogus_shmid, bogus_shmaddr, bogus_shmflg & ~0xf000,
 	       sprintrc(rc));
 
 	shmat(id, NULL, SHM_REMAP);
@@ -50,18 +54,31 @@
 	rc = shmdt(NULL);
 	printf("shmdt(NULL) = %s\n", sprintrc(rc));
 
-	if (shmdt(shmaddr))
-		perror_msg_and_skip("shmdt");
-	printf("shmdt(%p) = 0\n", shmaddr);
+	rc = shmdt(shmaddr);
+	printf("shmdt(%p) = %s\n", shmaddr, sprintrc(rc));
 
 	++shmaddr;
 	void *shmaddr2 = shmat(id, shmaddr, SHM_RND);
 	if (shmaddr2 == (void *)(-1))
 		printf("%s(%d, %p, SHM_RND) = -1 %s (%m)\n",
 		       SHMAT, id, shmaddr, errno2name());
-	else
+	else {
 		printf("%s(%d, %p, SHM_RND) = %p\n",
 		       SHMAT, id, shmaddr, shmaddr2);
+		rc = shmdt(shmaddr2);
+		printf("shmdt(%p) = %s\n", shmaddr2, sprintrc(rc));
+	}
+
+	shmaddr = shmat(id, NULL, SHM_RDONLY|SHM_EXEC);
+	if (shmaddr == (void *)(-1))
+		printf("%s(%d, NULL, SHM_RDONLY|SHM_EXEC) = %s\n",
+		       SHMAT, id, sprintrc(-1));
+	else {
+		printf("%s(%d, NULL, SHM_RDONLY|SHM_EXEC) = %p\n",
+		       SHMAT, id, shmaddr);
+		rc = shmdt(shmaddr);
+		printf("shmdt(%p) = %s\n", shmaddr, sprintrc(rc));
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/shutdown.gen.test b/tests-m32/shutdown.gen.test
index 3412513..7fde46e 100755
--- a/tests-m32/shutdown.gen.test
+++ b/tests-m32/shutdown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/sigaction.gen.test b/tests-m32/sigaction.gen.test
index dee340e..1db6b3a 100755
--- a/tests-m32/sigaction.gen.test
+++ b/tests-m32/sigaction.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigaction -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigaction -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests-m32/signalfd4.gen.test b/tests-m32/signalfd4.gen.test
index e91a9fe..dee4274 100755
--- a/tests-m32/signalfd4.gen.test
+++ b/tests-m32/signalfd4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/sigpending.gen.test b/tests-m32/sigpending.gen.test
index 0f4259a..c061868 100755
--- a/tests-m32/sigpending.gen.test
+++ b/tests-m32/sigpending.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigpending -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigpending -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-m32/sigprocmask.gen.test b/tests-m32/sigprocmask.gen.test
index 44a508c..065b74d 100755
--- a/tests-m32/sigprocmask.gen.test
+++ b/tests-m32/sigprocmask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigprocmask -a34); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigprocmask -a34 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+run_strace_match_diff -a34 
diff --git a/tests-m32/sigreturn.gen.test b/tests-m32/sigreturn.gen.test
index f317e89..3b67c9d 100755
--- a/tests-m32/sigreturn.gen.test
+++ b/tests-m32/sigreturn.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1'); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1' ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal='!USR1'
+run_strace_match_diff -esignal='!USR1' 
diff --git a/tests-m32/socketcall.gen.test b/tests-m32/socketcall.gen.test
index 95c45fd..d18b036 100755
--- a/tests-m32/socketcall.gen.test
+++ b/tests-m32/socketcall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-m32/sockname.c b/tests-m32/sockname.c
index 5872671..bba9a89 100644
--- a/tests-m32/sockname.c
+++ b/tests-m32/sockname.c
@@ -2,7 +2,7 @@
  * Check decoding of sockname family syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,7 +42,9 @@
 # error TEST_SYSCALL_NAME must be defined
 #endif
 
-#define TEST_SYSCALL_STR STRINGIFY_VAL(TEST_SYSCALL_NAME)
+#ifndef TEST_SYSCALL_STR
+# define TEST_SYSCALL_STR STRINGIFY_VAL(TEST_SYSCALL_NAME)
+#endif
 #define TEST_SOCKET TEST_SYSCALL_STR ".socket"
 
 #ifdef TEST_SYSCALL_PREPARE
diff --git a/tests-m32/sockopt-sol_netlink.c b/tests-m32/sockopt-sol_netlink.c
new file mode 100644
index 0000000..066920c
--- /dev/null
+++ b/tests-m32/sockopt-sol_netlink.c
@@ -0,0 +1,213 @@
+/*
+ * Check decoding of getsockopt and setsockopt for SOL_NETLINK level.
+ *
+ * Copyright (c) 2017 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 "netlink.h"
+#include <stdio.h>
+
+#ifndef SOL_NETLINK
+# define SOL_NETLINK 270
+#endif
+
+static int rc;
+static const char *errstr;
+
+static int
+get_sockopt(int fd, int name, void *val, socklen_t *len)
+{
+	rc = getsockopt(fd, SOL_NETLINK, name, val, len);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+static int
+set_sockopt(int fd, int name, void *val, socklen_t len)
+{
+	rc = setsockopt(fd, SOL_NETLINK, name, val, len);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	static const struct {
+		int val;
+		const char *str;
+	} names[] = {
+#ifdef NETLINK_ADD_MEMBERSHIP
+		{ ARG_STR(NETLINK_ADD_MEMBERSHIP) },
+#endif
+#ifdef NETLINK_DROP_MEMBERSHIP
+		{ ARG_STR(NETLINK_DROP_MEMBERSHIP) },
+#endif
+#ifdef NETLINK_PKTINFO
+		{ ARG_STR(NETLINK_PKTINFO) },
+#endif
+#ifdef NETLINK_BROADCAST_ERROR
+		{ ARG_STR(NETLINK_BROADCAST_ERROR) },
+#endif
+#ifdef NETLINK_NO_ENOBUFS
+		{ ARG_STR(NETLINK_NO_ENOBUFS) },
+#endif
+#ifdef NETLINK_RX_RING
+		{ ARG_STR(NETLINK_RX_RING) },
+#endif
+#ifdef NETLINK_TX_RING
+		{ ARG_STR(NETLINK_TX_RING) },
+#endif
+#ifdef NETLINK_LISTEN_ALL_NSID
+		{ ARG_STR(NETLINK_LISTEN_ALL_NSID) },
+#endif
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		{ ARG_STR(NETLINK_LIST_MEMBERSHIPS) },
+#endif
+#ifdef NETLINK_CAP_ACK
+		{ ARG_STR(NETLINK_CAP_ACK) },
+#endif
+#ifdef NETLINK_EXT_ACK
+		{ ARG_STR(NETLINK_EXT_ACK) },
+#endif
+	};
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val);
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	void *const efault = val + 1;
+        int fd = socket(AF_NETLINK, SOCK_RAW, 0);
+        if (fd < 0)
+                perror_msg_and_skip("socket AF_NETLINK SOCK_RAW");
+	unsigned int i;
+
+	for (i = 0; i < ARRAY_SIZE(names); ++i) {
+		/* getsockopt */
+
+		/* classic */
+		*len = sizeof(*val);
+		get_sockopt(fd, names[i].val, val, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, ", fd, names[i].str);
+		if (rc)
+			printf("%p", val);
+		else
+			printf("[%d]", *val);
+		printf(", [%d]) = %s\n", *len, errstr);
+
+		/* optlen larger than necessary - shortened */
+		*len = sizeof(*val) + 1;
+		get_sockopt(fd, names[i].val, val, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, ", fd, names[i].str);
+		if (rc)
+			printf("%p", val);
+		else
+			printf("[%d]", *val);
+		printf(", [%d", (int) sizeof(*val) + 1);
+		if ((int) sizeof(*val) + 1 != *len)
+			printf("->%d", *len);
+		printf("]) = %s\n", errstr);
+
+		/* zero optlen - print returned optlen */
+		*len = 0;
+		get_sockopt(fd, names[i].val, NULL, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, NULL, [0",
+		       fd, names[i].str);
+		if (*len)
+			printf("->%d", *len);
+		printf("]) = %s\n", errstr);
+
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		if (names[i].val != NETLINK_LIST_MEMBERSHIPS) {
+#endif
+			/* optlen shorter than necessary - print address */
+			*len = sizeof(*val) - 1;
+			get_sockopt(fd, names[i].val, val, len);
+			printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d",
+			       fd, names[i].str, val, (int) sizeof(*val) - 1);
+			if ((int) sizeof(*val) - 1 != *len)
+				printf("->%d", *len);
+			printf("]) = %s\n", errstr);
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		} else {
+			/* optlen shorter than required for the first element */
+			*len = sizeof(*val) - 1;
+			get_sockopt(fd, names[i].val, efault, len);
+			printf("getsockopt(%d, SOL_NETLINK, %s, ",
+			       fd, names[i].str);
+			if (rc)
+				printf("%p", efault);
+			else
+				printf("[]");
+			printf(", [%d", (int) sizeof(*val) - 1);
+			if ((int) sizeof(*val) - 1 != *len)
+				printf("->%d", *len);
+			printf("]) = %s\n", errstr);
+		}
+#endif
+
+		/* optval EFAULT - print address */
+		*len = sizeof(*val);
+		get_sockopt(fd, names[i].val, efault, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d]) = %s\n",
+		       fd, names[i].str, efault, *len, errstr);
+
+		/* optlen EFAULT - print address */
+		get_sockopt(fd, names[i].val, val, len + 1);
+		printf("getsockopt(%d, SOL_NETLINK, %s, %p, %p) = %s\n",
+		       fd, names[i].str, val, len + 1, errstr);
+
+		/* setsockopt */
+
+		/* classic */
+		*val = 0xdefaced;
+		set_sockopt(fd, names[i].val, val, sizeof(*val));
+		printf("setsockopt(%d, SOL_NETLINK, %s, [%d], %d) = %s\n",
+		       fd, names[i].str, *val, (int) sizeof(*val), errstr);
+
+		/* optlen larger than necessary - shortened */
+		set_sockopt(fd, names[i].val, val, sizeof(*val) + 1);
+		printf("setsockopt(%d, SOL_NETLINK, %s, [%d], %d) = %s\n",
+		       fd, names[i].str, *val, (int) sizeof(*val) + 1, errstr);
+
+		/* optlen < 0 - print address */
+		set_sockopt(fd, names[i].val, val, -1U);
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, -1) = %s\n",
+		       fd, names[i].str, val, errstr);
+
+		/* optlen smaller than necessary - print address */
+		set_sockopt(fd, names[i].val, val, sizeof(*val) - 1);
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, %d) = %s\n",
+		       fd, names[i].str, val, (int) sizeof(*val) - 1, errstr);
+
+		/* optval EFAULT - print address */
+		set_sockopt(fd, names[i].val, efault, sizeof(*val));
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, %d) = %s\n",
+		       fd, names[i].str, efault, (int) sizeof(*val), errstr);
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-m32/sockopt-sol_netlink.gen.test b/tests-m32/sockopt-sol_netlink.gen.test
new file mode 100755
index 0000000..a2ba06d
--- /dev/null
+++ b/tests-m32/sockopt-sol_netlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sockopt-sol_netlink -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests-m32/splice.gen.test b/tests-m32/splice.gen.test
index 83c8406..7566080 100755
--- a/tests-m32/splice.gen.test
+++ b/tests-m32/splice.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/stack-fcall-0.c b/tests-m32/stack-fcall-0.c
index 12a260d..edd6d32 100644
--- a/tests-m32/stack-fcall-0.c
+++ b/tests-m32/stack-fcall-0.c
@@ -1,4 +1,4 @@
-int f1(int i);
+#include "stack-fcall.h"
 
 int f0(int i)
 {
diff --git a/tests-m32/stack-fcall-1.c b/tests-m32/stack-fcall-1.c
index 8716702..5d0bf0e 100644
--- a/tests-m32/stack-fcall-1.c
+++ b/tests-m32/stack-fcall-1.c
@@ -1,4 +1,4 @@
-int f2(int i);
+#include "stack-fcall.h"
 
 int f1(int i)
 {
diff --git a/tests-m32/stack-fcall-2.c b/tests-m32/stack-fcall-2.c
index 19f8cf8..e164320 100644
--- a/tests-m32/stack-fcall-2.c
+++ b/tests-m32/stack-fcall-2.c
@@ -1,4 +1,4 @@
-int f3(int i);
+#include "stack-fcall.h"
 
 int f2(int i)
 {
diff --git a/tests-m32/stack-fcall-3.c b/tests-m32/stack-fcall-3.c
index 3af1667..98726d8 100644
--- a/tests-m32/stack-fcall-3.c
+++ b/tests-m32/stack-fcall-3.c
@@ -1,4 +1,5 @@
 #include <unistd.h>
+#include "stack-fcall.h"
 
 int f3(int i)
 {
diff --git a/tests-m32/stack-fcall-mangled-0.c b/tests-m32/stack-fcall-mangled-0.c
new file mode 100644
index 0000000..4754940
--- /dev/null
+++ b/tests-m32/stack-fcall-mangled-0.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-0.c"
diff --git a/tests-m32/stack-fcall-mangled-1.c b/tests-m32/stack-fcall-mangled-1.c
new file mode 100644
index 0000000..492c562
--- /dev/null
+++ b/tests-m32/stack-fcall-mangled-1.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-1.c"
diff --git a/tests-m32/stack-fcall-mangled-2.c b/tests-m32/stack-fcall-mangled-2.c
new file mode 100644
index 0000000..eb7c362
--- /dev/null
+++ b/tests-m32/stack-fcall-mangled-2.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-2.c"
diff --git a/tests-m32/stack-fcall-mangled-3.c b/tests-m32/stack-fcall-mangled-3.c
new file mode 100644
index 0000000..98f738b
--- /dev/null
+++ b/tests-m32/stack-fcall-mangled-3.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-3.c"
diff --git a/tests-m32/stack-fcall-mangled.c b/tests-m32/stack-fcall-mangled.c
new file mode 100644
index 0000000..6786205
--- /dev/null
+++ b/tests-m32/stack-fcall-mangled.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall.c"
diff --git a/tests-m32/stack-fcall.c b/tests-m32/stack-fcall.c
index fc9ee5f..e0ec3b1 100644
--- a/tests-m32/stack-fcall.c
+++ b/tests-m32/stack-fcall.c
@@ -1,4 +1,4 @@
-int f0(int i);
+#include "stack-fcall.h"
 
 int main(int argc, char **argv)
 {
diff --git a/tests-m32/stack-fcall.h b/tests-m32/stack-fcall.h
new file mode 100644
index 0000000..1a83bad
--- /dev/null
+++ b/tests-m32/stack-fcall.h
@@ -0,0 +1,13 @@
+#ifdef MANGLE
+
+#define f0 _ZN2ns2f0Ei
+#define f1 _ZN2ns2f1Ei
+#define f2 _ZN2ns2f2Ei
+#define f3 _ZN2ns2f3Ei
+
+#endif
+
+int f0(int i);
+int f1(int i);
+int f2(int i);
+int f3(int i);
diff --git a/tests-m32/statfs.gen.test b/tests-m32/statfs.gen.test
index 19b26dd..32204a1 100755
--- a/tests-m32/statfs.gen.test
+++ b/tests-m32/statfs.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/statfs64.gen.test b/tests-m32/statfs64.gen.test
index 66409f9..8f6f06f 100755
--- a/tests-m32/statfs64.gen.test
+++ b/tests-m32/statfs64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
+run_strace_match_diff -a23 
diff --git a/tests-m32/strace-V.test b/tests-m32/strace-V.test
index ec1ca05..eb05e86 100755
--- a/tests-m32/strace-V.test
+++ b/tests-m32/strace-V.test
@@ -39,8 +39,21 @@
 }
 
 option_unwind=$(getoption USE_LIBUNWIND " stack-unwind")
+option_demangle=$(getoption USE_DEMANGLE " stack-demangle")
 
-features="${option_unwind}"
+option_m32=
+option_mx32=
+case "$STRACE_NATIVE_ARCH" in
+x86_64)
+	option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+	option_mx32=$(getoption HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
+	;;
+aarch64|powerpc64|riscv|s390x|sparc64|tile|x32)
+	option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+	;;
+esac
+
+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
 [ -n "$features" ] || features=" (none)"
 
 cat > "$EXP" << __EOF__
diff --git a/tests-m32/strace-k-demangle.test b/tests-m32/strace-k-demangle.test
new file mode 100755
index 0000000..1616449
--- /dev/null
+++ b/tests-m32/strace-k-demangle.test
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Check strace -k symbol names demangling.
+
+test_prog=../stack-fcall-mangled
+expected='getpid ns::f3(int) ns::f2(int) ns::f1(int) ns::f0(int) main '
+
+. "${srcdir=.}"/strace-k.test
diff --git a/tests-m32/strace-k.test b/tests-m32/strace-k.test
index e68951e..2a21a9d 100755
--- a/tests-m32/strace-k.test
+++ b/tests-m32/strace-k.test
@@ -38,11 +38,13 @@
 check_prog sed
 check_prog tr
 
-run_prog ../stack-fcall
+: ${test_prog=../stack-fcall}
+: ${expected='getpid f3 f2 f1 f0 main '}
+
+run_prog "$test_prog"
 run_strace -e getpid -k $args
 
-expected='getpid f3 f2 f1 f0 main '
-result=$(sed -r -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" || {
@@ -50,5 +52,3 @@
 	echo "result: \"$result\""
 	dump_log_and_fail_with "$STRACE $args output mismatch"
 }
-
-exit 0
diff --git a/tests-m32/symlink.gen.test b/tests-m32/symlink.gen.test
index f41668c..8cedfbf 100755
--- a/tests-m32/symlink.gen.test
+++ b/tests-m32/symlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+run_strace_match_diff -a34 
diff --git a/tests-m32/symlinkat.gen.test b/tests-m32/symlinkat.gen.test
index 39e624a..12455dd 100755
--- a/tests-m32/symlinkat.gen.test
+++ b/tests-m32/symlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/sync.gen.test b/tests-m32/sync.gen.test
index 4aaf8c7..8436a1f 100755
--- a/tests-m32/sync.gen.test
+++ b/tests-m32/sync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
+run_strace_match_diff -a7 
diff --git a/tests-m32/sync_file_range.gen.test b/tests-m32/sync_file_range.gen.test
index 0693c12..2f41c7d 100755
--- a/tests-m32/sync_file_range.gen.test
+++ b/tests-m32/sync_file_range.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/sync_file_range2.gen.test b/tests-m32/sync_file_range2.gen.test
index 23046b6..d432647 100755
--- a/tests-m32/sync_file_range2.gen.test
+++ b/tests-m32/sync_file_range2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/syntax.sh b/tests-m32/syntax.sh
index 0a0d2a5..b1c8fdc 100644
--- a/tests-m32/syntax.sh
+++ b/tests-m32/syntax.sh
@@ -50,13 +50,11 @@
 			"strace $* failed to print expected diagnostics"
 }
 
-strace_exp="${STRACE##* }"
-
 check_e()
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
+$STRACE_EXE: $pattern
 __EOF__
 	check_exit_status_and_stderr "$@"
 }
@@ -65,7 +63,7 @@
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
+$STRACE_EXE: $pattern
 __EOF__
 	check_exit_status_and_stderr_using_grep "$@"
 }
@@ -74,8 +72,8 @@
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
-Try '$strace_exp -h' for more information.
+$STRACE_EXE: $pattern
+Try '$STRACE_EXE -h' for more information.
 __EOF__
 	check_exit_status_and_stderr "$@"
 }
diff --git a/tests-m32/sysinfo.gen.test b/tests-m32/sysinfo.gen.test
index e6469d5..fa46237 100755
--- a/tests-m32/sysinfo.gen.test
+++ b/tests-m32/sysinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-m32/syslog.gen.test b/tests-m32/syslog.gen.test
index 5423d5b..5707a3e 100755
--- a/tests-m32/syslog.gen.test
+++ b/tests-m32/syslog.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-m32/tee.gen.test b/tests-m32/tee.gen.test
index 2a87fae..b5fbfc0 100755
--- a/tests-m32/tee.gen.test
+++ b/tests-m32/tee.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/test_printpath.c b/tests-m32/test_printpath.c
index 5f482f2..c485a26 100644
--- a/tests-m32/test_printpath.c
+++ b/tests-m32/test_printpath.c
@@ -2,6 +2,7 @@
  * Test printpath/umovestr.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,10 +30,10 @@
 
 #include "tests.h"
 
+#include <limits.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 #include "test_ucopy.h"
 
diff --git a/tests-m32/test_ucopy.c b/tests-m32/test_ucopy.c
index 9ddffbc..09f809a 100644
--- a/tests-m32/test_ucopy.c
+++ b/tests-m32/test_ucopy.c
@@ -2,6 +2,7 @@
  * Test whether process_vm_readv and PTRACE_PEEKDATA work.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,10 +31,10 @@
 #include "tests.h"
 
 #include <errno.h>
+#include <sys/ptrace.h>
 #include <signal.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <sys/ptrace.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
 
diff --git a/tests-m32/tests.h b/tests-m32/tests.h
index d453e3e..1c66c26 100644
--- a/tests-m32/tests.h
+++ b/tests-m32/tests.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -75,6 +75,15 @@
 void perror_msg_and_skip(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+#ifndef perror_msg_and_fail
+# define perror_msg_and_fail(fmt_, ...) \
+	perror_msg_and_fail("%s:%d: " fmt_, __FILE__, __LINE__, ##__VA_ARGS__)
+#endif
+#ifndef perror_msg_and_fail
+# define error_msg_and_fail(fmt_, ...) \
+	error_msg_and_fail("%s:%d: " fmt_, __FILE__, __LINE__, ##__VA_ARGS__)
+#endif
+
 /* Stat the specified file and skip the test if the stat call failed. */
 void skip_if_unavailable(const char *);
 
diff --git a/tests-m32/time.gen.test b/tests-m32/time.gen.test
index ed7ec69..3269b16 100755
--- a/tests-m32/time.gen.test
+++ b/tests-m32/time.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/timer_create.gen.test b/tests-m32/timer_create.gen.test
index 6b4c543..bf65261 100755
--- a/tests-m32/timer_create.gen.test
+++ b/tests-m32/timer_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/times.gen.test b/tests-m32/times.gen.test
index ca4ebbe..06b036f 100755
--- a/tests-m32/times.gen.test
+++ b/tests-m32/times.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-m32/truncate.gen.test b/tests-m32/truncate.gen.test
index 0410e73..7a631ef 100755
--- a/tests-m32/truncate.gen.test
+++ b/tests-m32/truncate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/truncate64.gen.test b/tests-m32/truncate64.gen.test
index dae0fe6..2b368f4 100755
--- a/tests-m32/truncate64.gen.test
+++ b/tests-m32/truncate64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-m32/ugetrlimit.gen.test b/tests-m32/ugetrlimit.gen.test
index ff27134..a412fe6 100755
--- a/tests-m32/ugetrlimit.gen.test
+++ b/tests-m32/ugetrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/umask.gen.test b/tests-m32/umask.gen.test
index 60af5e9..5d6c318 100755
--- a/tests-m32/umask.gen.test
+++ b/tests-m32/umask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests-m32/umovestr3.c b/tests-m32/umovestr3.c
index cf2fa7d..74f0e93 100644
--- a/tests-m32/umovestr3.c
+++ b/tests-m32/umovestr3.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,9 +27,9 @@
  */
 
 #include "tests.h"
+#include <limits.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 int
 main(void)
diff --git a/tests-m32/unlink.gen.test b/tests-m32/unlink.gen.test
index 7b8522b..63bc0c4 100755
--- a/tests-m32/unlink.gen.test
+++ b/tests-m32/unlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-m32/unlinkat.gen.test b/tests-m32/unlinkat.gen.test
index 5a77c6a..5de7908 100755
--- a/tests-m32/unlinkat.gen.test
+++ b/tests-m32/unlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-m32/unshare.gen.test b/tests-m32/unshare.gen.test
index 077a458..782ce47 100755
--- a/tests-m32/unshare.gen.test
+++ b/tests-m32/unshare.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests-m32/userfaultfd.gen.test b/tests-m32/userfaultfd.gen.test
index 4735146..61b6988 100755
--- a/tests-m32/userfaultfd.gen.test
+++ b/tests-m32/userfaultfd.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
+run_strace_match_diff -a38 
diff --git a/tests-m32/ustat.gen.test b/tests-m32/ustat.gen.test
index f64b28d..2b09f7e 100755
--- a/tests-m32/ustat.gen.test
+++ b/tests-m32/ustat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-m32/utime.gen.test b/tests-m32/utime.gen.test
index 7270556..58ebc5a 100755
--- a/tests-m32/utime.gen.test
+++ b/tests-m32/utime.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests-m32/utimensat.gen.test b/tests-m32/utimensat.gen.test
index a4d6656..07dffa3 100755
--- a/tests-m32/utimensat.gen.test
+++ b/tests-m32/utimensat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-m32/utimes.gen.test b/tests-m32/utimes.gen.test
index 37ed29c..559243e 100755
--- a/tests-m32/utimes.gen.test
+++ b/tests-m32/utimes.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-m32/vhangup.gen.test b/tests-m32/vhangup.gen.test
index 7ac84e5..da19216 100755
--- a/tests-m32/vhangup.gen.test
+++ b/tests-m32/vhangup.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-m32/vmsplice.gen.test b/tests-m32/vmsplice.gen.test
index fe6a07d..0dc18b6 100755
--- a/tests-m32/vmsplice.gen.test
+++ b/tests-m32/vmsplice.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
+run_strace_match_diff -ewrite=1 
diff --git a/tests-m32/wait4.gen.test b/tests-m32/wait4.gen.test
index ae04915..22a982f 100755
--- a/tests-m32/wait4.gen.test
+++ b/tests-m32/wait4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-m32/waitid.gen.test b/tests-m32/waitid.gen.test
index 59f4022..22edd67 100755
--- a/tests-m32/waitid.gen.test
+++ b/tests-m32/waitid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-m32/waitpid.gen.test b/tests-m32/waitpid.gen.test
index d91e298..a5678a1 100755
--- a/tests-m32/waitpid.gen.test
+++ b/tests-m32/waitpid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-m32/xet_thread_area_x86.c b/tests-m32/xet_thread_area_x86.c
new file mode 100644
index 0000000..68f495c
--- /dev/null
+++ b/tests-m32/xet_thread_area_x86.c
@@ -0,0 +1,227 @@
+/*
+ * Check decoding of set_thread_area and get_thread_area syscalls on x86
+ * architecture.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_get_thread_area && defined __NR_set_thread_area \
+ && defined HAVE_STRUCT_USER_DESC
+
+# include <assert.h>
+# include <errno.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# include "print_user_desc.c"
+
+long errnum;
+
+static void
+printptr(kernel_ulong_t ptr, const char *ptr_str)
+{
+	if (ptr_str)
+		printf("%s", ptr_str);
+	else
+		printf("%#llx", zero_extend_signed_to_ull(ptr));
+}
+
+/**
+ * Perform set_thread_area call along with printing the expected output.
+ *
+ * @param ptr_val Pointer to thread area argument.
+ * @param ptr_str Explicit string representation of the argument.
+ * @param valid   Whether argument points to the valid memory and its contents
+ *                should be decoded.
+ * @param entry_number_str explicit decoding of the entry_number field.
+ */
+static long
+set_thread_area(kernel_ulong_t ptr_val, const char *ptr_str, bool valid,
+		const char *entry_number_str)
+{
+	struct user_desc *ptr = (struct user_desc *) (uintptr_t) ptr_val;
+	long rc = -1;
+	int saved_errno;
+
+	rc = syscall(__NR_set_thread_area, ptr_val);
+	saved_errno = errno;
+	printf("set_thread_area(");
+
+	if (valid)
+		print_user_desc(ptr, entry_number_str);
+	else
+		printptr(ptr_val, ptr_str);
+
+	errno = saved_errno;
+	printf(") = %s", sprintrc(rc));
+	if (!rc)
+		printf(" (entry_number=%u)", ptr->entry_number);
+
+	puts("");
+
+	return rc;
+}
+
+/**
+ * Perform get_thread_are call along with printing the expected output and
+ * checking the result against the argument of the previous set_thread_area
+ * call, if it had place.
+ *
+ * @param ptr_val  Pointer to thread area argument.
+ * @param ptr_str  Explicit string representation of the argument.
+ * @param valid    Whether argument points to the valid memory and its contents
+ *                 should be decoded.
+ * @param set_rc   Return code of the previous set_thread_area call.
+ * @param expected The value of the argument passed to the previous
+ *                 set_thread_area call.
+ */
+static void
+get_thread_area(kernel_ulong_t ptr_val, const char *ptr_str, bool valid,
+		long set_rc, kernel_ulong_t expected)
+{
+	struct user_desc *ptr = (struct user_desc *) (uintptr_t) ptr_val;
+	struct user_desc *expected_ptr =
+		(struct user_desc *) (uintptr_t) expected;
+	int saved_errno;
+	long rc;
+
+	rc = syscall(__NR_get_thread_area, ptr_val);
+	saved_errno = errno;
+
+	printf("get_thread_area(");
+
+	if (valid && !rc) {
+		if (!set_rc) {
+			assert(ptr->entry_number == expected_ptr->entry_number);
+			assert(ptr->base_addr    == expected_ptr->base_addr);
+			assert(ptr->limit        == expected_ptr->limit);
+			assert(ptr->seg_32bit    == expected_ptr->seg_32bit);
+			assert(ptr->contents     == expected_ptr->contents);
+			assert(ptr->read_exec_only ==
+			       expected_ptr->read_exec_only);
+			assert(ptr->limit_in_pages ==
+			       expected_ptr->limit_in_pages);
+			assert(ptr->seg_not_present ==
+			       expected_ptr->seg_not_present);
+			assert(ptr->useable      == expected_ptr->useable);
+			/*
+			 * We do not check lm as 32-bit processes ignore it, and
+			 * only 32-bit processes can successfully execute
+			 * get_thread_area.
+			 */
+		}
+
+		print_user_desc(ptr,
+				(int) ptr->entry_number == -1 ? "-1" : NULL);
+	} else {
+		printptr(ptr_val, ptr_str);
+	}
+
+	errno = saved_errno;
+	printf(") = %s\n", sprintrc(rc));
+}
+
+int main(void)
+{
+	struct user_desc *ta1 = tail_alloc(sizeof(*ta1));
+	struct user_desc *ta2 = tail_alloc(sizeof(*ta2));
+	unsigned *bogus_entry_number = tail_alloc(sizeof(*bogus_entry_number));
+
+	long set_rc = -1;
+
+	/*
+	 * Let's do some weird syscall, it will mark the beginning of our
+	 * expected output.
+	 */
+	syscall(__NR_reboot, 0, 0, 0, 0);
+
+	set_rc = set_thread_area((uintptr_t) ARG_STR(NULL), false, NULL);
+	get_thread_area((uintptr_t) ARG_STR(NULL), false, set_rc,
+			(uintptr_t) NULL);
+
+	set_rc = set_thread_area(-1, NULL, false, NULL);
+	get_thread_area(-1, NULL, false, set_rc, -1);
+
+	fill_memory(ta1, sizeof(*ta1));
+	fill_memory_ex(ta2, sizeof(*ta2), 0xA5, 0x5A);
+
+	set_thread_area((uintptr_t) (ta1 + 1), NULL, false, NULL);
+
+	set_thread_area((uintptr_t) bogus_entry_number, NULL, false, NULL);
+
+	set_thread_area((uintptr_t) ta1, NULL, true, NULL);
+
+	ta1->entry_number = -1;
+	ta1->base_addr = 0;
+	ta1->limit = 0;
+	ta1->contents = 1;
+	ta1->seg_32bit = 1;
+	ta1->seg_not_present = 0;
+
+	set_rc = set_thread_area((uintptr_t) ta1, NULL, true, "-1");
+
+	*bogus_entry_number = 2718281828U;
+	get_thread_area((uintptr_t) bogus_entry_number,
+			"{entry_number=2718281828, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	/* That one should return -EFAULT on i386 */
+	*bogus_entry_number = 12;
+	get_thread_area((uintptr_t) bogus_entry_number,
+			"{entry_number=12, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = 3141592653U;
+	get_thread_area((uintptr_t) ta2, "{entry_number=3141592653, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = -1;
+	get_thread_area((uintptr_t) ta2, "{entry_number=-1, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = ta1->entry_number;
+	assert(set_rc == 0 || (int) ta2->entry_number == -1);
+	get_thread_area((uintptr_t) ta2, "{entry_number=-1, ...}",
+			true, set_rc, (uintptr_t) ta1);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_get_thread_area && __NR_set_thread_area"
+		    " && HAVE_STRUCT_USER_DESC");
+
+#endif
diff --git a/tests-m32/xet_thread_area_x86.test b/tests-m32/xet_thread_area_x86.test
new file mode 100755
index 0000000..863f7e2
--- /dev/null
+++ b/tests-m32/xet_thread_area_x86.test
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Check decoding of set_thread_area and get_thread_area syscalls on x86.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog > /dev/null
+run_strace -a22 -e trace=reboot,/[gs]et_thread_area $args > "$EXP"
+sed '0,/^reboot/d' "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests-m32/xselect.c b/tests-m32/xselect.c
index a25ebcc..b1e3766 100644
--- a/tests-m32/xselect.c
+++ b/tests-m32/xselect.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of select/_newselect syscalls.
+ *
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
@@ -30,127 +32,442 @@
  * Based on test by Dr. David Alan Gilbert <dave@treblig.org>
  */
 
-#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
-static fd_set set[0x1000000 / sizeof(fd_set)];
+static const char *errstr;
 
-int main(void)
+static long
+xselect(const kernel_ulong_t nfds,
+	const kernel_ulong_t rs,
+	const kernel_ulong_t ws,
+	const kernel_ulong_t es,
+	const kernel_ulong_t tv)
+#ifndef xselect
 {
-	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
-	struct timeval tv_in;
-	int fds[2];
-	long rc;
+	long rc = syscall(TEST_SYSCALL_NR,
+			  F8ILL_KULONG_MASK | nfds, rs, ws, es, tv);
+	errstr = sprintrc(rc);
+	return rc;
+}
+#else
+	;
+#endif
 
+#define XSELECT(expected_, ...)						\
+	do {								\
+		long rc = xselect(__VA_ARGS__);				\
+		if (rc != (expected_))					\
+			perror_msg_and_fail(TEST_SYSCALL_STR		\
+					    ": expected %d"		\
+					    ", returned %ld",		\
+					    (expected_), rc);		\
+	} while (0)							\
+/* End of XSELECT definition. */
+
+int
+main(void)
+{
+#ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+#endif
+
+	for (int i = 3; i < FD_SETSIZE; ++i) {
+#ifdef PATH_TRACING_FD
+		if (i == PATH_TRACING_FD)
+			continue;
+#endif
+		(void) close(i);
+	}
+
+	int fds[2];
 	if (pipe(fds))
 		perror_msg_and_fail("pipe");
 
+	static const int smallset_size = sizeof(kernel_ulong_t) * 8;
+	const int nfds = fds[1] + 1;
+	if (nfds > smallset_size)
+		error_msg_and_fail("nfds[%d] > smallset_size[%d]\n",
+				   nfds, smallset_size);
+
+	struct timeval tv_in = { 0, 123 };
+	struct timeval *const tv = tail_memdup(&tv_in, sizeof(tv_in));
+	const uintptr_t a_tv = (uintptr_t) tv;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_rs);
+	fd_set *const rs = (void *) l_rs;
+	const uintptr_t a_rs = (uintptr_t) rs;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_ws);
+	fd_set *const ws = (void *) l_ws;
+	const uintptr_t a_ws = (uintptr_t) ws;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_es);
+	fd_set *const es = (void *) l_es;
+	const uintptr_t a_es = (uintptr_t) es;
+
+	long rc;
+
 	/*
-	 * Start with a nice simple select.
+	 * An equivalent of nanosleep.
 	 */
-	FD_ZERO(set);
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
-	if (rc < 0)
-		perror_msg_and_skip(TEST_SYSCALL_STR);
-	assert(rc == 1);
-	printf("%s(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
-	       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-	       fds[0], fds[1], fds[0], fds[1]);
+	if (xselect(0, 0, 0, 0, a_tv)) {
+		if (errno == ENOSYS)
+			perror_msg_and_skip(TEST_SYSCALL_STR);
+		else
+			perror_msg_and_fail(TEST_SYSCALL_STR);
+	}
+#ifndef PATH_TRACING_FD
+	printf("%s(0, NULL, NULL, NULL, {tv_sec=%lld, tv_usec=%llu})"
+	       " = 0 (Timeout)\n",
+	       TEST_SYSCALL_STR, (long long) tv_in.tv_sec,
+	       zero_extend_signed_to_ull(tv_in.tv_usec));
+#endif
+
+	/* EFAULT on tv argument */
+	XSELECT(-1, 0, 0, 0, 0, a_tv + 1);
+#ifndef PATH_TRACING_FD
+	printf("%s(0, NULL, NULL, NULL, %#lx) = %s\n",
+	       TEST_SYSCALL_STR, (unsigned long) a_tv + 1, errstr);
+#endif
+
+	/*
+	 * Start with a nice simple select with the same set.
+	 */
+	for (int i = nfds; i <= smallset_size; ++i) {
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		XSELECT(1, i, a_rs, a_rs, a_rs, 0);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
+		       TEST_SYSCALL_STR, i, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1]);
+#else
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		XSELECT(i > PATH_TRACING_FD ? 3 : 1, i, a_rs, a_rs, a_rs, 0);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d %d], [%d %d %d], [%d %d %d]"
+			       ", NULL) = 3 ()\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       fds[0], fds[1], PATH_TRACING_FD);
+		}
+#endif
+	}
 
 	/*
 	 * Odd timeout.
 	 */
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = 0xdeadbeefU;
-	tv->tv_usec = 0xfacefeedU;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+	tv_in.tv_sec = 0xdeadbeefU;
+	tv_in.tv_usec = 0xfacefeedU;
+	memcpy(tv, &tv_in, sizeof(tv_in));
+	rc = xselect(nfds, a_rs, a_rs, a_rs, a_tv);
 	if (rc < 0) {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
-		       zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       errstr);
+#endif /* !PATH_TRACING_FD */
 	} else {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
 		       " (left {tv_sec=%lld, tv_usec=%llu})\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
 		       zero_extend_signed_to_ull(tv_in.tv_usec),
 		       rc, (long long) tv->tv_sec,
 		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* !PATH_TRACING_FD */
 	}
 
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-	tv->tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	/*
+	 * Very odd timeout.
+	 */
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+	tv_in.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv_in.tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
+	memcpy(tv, &tv_in, sizeof(tv_in));
+	rc = xselect(nfds, a_rs, a_rs, a_rs, a_tv);
 	if (rc < 0) {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
-		       zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       errstr);
+#endif /* PATH_TRACING_FD */
 	} else {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
 		       " (left {tv_sec=%lld, tv_usec=%llu})\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
 		       zero_extend_signed_to_ull(tv_in.tv_usec),
 		       rc, (long long) tv->tv_sec,
 		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
 	}
 
 	/*
 	 * Another simple one, with a timeout.
 	 */
-	FD_SET(1, set);
-	FD_SET(2, set);
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = 0xc0de1;
-	tv->tv_usec = 0xc0de2;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, tv) == 3);
-	printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%llu})"
-	       " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%llu})\n",
-	       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-	       (long long) tv_in.tv_sec,
-	       zero_extend_signed_to_ull(tv_in.tv_usec),
-	       fds[1],
-	       (long long) tv->tv_sec,
-	       zero_extend_signed_to_ull(tv->tv_usec));
+	for (int i = nfds; i <= smallset_size; ++i) {
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		*l_es = 0;
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3, i, a_rs, a_ws, a_es, a_tv);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d %d], [%d %d %d %d], []"
+		       ", {tv_sec=%lld, tv_usec=%llu}) = 3 (out [1 2 %d]"
+		       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i, fds[0], fds[1],
+		       1, 2, fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       fds[1],
+		       (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+#else
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3 + (i > PATH_TRACING_FD), i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d %d], [%d %d %d %d], []"
+			       ", {tv_sec=%lld, tv_usec=%llu})"
+			       " = 4 (in [%d], out [1 2 %d]"
+			       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       1, 2, fds[0], fds[1],
+			       (long long) tv_in.tv_sec,
+			       zero_extend_signed_to_ull(tv_in.tv_usec),
+			       PATH_TRACING_FD, fds[1],
+			       (long long) tv->tv_sec,
+			       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3 + (i > PATH_TRACING_FD), i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d], [%d %d %d %d %d], []"
+			       ", {tv_sec=%lld, tv_usec=%llu})"
+			       " = 4 (out [1 2 %d %d]"
+			       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1],
+			       1, 2, fds[0], fds[1], PATH_TRACING_FD,
+			       (long long) tv_in.tv_sec,
+			       zero_extend_signed_to_ull(tv_in.tv_usec),
+			       fds[1], PATH_TRACING_FD,
+			       (long long) tv->tv_sec,
+			       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		*l_es = (1UL << PATH_TRACING_FD);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3, i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+		printf("%s(%d, [%d %d], [%d %d %d %d], [%d]"
+		       ", {tv_sec=%lld, tv_usec=%llu}) = 3 (out [1 2 %d]"
+		       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i,
+		       fds[0], fds[1],
+		       1, 2, fds[0], fds[1], PATH_TRACING_FD,
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       fds[1],
+		       (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+#endif /* PATH_TRACING_FD */
+	}
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
 	 * but with a pointer to a large chunk of valid memory.
 	 */
-	FD_ZERO(set);
+	static fd_set set[0x1000000 / sizeof(fd_set)];
 	FD_SET(fds[1], set);
-	assert(syscall(TEST_SYSCALL_NR, -1, NULL, set, NULL, NULL) == -1);
-	printf("%s(-1, NULL, %p, NULL, NULL) = -1 EINVAL (%m)\n",
-	       TEST_SYSCALL_STR, set);
+	XSELECT(-1, -1U, 0, (uintptr_t) set, 0, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(-1, NULL, %p, NULL, NULL) = %s\n",
+	       TEST_SYSCALL_STR, set, errstr);
+#endif
 
 	/*
-	 * Another variant, with nfds exceeding FD_SETSIZE limit.
+	 * Big sets, nfds exceeds FD_SETSIZE limit.
 	 */
-	FD_ZERO(set);
+	const size_t big_size = sizeof(fd_set) + sizeof(long);
+	fd_set *const big_rs = tail_alloc(big_size);
+	const uintptr_t a_big_rs = (uintptr_t) big_rs;
+
+	fd_set *const big_ws = tail_alloc(big_size);
+	const uintptr_t a_big_ws = (uintptr_t) big_ws;
+
+	for (unsigned int i = FD_SETSIZE; i <= big_size * 8; ++i) {
+		memset(big_rs, 0, big_size);
+		memset(big_ws, 0, big_size);
+		FD_SET(fds[0], big_rs);
+		tv->tv_sec = 0;
+		tv->tv_usec = 10 + (i - FD_SETSIZE);
+		XSELECT(0, i, a_big_rs, a_big_ws, 0, a_tv);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=%d})"
+		       " = 0 (Timeout)\n",
+		       TEST_SYSCALL_STR, i, fds[0], 10 + (i - FD_SETSIZE));
+#else
+		FD_SET(fds[0], big_rs);
+		FD_SET(PATH_TRACING_FD, big_rs);
+		tv->tv_sec = 0;
+		tv->tv_usec = 10 + (i - FD_SETSIZE);
+		XSELECT(1, i, a_big_rs, a_big_ws, 0, a_tv);
+		printf("%s(%d, [%d %d], [], NULL, {tv_sec=0, tv_usec=%d})"
+		       " = 1 (in [%d], left {tv_sec=0, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i, fds[0], PATH_TRACING_FD,
+		       10 + (i - FD_SETSIZE), PATH_TRACING_FD,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
+	}
+
+	/*
+	 * Huge sets, nfds equals to INT_MAX.
+	 */
 	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
 	tv->tv_sec = 0;
 	tv->tv_usec = 123;
-	assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, tv) == 0);
-	printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=123}) = 0 (Timeout)\n",
-	       TEST_SYSCALL_STR, FD_SETSIZE + 1, fds[0]);
+	XSELECT(0, INT_MAX, (uintptr_t) set, (uintptr_t) &set[1],
+		(uintptr_t) &set[2], a_tv);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, [%d %d], [], [], {tv_sec=0, tv_usec=123})"
+	       " = 0 (Timeout)\n",
+	       TEST_SYSCALL_STR, INT_MAX, fds[0], fds[1]);
+#else
+	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
+	FD_SET(PATH_TRACING_FD, set);
+	tv->tv_sec = 0;
+	tv->tv_usec = 123;
+	XSELECT(1, INT_MAX, (uintptr_t) set, (uintptr_t) &set[1],
+		(uintptr_t) &set[2], a_tv);
+	printf("%s(%d, [%d %d %d], [], [], {tv_sec=0, tv_usec=123})"
+	       " = 1 (in [%d], left {tv_sec=0, tv_usec=%llu})\n",
+	       TEST_SYSCALL_STR, INT_MAX, fds[0], fds[1], PATH_TRACING_FD,
+	       PATH_TRACING_FD, zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
+
+	/*
+	 * Small sets, nfds exceeds FD_SETSIZE limit.
+	 * The kernel seems to be fine with it but strace cannot follow.
+	 */
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1])
+#ifdef PATH_TRACING_FD
+		| (1UL << PATH_TRACING_FD)
+#endif
+		;
+	*l_ws = (1UL << fds[0]);
+	*l_es = (1UL << fds[0]) | (1UL << fds[1])
+#ifdef PATH_TRACING_FD
+		| (1UL << PATH_TRACING_FD)
+#endif
+		;
+	tv->tv_sec = 0;
+	tv->tv_usec = 123;
+	rc = xselect(FD_SETSIZE + 1, a_rs, a_ws, a_es, a_tv);
+	if (rc < 0) {
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, %p, %p, %p, {tv_sec=0, tv_usec=123}) = %s\n",
+		       TEST_SYSCALL_STR, FD_SETSIZE + 1, rs, ws, es, errstr);
+#endif
+	} else {
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, %p, %p, %p, {tv_sec=0, tv_usec=123})"
+		       " = 0 (Timeout)\n",
+		       TEST_SYSCALL_STR, FD_SETSIZE + 1, rs, ws, es);
+#endif
+	}
+
+	/*
+	 * Small sets, one of allocated descriptors exceeds smallset_size.
+	 */
+	if (dup2(fds[1], smallset_size) != smallset_size)
+		perror_msg_and_fail("dup2");
+#ifdef PATH_TRACING_FD
+	FD_SET(PATH_TRACING_FD, rs);
+	FD_SET(PATH_TRACING_FD, ws);
+	FD_SET(PATH_TRACING_FD, es);
+#endif
+	XSELECT(-1, smallset_size + 1, a_rs, a_ws, a_es, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, %p, %p, %p, NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1, rs, ws, es, errstr);
+#endif
+
+	/*
+	 * Small and big sets,
+	 * one of allocated descriptors exceeds smallset_size.
+	 */
+	memset(big_rs, 0, big_size);
+	FD_SET(fds[0], big_rs);
+	FD_SET(smallset_size, big_rs);
+	memset(big_ws, 0, big_size);
+	FD_SET(fds[1], big_ws);
+	FD_SET(smallset_size, big_ws);
+	XSELECT(-1, smallset_size + 1, a_big_rs, a_big_ws, a_es, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, [%d %d], [%d %d], %p, NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1,
+	       fds[0], smallset_size,
+	       fds[1], smallset_size,
+	       es, errstr);
+#endif /* !PATH_TRACING_FD */
+	XSELECT(-1, smallset_size + 1, a_es, a_big_ws, a_big_rs, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, %p, [%d %d], [%d %d], NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1,
+	       es,
+	       fds[1], smallset_size,
+	       fds[0], smallset_size,
+	       errstr);
+#endif /* !PATH_TRACING_FD */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/Makefile.am b/tests-mx32/Makefile.am
index c445353..fcfbf96 100644
--- a/tests-mx32/Makefile.am
+++ b/tests-mx32/Makefile.am
@@ -1,7 +1,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2017 The strace developers.
+# Copyright (c) 2011-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -28,8 +28,12 @@
 
 OS = linux
 ARCH = @arch_mx32@
+NATIVE_ARCH = @arch_native@
+SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
+SIZEOF_LONG = 4
 MPERS_NAME = mx32
-ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) -mx32
+MPERS_CC_FLAGS = @cc_flags_mx32@
+ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
 	      -I$(builddir) \
@@ -80,6 +84,7 @@
 include pure_executables.am
 
 check_PROGRAMS = $(PURE_EXECUTABLES) \
+	_newselect-P \
 	answer \
 	attach-f-p \
 	attach-f-p-cmd \
@@ -117,6 +122,9 @@
 	netlink_netlink_diag \
 	netlink_unix_diag \
 	nsyscalls \
+	nsyscalls-d \
+	oldselect-P \
+	oldselect-efault-P \
 	pc \
 	perf_event_open_nonverbose \
 	perf_event_open_unabbrev \
@@ -137,12 +145,14 @@
 	scm_rights \
 	seccomp-filter-v \
 	seccomp-strict \
+	select-P \
 	set_ptracer_any \
 	set_sigblock \
 	set_sigign \
 	signal_receive \
 	sleep \
 	stack-fcall \
+	stack-fcall-mangled \
 	threads-execve \
 	unblock_reset_raise \
 	unix-pair-send-recv \
@@ -182,10 +192,17 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
+	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
+	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
+
 include gen_tests.am
 
 if USE_LIBUNWIND
 LIBUNWIND_TESTS = strace-k.test
+if USE_DEMANGLE
+LIBUNWIND_TESTS += strace-k-demangle.test
+endif
 else
 LIBUNWIND_TESTS =
 endif
@@ -204,11 +221,6 @@
 	futex.test \
 	getuid.test \
 	ioctl.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_loop-nv.test \
-	ioctl_nsfs.test \
-	ioctl_sock_gifconf.test \
 	ipc_msgbuf.test \
 	llseek.test \
 	lseek.test \
@@ -220,9 +232,11 @@
 	net.test \
 	netlink_sock_diag.test \
 	nsyscalls.test \
-	oldselect.test \
+	nsyscalls-d.test \
+	nsyscalls-nd.test \
 	personality.test \
 	pipe.test \
+	poll-P.test \
 	poll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
@@ -241,6 +255,7 @@
 	seccomp-strict.test \
 	sigaltstack.test \
 	sun_path.test \
+	xet_thread_area_x86.test \
 	uio.test \
 	umount.test \
 	umount2.test \
@@ -263,6 +278,8 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
+	filtering_fd-syntax.test \
+	filtering_syscall-syntax.test \
 	fflush.test \
 	get_regs.test \
 	interactive_block.test \
@@ -309,13 +326,18 @@
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
 
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) STRACE_NATIVE_ARCH=$(NATIVE_ARCH) \
+			SIZEOF_KERNEL_LONG_T=$(SIZEOF_KERNEL_LONG_T) \
+			SIZEOF_LONG=$(SIZEOF_LONG) \
+			MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
 
 @VALGRIND_CHECK_RULES@
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/strace.supp
 
 EXTRA_DIST = \
+	accept_compat.h \
+	attach-p-cmd.h \
 	caps-abbrev.awk \
 	caps.awk \
 	clock.in \
@@ -331,7 +353,6 @@
 	getresugid.c \
 	init.sh \
 	init_delete_module.h \
-	ioctl-v.sh \
 	ipc.sh \
 	ipc_msgbuf.expected \
 	ksysent.sed \
@@ -339,8 +360,8 @@
 	match.awk \
 	net.expected \
 	netlink_sock_diag-v.sh \
-	oldselect.expected \
 	pipe.expected \
+	print_user_desc.c \
 	process_vm_readv_writev.c \
 	pure_executables.list \
 	qual_fault-exit_group.expected \
@@ -358,10 +379,12 @@
 	setugid.c \
 	sigaltstack.expected \
 	sockname.c \
+	stack-fcall.h \
 	strace-C.expected \
 	strace-E.expected \
 	strace-T.expected \
 	strace-ff.expected \
+	strace-k-demangle.test \
 	strace-k.test \
 	strace-r.expected \
 	strace.supp \
diff --git a/tests-mx32/Makefile.in b/tests-mx32/Makefile.in
index 272fa47..1082a83 100644
--- a/tests-mx32/Makefile.in
+++ b/tests-mx32/Makefile.in
@@ -17,7 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2017 The strace developers.
+# Copyright (c) 2011-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -136,23 +136,25 @@
 	$(srcdir)/../scno.am $(srcdir)/Makefile.in \
 	$(srcdir)/Makefile.am $(top_srcdir)/depcomp \
 	$(top_srcdir)/test-driver
-check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
-	attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
-	attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \
-	caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
-	check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
-	clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \
-	execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \
-	fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
-	gettid$(EXEEXT) int_0x80$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
+check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
+	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
+	block_reset_raise_run$(EXEEXT) caps-abbrev$(EXEEXT) \
+	check_sigblock$(EXEEXT) check_sigign$(EXEEXT) \
+	clone_parent$(EXEEXT) clone_ptrace$(EXEEXT) count-f$(EXEEXT) \
+	execve-v$(EXEEXT) execveat-v$(EXEEXT) \
+	filter-unavailable$(EXEEXT) fork-f$(EXEEXT) getpid$(EXEEXT) \
+	getppid$(EXEEXT) gettid$(EXEEXT) int_0x80$(EXEEXT) \
+	ioctl_dm-v$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+	ioctl_loop-nv$(EXEEXT) ioctl_loop-v$(EXEEXT) \
+	ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
 	is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \
 	list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \
 	mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \
 	net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \
 	netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	nsyscalls$(EXEEXT) pc$(EXEEXT) \
+	nsyscalls$(EXEEXT) nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
+	oldselect-efault-P$(EXEEXT) pc$(EXEEXT) \
 	perf_event_open_nonverbose$(EXEEXT) \
 	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
 	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
@@ -163,19 +165,21 @@
 	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
 	run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \
 	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
-	set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
-	stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
+	select-P$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	set_sigblock$(EXEEXT) set_sigign$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	stack-fcall-mangled$(EXEEXT) threads-execve$(EXEEXT) \
 	unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
 	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
 	wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_1 = strace-k-demangle.test
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
 subdir = tests-mx32
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
 	$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
 	$(top_srcdir)/m4/ax_valgrind_check.m4 \
-	$(top_srcdir)/m4/mpers.m4 $(top_srcdir)/m4/st_bpf.m4 \
+	$(top_srcdir)/m4/mpers.m4 \
 	$(top_srcdir)/m4/st_save_restore_var.m4 \
 	$(top_srcdir)/m4/st_warn_cflags.m4 \
 	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -250,8 +254,9 @@
 	getxxid$(EXEEXT) group_req$(EXEEXT) inet-cmsg$(EXEEXT) \
 	init_module$(EXEEXT) inotify$(EXEEXT) inotify_init1$(EXEEXT) \
 	ioctl$(EXEEXT) ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_loop$(EXEEXT) ioctl_mtd$(EXEEXT) \
-	ioctl_rtc$(EXEEXT) ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
+	ioctl_evdev$(EXEEXT) ioctl_kvm_run$(EXEEXT) \
+	ioctl_loop$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
+	ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
 	ioctl_sg_io_v4$(EXEEXT) ioctl_sock_gifconf$(EXEEXT) \
 	ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
 	iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
@@ -266,12 +271,12 @@
 	mkdir$(EXEEXT) mkdirat$(EXEEXT) mknod$(EXEEXT) \
 	mknodat$(EXEEXT) mlock$(EXEEXT) mlock2$(EXEEXT) \
 	mlockall$(EXEEXT) mmap$(EXEEXT) mmap64$(EXEEXT) mmsg$(EXEEXT) \
-	mmsg_name$(EXEEXT) mount$(EXEEXT) move_pages$(EXEEXT) \
-	mq$(EXEEXT) mq_sendrecv$(EXEEXT) mq_sendrecv-read$(EXEEXT) \
-	mq_sendrecv-write$(EXEEXT) msg_control$(EXEEXT) \
-	msg_name$(EXEEXT) munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-icmp_filter$(EXEEXT) net-sockaddr$(EXEEXT) \
-	net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+	mmsg_name$(EXEEXT) modify_ldt$(EXEEXT) mount$(EXEEXT) \
+	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
+	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
+	msg_control$(EXEEXT) msg_name$(EXEEXT) munlockall$(EXEEXT) \
+	nanosleep$(EXEEXT) net-icmp_filter$(EXEEXT) \
+	net-sockaddr$(EXEEXT) net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
 	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
 	netlink_audit$(EXEEXT) netlink_crypto$(EXEEXT) \
 	netlink_generic$(EXEEXT) netlink_kobject_uevent$(EXEEXT) \
@@ -301,16 +306,18 @@
 	nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \
 	nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \
 	nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
+	old_mmap-P$(EXEEXT) old_mmap-v-none$(EXEEXT) oldfstat$(EXEEXT) \
+	oldlstat$(EXEEXT) oldselect$(EXEEXT) oldselect-efault$(EXEEXT) \
 	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) \
 	osf_utimes$(EXEEXT) pause$(EXEEXT) perf_event_open$(EXEEXT) \
 	personality$(EXEEXT) pipe$(EXEEXT) pipe2$(EXEEXT) \
 	pkey_alloc$(EXEEXT) pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) \
-	poll$(EXEEXT) ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
-	prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
-	prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+	poll$(EXEEXT) poll-P$(EXEEXT) ppoll$(EXEEXT) ppoll-P$(EXEEXT) \
+	prctl-arg2-intptr$(EXEEXT) prctl-dumpable$(EXEEXT) \
+	prctl-name$(EXEEXT) prctl-no-args$(EXEEXT) \
+	prctl-pdeathsig$(EXEEXT) prctl-securebits$(EXEEXT) \
+	prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
+	pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
 	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
 	printpath-umovestr$(EXEEXT) \
 	printpath-umovestr-peekdata$(EXEEXT) \
@@ -324,11 +331,15 @@
 	readlinkat$(EXEEXT) readv$(EXEEXT) reboot$(EXEEXT) \
 	recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) recvmsg$(EXEEXT) \
 	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) rmdir$(EXEEXT) \
+	renameat2$(EXEEXT) request_key$(EXEEXT) \
+	riscv_flush_icache$(EXEEXT) rmdir$(EXEEXT) \
 	rt_sigaction$(EXEEXT) rt_sigpending$(EXEEXT) \
 	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
 	rt_sigreturn$(EXEEXT) rt_sigsuspend$(EXEEXT) \
 	rt_sigtimedwait$(EXEEXT) rt_tgsigqueueinfo$(EXEEXT) \
+	s390_guarded_storage$(EXEEXT) s390_guarded_storage-v$(EXEEXT) \
+	s390_pci_mmio_read_write$(EXEEXT) s390_runtime_instr$(EXEEXT) \
+	s390_sthyi$(EXEEXT) s390_sthyi-v$(EXEEXT) \
 	sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \
 	sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \
 	sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \
@@ -348,30 +359,34 @@
 	signalfd4$(EXEEXT) sigpending$(EXEEXT) sigprocmask$(EXEEXT) \
 	sigreturn$(EXEEXT) sigsuspend$(EXEEXT) so_linger$(EXEEXT) \
 	so_peercred$(EXEEXT) sock_filter-v$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stat$(EXEEXT) \
-	stat64$(EXEEXT) statfs$(EXEEXT) statfs64$(EXEEXT) \
-	statx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \
-	symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \
-	sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \
-	sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \
-	timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
-	timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
-	truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
-	uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
-	umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
-	umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
-	uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \
-	unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \
-	utime$(EXEEXT) utimensat$(EXEEXT) utimes$(EXEEXT) \
-	vhangup$(EXEEXT) vmsplice$(EXEEXT) wait4$(EXEEXT) \
-	waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+	socketcall$(EXEEXT) sockopt-sol_netlink$(EXEEXT) \
+	splice$(EXEEXT) stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
+	statfs64$(EXEEXT) statx$(EXEEXT) swap$(EXEEXT) \
+	sxetmask$(EXEEXT) symlink$(EXEEXT) symlinkat$(EXEEXT) \
+	sync$(EXEEXT) sync_file_range$(EXEEXT) \
+	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
+	tee$(EXEEXT) time$(EXEEXT) timer_create$(EXEEXT) \
+	timer_xettime$(EXEEXT) timerfd_xettime$(EXEEXT) times$(EXEEXT) \
+	times-fail$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
+	ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \
+	umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \
+	umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \
+	umovestr3$(EXEEXT) uname$(EXEEXT) unlink$(EXEEXT) \
+	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
+	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
+	utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \
+	wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
 	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
+	xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
+	xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
 _newselect_DEPENDENCIES = libtests.a
+_newselect_P_SOURCES = _newselect-P.c
+_newselect_P_OBJECTS = _newselect-P.$(OBJEXT)
+_newselect_P_LDADD = $(LDADD)
+_newselect_P_DEPENDENCIES = libtests.a
 accept_SOURCES = accept.c
 accept_OBJECTS = accept.$(OBJEXT)
 accept_LDADD = $(LDADD)
@@ -860,6 +875,10 @@
 ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
 ioctl_evdev_v_LDADD = $(LDADD)
 ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_kvm_run_SOURCES = ioctl_kvm_run.c
+ioctl_kvm_run_OBJECTS = ioctl_kvm_run.$(OBJEXT)
+ioctl_kvm_run_LDADD = $(LDADD)
+ioctl_kvm_run_DEPENDENCIES = libtests.a
 ioctl_loop_SOURCES = ioctl_loop.c
 ioctl_loop_OBJECTS = ioctl_loop.$(OBJEXT)
 ioctl_loop_LDADD = $(LDADD)
@@ -1096,6 +1115,10 @@
 mmsg_name_v_OBJECTS = mmsg_name-v.$(OBJEXT)
 mmsg_name_v_LDADD = $(LDADD)
 mmsg_name_v_DEPENDENCIES = libtests.a
+modify_ldt_SOURCES = modify_ldt.c
+modify_ldt_OBJECTS = modify_ldt.$(OBJEXT)
+modify_ldt_LDADD = $(LDADD)
+modify_ldt_DEPENDENCIES = libtests.a
 mount_SOURCES = mount.c
 mount_OBJECTS = mount.$(OBJEXT)
 mount_LDADD = $(LDADD)
@@ -1389,10 +1412,22 @@
 nsyscalls_OBJECTS = nsyscalls.$(OBJEXT)
 nsyscalls_LDADD = $(LDADD)
 nsyscalls_DEPENDENCIES = libtests.a
+nsyscalls_d_SOURCES = nsyscalls-d.c
+nsyscalls_d_OBJECTS = nsyscalls-d.$(OBJEXT)
+nsyscalls_d_LDADD = $(LDADD)
+nsyscalls_d_DEPENDENCIES = libtests.a
 old_mmap_SOURCES = old_mmap.c
 old_mmap_OBJECTS = old_mmap.$(OBJEXT)
 old_mmap_LDADD = $(LDADD)
 old_mmap_DEPENDENCIES = libtests.a
+old_mmap_P_SOURCES = old_mmap-P.c
+old_mmap_P_OBJECTS = old_mmap-P.$(OBJEXT)
+old_mmap_P_LDADD = $(LDADD)
+old_mmap_P_DEPENDENCIES = libtests.a
+old_mmap_v_none_SOURCES = old_mmap-v-none.c
+old_mmap_v_none_OBJECTS = old_mmap-v-none.$(OBJEXT)
+old_mmap_v_none_LDADD = $(LDADD)
+old_mmap_v_none_DEPENDENCIES = libtests.a
 oldfstat_SOURCES = oldfstat.c
 oldfstat_OBJECTS = oldfstat.$(OBJEXT)
 oldfstat_LDADD = $(LDADD)
@@ -1405,6 +1440,18 @@
 oldselect_OBJECTS = oldselect.$(OBJEXT)
 oldselect_LDADD = $(LDADD)
 oldselect_DEPENDENCIES = libtests.a
+oldselect_P_SOURCES = oldselect-P.c
+oldselect_P_OBJECTS = oldselect-P.$(OBJEXT)
+oldselect_P_LDADD = $(LDADD)
+oldselect_P_DEPENDENCIES = libtests.a
+oldselect_efault_SOURCES = oldselect-efault.c
+oldselect_efault_OBJECTS = oldselect-efault.$(OBJEXT)
+oldselect_efault_LDADD = $(LDADD)
+oldselect_efault_DEPENDENCIES = libtests.a
+oldselect_efault_P_SOURCES = oldselect-efault-P.c
+oldselect_efault_P_OBJECTS = oldselect-efault-P.$(OBJEXT)
+oldselect_efault_P_LDADD = $(LDADD)
+oldselect_efault_P_DEPENDENCIES = libtests.a
 oldstat_SOURCES = oldstat.c
 oldstat_OBJECTS = oldstat.$(OBJEXT)
 oldstat_LDADD = $(LDADD)
@@ -1470,10 +1517,18 @@
 poll_OBJECTS = poll.$(OBJEXT)
 poll_LDADD = $(LDADD)
 poll_DEPENDENCIES = libtests.a
+poll_P_SOURCES = poll-P.c
+poll_P_OBJECTS = poll-P.$(OBJEXT)
+poll_P_LDADD = $(LDADD)
+poll_P_DEPENDENCIES = libtests.a
 ppoll_SOURCES = ppoll.c
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_P_SOURCES = ppoll-P.c
+ppoll_P_OBJECTS = ppoll-P.$(OBJEXT)
+ppoll_P_LDADD = $(LDADD)
+ppoll_P_DEPENDENCIES = libtests.a
 ppoll_v_SOURCES = ppoll-v.c
 ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
 ppoll_v_LDADD = $(LDADD)
@@ -1700,6 +1755,10 @@
 restart_syscall_OBJECTS = restart_syscall.$(OBJEXT)
 restart_syscall_LDADD = $(LDADD)
 restart_syscall_DEPENDENCIES = libtests.a
+riscv_flush_icache_SOURCES = riscv_flush_icache.c
+riscv_flush_icache_OBJECTS = riscv_flush_icache.$(OBJEXT)
+riscv_flush_icache_LDADD = $(LDADD)
+riscv_flush_icache_DEPENDENCIES = libtests.a
 rmdir_SOURCES = rmdir.c
 rmdir_OBJECTS = rmdir.$(OBJEXT)
 rmdir_LDADD = $(LDADD)
@@ -1740,6 +1799,30 @@
 run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT)
 run_expect_termsig_LDADD = $(LDADD)
 run_expect_termsig_DEPENDENCIES = libtests.a
+s390_guarded_storage_SOURCES = s390_guarded_storage.c
+s390_guarded_storage_OBJECTS = s390_guarded_storage.$(OBJEXT)
+s390_guarded_storage_LDADD = $(LDADD)
+s390_guarded_storage_DEPENDENCIES = libtests.a
+s390_guarded_storage_v_SOURCES = s390_guarded_storage-v.c
+s390_guarded_storage_v_OBJECTS = s390_guarded_storage-v.$(OBJEXT)
+s390_guarded_storage_v_LDADD = $(LDADD)
+s390_guarded_storage_v_DEPENDENCIES = libtests.a
+s390_pci_mmio_read_write_SOURCES = s390_pci_mmio_read_write.c
+s390_pci_mmio_read_write_OBJECTS = s390_pci_mmio_read_write.$(OBJEXT)
+s390_pci_mmio_read_write_LDADD = $(LDADD)
+s390_pci_mmio_read_write_DEPENDENCIES = libtests.a
+s390_runtime_instr_SOURCES = s390_runtime_instr.c
+s390_runtime_instr_OBJECTS = s390_runtime_instr.$(OBJEXT)
+s390_runtime_instr_LDADD = $(LDADD)
+s390_runtime_instr_DEPENDENCIES = libtests.a
+s390_sthyi_SOURCES = s390_sthyi.c
+s390_sthyi_OBJECTS = s390_sthyi.$(OBJEXT)
+s390_sthyi_LDADD = $(LDADD)
+s390_sthyi_DEPENDENCIES = libtests.a
+s390_sthyi_v_SOURCES = s390_sthyi-v.c
+s390_sthyi_v_OBJECTS = s390_sthyi-v.$(OBJEXT)
+s390_sthyi_v_LDADD = $(LDADD)
+s390_sthyi_v_DEPENDENCIES = libtests.a
 sched_get_priority_mxx_SOURCES = sched_get_priority_mxx.c
 sched_get_priority_mxx_OBJECTS = sched_get_priority_mxx.$(OBJEXT)
 sched_get_priority_mxx_LDADD = $(LDADD)
@@ -1792,6 +1875,10 @@
 select_OBJECTS = select.$(OBJEXT)
 select_LDADD = $(LDADD)
 select_DEPENDENCIES = libtests.a
+select_P_SOURCES = select-P.c
+select_P_OBJECTS = select-P.$(OBJEXT)
+select_P_LDADD = $(LDADD)
+select_P_DEPENDENCIES = libtests.a
 semop_SOURCES = semop.c
 semop_OBJECTS = semop.$(OBJEXT)
 semop_LDADD = $(LDADD)
@@ -1976,6 +2063,10 @@
 socketcall_OBJECTS = socketcall.$(OBJEXT)
 socketcall_LDADD = $(LDADD)
 socketcall_DEPENDENCIES = libtests.a
+sockopt_sol_netlink_SOURCES = sockopt-sol_netlink.c
+sockopt_sol_netlink_OBJECTS = sockopt-sol_netlink.$(OBJEXT)
+sockopt_sol_netlink_LDADD = $(LDADD)
+sockopt_sol_netlink_DEPENDENCIES = libtests.a
 splice_SOURCES = splice.c
 splice_OBJECTS = splice.$(OBJEXT)
 splice_LDADD = $(LDADD)
@@ -1986,6 +2077,14 @@
 stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
 stack_fcall_LDADD = $(LDADD)
 stack_fcall_DEPENDENCIES = libtests.a
+am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
+	stack-fcall-mangled-0.$(OBJEXT) \
+	stack-fcall-mangled-1.$(OBJEXT) \
+	stack-fcall-mangled-2.$(OBJEXT) \
+	stack-fcall-mangled-3.$(OBJEXT)
+stack_fcall_mangled_OBJECTS = $(am_stack_fcall_mangled_OBJECTS)
+stack_fcall_mangled_LDADD = $(LDADD)
+stack_fcall_mangled_DEPENDENCIES = libtests.a
 stat_SOURCES = stat.c
 stat_OBJECTS = stat.$(OBJEXT)
 stat_LDADD = $(LDADD)
@@ -2213,6 +2312,10 @@
 xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
 xet_robust_list_LDADD = $(LDADD)
 xet_robust_list_DEPENDENCIES = libtests.a
+xet_thread_area_x86_SOURCES = xet_thread_area_x86.c
+xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT)
+xet_thread_area_x86_LDADD = $(LDADD)
+xet_thread_area_x86_DEPENDENCIES = libtests.a
 xetitimer_SOURCES = xetitimer.c
 xetitimer_OBJECTS = xetitimer.$(OBJEXT)
 xetitimer_LDADD = $(LDADD)
@@ -2265,9 +2368,9 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
-	access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
-	attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
+	accept4.c access.c acct.c add_key.c adjtimex.c aio.c alarm.c \
+	answer.c attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
 	attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
 	btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
 	chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
@@ -2291,9 +2394,9 @@
 	gettid.c getuid.c getuid32.c getxxid.c group_req.c inet-cmsg.c \
 	init_module.c inotify.c inotify_init1.c int_0x80.c ioctl.c \
 	ioctl_block.c ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c \
-	ioctl_evdev-v.c ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c \
-	ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c ioctl_rtc-v.c \
-	ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
+	ioctl_evdev-v.c ioctl_kvm_run.c ioctl_loop.c ioctl_loop-nv.c \
+	ioctl_loop-v.c ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c \
+	ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
 	ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
 	iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
 	ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
@@ -2303,13 +2406,13 @@
 	mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
 	mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
 	mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
-	mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
-	mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
-	msg_control-v.c msg_name.c munlockall.c nanosleep.c \
-	net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
-	net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
-	netlink_audit.c netlink_crypto.c netlink_generic.c \
-	netlink_inet_diag.c netlink_kobject_uevent.c \
+	mmsg_name-v.c modify_ldt.c mount.c move_pages.c mq.c \
+	mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+	msg_control.c msg_control-v.c msg_name.c munlockall.c \
+	nanosleep.c net-accept-connect.c net-icmp_filter.c \
+	net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+	net-yy-unix.c netlink_audit.c netlink_crypto.c \
+	netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \
 	netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
 	netlink_route.c netlink_selinux.c netlink_sock_diag.c \
 	netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
@@ -2328,13 +2431,16 @@
 	nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
 	nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
 	nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+	nsyscalls.c nsyscalls-d.c old_mmap.c old_mmap-P.c \
+	old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+	oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
 	oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
 	perf_event_open.c perf_event_open_nonverbose.c \
 	perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
-	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
-	ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
-	prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \
+	ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+	prctl-dumpable.c prctl-name.c prctl-no-args.c \
+	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
 	prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
 	prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
 	preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2348,28 +2454,32 @@
 	readdir.c readlink.c readlinkat.c readv.c reboot.c recvfrom.c \
 	recvmmsg-timeout.c recvmsg.c redirect-fds.c remap_file_pages.c \
 	rename.c renameat.c renameat2.c request_key.c \
-	restart_syscall.c rmdir.c rt_sigaction.c rt_sigpending.c \
-	rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-	run_expect_termsig.c sched_get_priority_mxx.c \
+	restart_syscall.c riscv_flush_icache.c rmdir.c rt_sigaction.c \
+	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.c run_expect_termsig.c \
+	s390_guarded_storage.c s390_guarded_storage-v.c \
+	s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+	s390_sthyi-v.c sched_get_priority_mxx.c \
 	sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
 	sched_xetparam.c sched_xetscheduler.c sched_yield.c \
 	scm_rights.c seccomp-filter.c seccomp-filter-v.c \
-	seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
-	sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-	set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-	setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-	setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-	setregid32.c setresgid.c setresgid32.c setresuid.c \
+	seccomp-strict.c seccomp_get_action_avail.c select.c \
+	select-P.c semop.c sendfile.c sendfile64.c set_mempolicy.c \
+	set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \
+	setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \
+	setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \
+	setregid.c setregid32.c setresgid.c setresgid32.c setresuid.c \
 	setresuid32.c setreuid.c setreuid32.c setrlimit.c setuid.c \
 	setuid32.c shmxt.c shutdown.c sigaction.c sigaltstack.c \
 	siginfo.c signal.c signal_receive.c signalfd4.c sigpending.c \
 	sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_linger.c \
-	so_peercred.c sock_filter-v.c socketcall.c splice.c \
-	$(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
-	statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
-	sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
-	threads-execve.c time.c timer_create.c timer_xettime.c \
+	so_peercred.c sock_filter-v.c socketcall.c \
+	sockopt-sol_netlink.c splice.c $(stack_fcall_SOURCES) \
+	$(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \
+	statfs64.c statx.c swap.c sxetmask.c symlink.c symlinkat.c \
+	sync.c sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+	tee.c threads-execve.c time.c timer_create.c timer_xettime.c \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
 	ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
 	umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
@@ -2378,16 +2488,17 @@
 	userfaultfd.c ustat.c utime.c utimensat.c utimes.c vfork-f.c \
 	vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
 	waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-	xetitimer.c xetpgid.c xetpriority.c xettimeofday.c zeroargc.c
-DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
-	access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
-	attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
-	attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
-	btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
-	chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
-	clock_nanosleep.c clock_xettime.c clone_parent.c \
-	clone_ptrace.c copy_file_range.c count-f.c creat.c \
-	delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+	xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
+	xettimeofday.c zeroargc.c
+DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
+	accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+	alarm.c answer.c attach-f-p.c attach-f-p-cmd.c \
+	attach-p-cmd-cmd.c attach-p-cmd-p.c block_reset_raise_run.c \
+	bpf.c bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c \
+	check_sigblock.c check_sigign.c chmod.c chown.c chown32.c \
+	chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
+	clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
+	creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
 	epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
 	erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
 	execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2405,9 +2516,9 @@
 	gettid.c getuid.c getuid32.c getxxid.c group_req.c inet-cmsg.c \
 	init_module.c inotify.c inotify_init1.c int_0x80.c ioctl.c \
 	ioctl_block.c ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c \
-	ioctl_evdev-v.c ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c \
-	ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c ioctl_rtc-v.c \
-	ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
+	ioctl_evdev-v.c ioctl_kvm_run.c ioctl_loop.c ioctl_loop-nv.c \
+	ioctl_loop-v.c ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c \
+	ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
 	ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
 	iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
 	ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
@@ -2417,13 +2528,13 @@
 	mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
 	mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
 	mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
-	mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
-	mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
-	msg_control-v.c msg_name.c munlockall.c nanosleep.c \
-	net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
-	net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
-	netlink_audit.c netlink_crypto.c netlink_generic.c \
-	netlink_inet_diag.c netlink_kobject_uevent.c \
+	mmsg_name-v.c modify_ldt.c mount.c move_pages.c mq.c \
+	mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+	msg_control.c msg_control-v.c msg_name.c munlockall.c \
+	nanosleep.c net-accept-connect.c net-icmp_filter.c \
+	net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+	net-yy-unix.c netlink_audit.c netlink_crypto.c \
+	netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \
 	netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
 	netlink_route.c netlink_selinux.c netlink_sock_diag.c \
 	netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
@@ -2442,13 +2553,16 @@
 	nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
 	nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
 	nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+	nsyscalls.c nsyscalls-d.c old_mmap.c old_mmap-P.c \
+	old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+	oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
 	oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
 	perf_event_open.c perf_event_open_nonverbose.c \
 	perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
-	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
-	ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
-	prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \
+	ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+	prctl-dumpable.c prctl-name.c prctl-no-args.c \
+	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
 	prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
 	prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
 	preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2462,28 +2576,32 @@
 	readdir.c readlink.c readlinkat.c readv.c reboot.c recvfrom.c \
 	recvmmsg-timeout.c recvmsg.c redirect-fds.c remap_file_pages.c \
 	rename.c renameat.c renameat2.c request_key.c \
-	restart_syscall.c rmdir.c rt_sigaction.c rt_sigpending.c \
-	rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-	run_expect_termsig.c sched_get_priority_mxx.c \
+	restart_syscall.c riscv_flush_icache.c rmdir.c rt_sigaction.c \
+	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.c run_expect_termsig.c \
+	s390_guarded_storage.c s390_guarded_storage-v.c \
+	s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+	s390_sthyi-v.c sched_get_priority_mxx.c \
 	sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
 	sched_xetparam.c sched_xetscheduler.c sched_yield.c \
 	scm_rights.c seccomp-filter.c seccomp-filter-v.c \
-	seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
-	sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-	set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-	setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-	setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-	setregid32.c setresgid.c setresgid32.c setresuid.c \
+	seccomp-strict.c seccomp_get_action_avail.c select.c \
+	select-P.c semop.c sendfile.c sendfile64.c set_mempolicy.c \
+	set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \
+	setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \
+	setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \
+	setregid.c setregid32.c setresgid.c setresgid32.c setresuid.c \
 	setresuid32.c setreuid.c setreuid32.c setrlimit.c setuid.c \
 	setuid32.c shmxt.c shutdown.c sigaction.c sigaltstack.c \
 	siginfo.c signal.c signal_receive.c signalfd4.c sigpending.c \
 	sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_linger.c \
-	so_peercred.c sock_filter-v.c socketcall.c splice.c \
-	$(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
-	statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
-	sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
-	threads-execve.c time.c timer_create.c timer_xettime.c \
+	so_peercred.c sock_filter-v.c socketcall.c \
+	sockopt-sol_netlink.c splice.c $(stack_fcall_SOURCES) \
+	$(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \
+	statfs64.c statx.c swap.c sxetmask.c symlink.c symlinkat.c \
+	sync.c sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+	tee.c threads-execve.c time.c timer_create.c timer_xettime.c \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
 	ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
 	umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
@@ -2492,7 +2610,8 @@
 	userfaultfd.c ustat.c utime.c utimensat.c utimes.c vfork-f.c \
 	vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
 	waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-	xetitimer.c xetpgid.c xetpriority.c xettimeofday.c zeroargc.c
+	xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
+	xettimeofday.c zeroargc.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -2705,7 +2824,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2793,10 +2912,13 @@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
 RANLIB = @RANLIB@
+READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
+SIZEOF_LONG = 4
 STRIP = @STRIP@
 VALGRIND = @VALGRIND@
 VALGRIND_ENABLED = @VALGRIND_ENABLED@
@@ -2817,6 +2939,7 @@
 arch = @arch@
 arch_m32 = @arch_m32@
 arch_mx32 = @arch_mx32@
+arch_native = @arch_native@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -2824,6 +2947,8 @@
 build_os = @build_os@
 build_vendor = @build_vendor@
 builddir = @builddir@
+cc_flags_m32 = @cc_flags_m32@
+cc_flags_mx32 = @cc_flags_mx32@
 datadir = @datadir@
 datarootdir = @datarootdir@
 dl_LIBS = @dl_LIBS@
@@ -2841,6 +2966,9 @@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
+libiberty_LDFLAGS = @libiberty_LDFLAGS@
+libiberty_LIBS = @libiberty_LIBS@
 libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
 libunwind_LDFLAGS = @libunwind_LDFLAGS@
 libunwind_LIBS = @libunwind_LIBS@
@@ -2865,8 +2993,10 @@
 valgrind_tools = @valgrind_tools@
 OS = linux
 ARCH = @arch_mx32@
+NATIVE_ARCH = @arch_native@
 MPERS_NAME = mx32
-ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) -mx32
+MPERS_CC_FLAGS = @cc_flags_mx32@
+ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
 	      -I$(builddir) \
@@ -3021,6 +3151,7 @@
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_kvm_run \
   ioctl_loop \
   ioctl_mtd \
   ioctl_rtc \
@@ -3071,6 +3202,7 @@
   mmap64 \
   mmsg \
   mmsg_name \
+  modify_ldt \
   mount \
   move_pages \
   mq \
@@ -3140,9 +3272,12 @@
   nlattr_tcmsg \
   nlattr_unix_diag_msg \
   old_mmap \
+  old_mmap-P \
+  old_mmap-v-none \
   oldfstat \
   oldlstat \
   oldselect \
+  oldselect-efault \
   oldstat \
   open \
   openat \
@@ -3156,7 +3291,9 @@
   pkey_free \
   pkey_mprotect \
   poll \
+  poll-P \
   ppoll \
+  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -3199,6 +3336,7 @@
   renameat \
   renameat2 \
   request_key \
+  riscv_flush_icache \
   rmdir \
   rt_sigaction \
   rt_sigpending \
@@ -3208,6 +3346,12 @@
   rt_sigsuspend \
   rt_sigtimedwait \
   rt_tgsigqueueinfo \
+  s390_guarded_storage \
+  s390_guarded_storage-v \
+  s390_pci_mmio_read_write \
+  s390_runtime_instr \
+  s390_sthyi \
+  s390_sthyi-v \
   sched_get_priority_mxx \
   sched_rr_get_interval \
   sched_xetaffinity \
@@ -3259,6 +3403,7 @@
   so_peercred \
   sock_filter-v \
   socketcall \
+  sockopt-sol_netlink \
   splice \
   stat \
   stat64 \
@@ -3310,6 +3455,7 @@
   xattr \
   xattr-strings \
   xet_robust_list \
+  xet_thread_area_x86 \
   xetitimer \
   xetpgid \
   xetpriority \
@@ -3344,13 +3490,17 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
+	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
+	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
+
 
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
-	access.gen.test acct.gen.test add_key.gen.test \
-	adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test \
-	bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test \
-	chown32.gen.test chroot.gen.test clock.gen.test \
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
+	accept4.gen.test access.gen.test acct.gen.test \
+	add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test \
+	bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test \
+	chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test \
 	clock_adjtime.gen.test clock_nanosleep.gen.test \
 	clock_xettime.gen.test copy_file_range.gen.test creat.gen.test \
 	delete_module.gen.test dup.gen.test dup2.gen.test \
@@ -3378,46 +3528,49 @@
 	gettid.gen.test getuid32.gen.test getxxid.gen.test \
 	group_req.gen.test inet-cmsg.gen.test init_module.gen.test \
 	inotify.gen.test inotify_init1.gen.test int_0x80.gen.test \
-	ioctl_block.gen.test ioctl_evdev.gen.test \
-	ioctl_evdev-v.gen.test ioctl_loop.gen.test \
-	ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test \
+	ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test \
+	ioctl_evdev.gen.test ioctl_evdev-v.gen.test \
+	ioctl_kvm_run.gen.test ioctl_loop.gen.test \
+	ioctl_loop-nv.gen.test ioctl_loop-v.gen.test \
+	ioctl_mtd.gen.test ioctl_nsfs.gen.test ioctl_rtc.gen.test \
 	ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
 	ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
-	ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
-	iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
-	ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
-	kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \
-	kexec_load.gen.test keyctl.gen.test kill.gen.test \
-	lchown.gen.test lchown32.gen.test link.gen.test \
-	linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
-	lstat64.gen.test madvise.gen.test mbind.gen.test \
-	membarrier.gen.test memfd_create.gen.test \
-	migrate_pages.gen.test mincore.gen.test mkdir.gen.test \
-	mkdirat.gen.test mknod.gen.test mknodat.gen.test \
-	mlock.gen.test mlock2.gen.test mlockall.gen.test \
-	mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \
-	mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \
-	move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \
-	mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \
-	msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \
-	munlockall.gen.test nanosleep.gen.test \
-	net-icmp_filter.gen.test net-sockaddr.gen.test \
-	netlink_audit.gen.test netlink_crypto.gen.test \
-	netlink_generic.gen.test netlink_kobject_uevent.gen.test \
-	netlink_netfilter.gen.test netlink_protocol.gen.test \
-	netlink_route.gen.test netlink_selinux.gen.test \
-	netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \
-	nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \
-	nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \
-	nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \
-	nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \
-	nfnetlink_osf.gen.test nfnetlink_queue.gen.test \
-	nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \
-	nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \
-	nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \
-	nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
-	nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \
-	nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
+	ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test \
+	ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test \
+	ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test \
+	ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test \
+	kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test \
+	keyctl.gen.test kill.gen.test lchown.gen.test \
+	lchown32.gen.test link.gen.test linkat.gen.test \
+	lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
+	madvise.gen.test mbind.gen.test membarrier.gen.test \
+	memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
+	mkdir.gen.test mkdirat.gen.test mknod.gen.test \
+	mknodat.gen.test mlock.gen.test mlock2.gen.test \
+	mlockall.gen.test mmap64.gen.test mmsg.gen.test \
+	mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
+	modify_ldt.gen.test mount.gen.test move_pages.gen.test \
+	mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+	mq_sendrecv-write.gen.test msg_control.gen.test \
+	msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
+	nanosleep.gen.test net-icmp_filter.gen.test \
+	net-sockaddr.gen.test netlink_audit.gen.test \
+	netlink_crypto.gen.test netlink_generic.gen.test \
+	netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \
+	netlink_protocol.gen.test netlink_route.gen.test \
+	netlink_selinux.gen.test netlink_xfrm.gen.test \
+	newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test \
+	nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test \
+	nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test \
+	nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test \
+	nfnetlink_nftables.gen.test nfnetlink_osf.gen.test \
+	nfnetlink_queue.gen.test nfnetlink_ulog.gen.test \
+	nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \
+	nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \
+	nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \
+	nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \
+	nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \
+	nlattr_inet_diag_msg.gen.test \
 	nlattr_inet_diag_req_compat.gen.test \
 	nlattr_inet_diag_req_v2.gen.test \
 	nlattr_mdba_mdb_entry.gen.test \
@@ -3429,16 +3582,18 @@
 	nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \
 	nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \
 	nlattr_unix_diag_msg.gen.test old_mmap.gen.test \
-	oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \
-	open.gen.test openat.gen.test osf_utimes.gen.test \
-	pause.gen.test perf_event_open.gen.test \
+	old_mmap-P.gen.test old_mmap-v-none.gen.test oldfstat.gen.test \
+	oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test \
+	oldselect-efault.gen.test oldselect-efault-P.gen.test \
+	oldstat.gen.test open.gen.test openat.gen.test \
+	osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \
 	perf_event_open_nonverbose.gen.test \
 	perf_event_open_unabbrev.gen.test pipe2.gen.test \
 	pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
-	ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
-	preadv.gen.test preadv-pwritev.gen.test \
-	preadv2-pwritev2.gen.test printstr.gen.test \
-	printpath-umovestr.gen.test \
+	ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \
+	pread64-pwrite64.gen.test preadv.gen.test \
+	preadv-pwritev.gen.test preadv2-pwritev2.gen.test \
+	printstr.gen.test printpath-umovestr.gen.test \
 	printpath-umovestr-peekdata.gen.test \
 	printpath-umovestr-undumpable.gen.test \
 	printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test \
@@ -3451,44 +3606,48 @@
 	reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test \
 	recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
 	rename.gen.test renameat.gen.test renameat2.gen.test \
-	request_key.gen.test rmdir.gen.test rt_sigpending.gen.test \
-	rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test \
-	rt_sigreturn.gen.test rt_sigsuspend.gen.test \
-	rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
-	sched.gen.test sched_get_priority_mxx.gen.test \
-	sched_rr_get_interval.gen.test sched_xetaffinity.gen.test \
-	sched_xetattr.gen.test sched_xetparam.gen.test \
-	sched_xetscheduler.gen.test sched_yield.gen.test \
-	seccomp-filter.gen.test seccomp-filter-v.gen.test \
-	seccomp_get_action_avail.gen.test select.gen.test \
-	semop.gen.test sendfile.gen.test sendfile64.gen.test \
-	set_mempolicy.gen.test setdomainname.gen.test \
-	setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \
-	setfsuid32.gen.test setgid.gen.test setgid32.gen.test \
-	setgroups.gen.test setgroups32.gen.test sethostname.gen.test \
-	setns.gen.test setregid.gen.test setregid32.gen.test \
-	setresgid.gen.test setresgid32.gen.test setresuid.gen.test \
-	setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \
-	setrlimit.gen.test setuid.gen.test setuid32.gen.test \
-	shmxt.gen.test shutdown.gen.test sigaction.gen.test \
-	siginfo.gen.test signal.gen.test signal_receive.gen.test \
-	signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \
-	sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \
-	so_peercred.gen.test sock_filter-v.gen.test \
-	socketcall.gen.test splice.gen.test stat.gen.test \
-	stat64.gen.test statfs.gen.test statfs64.gen.test \
-	statx.gen.test swap.gen.test sxetmask.gen.test \
-	symlink.gen.test symlinkat.gen.test sync.gen.test \
-	sync_file_range.gen.test sync_file_range2.gen.test \
-	sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test \
-	timer_create.gen.test timer_xettime.gen.test \
-	timerfd_xettime.gen.test times.gen.test times-fail.gen.test \
-	trace_fstat.gen.test trace_fstatfs.gen.test \
-	trace_lstat.gen.test trace_question.gen.test \
-	trace_stat.gen.test trace_stat_like.gen.test \
-	trace_statfs.gen.test trace_statfs_like.gen.test \
-	truncate.gen.test truncate64.gen.test ugetrlimit.gen.test \
-	umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test \
+	request_key.gen.test riscv_flush_icache.gen.test \
+	rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test \
+	rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \
+	rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \
+	rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \
+	s390_guarded_storage-v.gen.test \
+	s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \
+	s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \
+	sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \
+	sched_xetaffinity.gen.test sched_xetattr.gen.test \
+	sched_xetparam.gen.test sched_xetscheduler.gen.test \
+	sched_yield.gen.test seccomp-filter.gen.test \
+	seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \
+	select.gen.test select-P.gen.test semop.gen.test \
+	sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test \
+	setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
+	setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
+	setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
+	sethostname.gen.test setns.gen.test setregid.gen.test \
+	setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
+	setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
+	setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
+	setuid32.gen.test shmxt.gen.test shutdown.gen.test \
+	sigaction.gen.test siginfo.gen.test signal.gen.test \
+	signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \
+	sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \
+	so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \
+	socketcall.gen.test sockopt-sol_netlink.gen.test \
+	splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \
+	statfs64.gen.test statx.gen.test swap.gen.test \
+	sxetmask.gen.test symlink.gen.test symlinkat.gen.test \
+	sync.gen.test sync_file_range.gen.test \
+	sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test \
+	tee.gen.test time.gen.test timer_create.gen.test \
+	timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test \
+	times-fail.gen.test trace_fstat.gen.test \
+	trace_fstatfs.gen.test trace_lstat.gen.test \
+	trace_question.gen.test trace_stat.gen.test \
+	trace_stat_like.gen.test trace_statfs.gen.test \
+	trace_statfs_like.gen.test truncate.gen.test \
+	truncate64.gen.test ugetrlimit.gen.test umask.gen.test \
+	umoven-illptr.gen.test umovestr-illptr.gen.test \
 	umovestr3.gen.test unlink.gen.test unlinkat.gen.test \
 	unshare.gen.test userfaultfd.gen.test ustat.gen.test \
 	utime.gen.test utimensat.gen.test utimes.gen.test \
@@ -3499,7 +3658,7 @@
 	xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \
 	xettimeofday.gen.test
 @USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS = 
-@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
+@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test $(am__append_1)
 DECODER_TESTS = \
 	brk.test \
 	btrfs-v.test \
@@ -3514,11 +3673,6 @@
 	futex.test \
 	getuid.test \
 	ioctl.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_loop-nv.test \
-	ioctl_nsfs.test \
-	ioctl_sock_gifconf.test \
 	ipc_msgbuf.test \
 	llseek.test \
 	lseek.test \
@@ -3530,9 +3684,11 @@
 	net.test \
 	netlink_sock_diag.test \
 	nsyscalls.test \
-	oldselect.test \
+	nsyscalls-d.test \
+	nsyscalls-nd.test \
 	personality.test \
 	pipe.test \
+	poll-P.test \
 	poll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
@@ -3551,6 +3707,7 @@
 	seccomp-strict.test \
 	sigaltstack.test \
 	sun_path.test \
+	xet_thread_area_x86.test \
 	uio.test \
 	umount.test \
 	umount2.test \
@@ -3573,6 +3730,8 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
+	filtering_fd-syntax.test \
+	filtering_syscall-syntax.test \
 	fflush.test \
 	get_regs.test \
 	interactive_block.test \
@@ -3616,10 +3775,16 @@
 XFAIL_TESTS_x32 = int_0x80.gen.test
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) STRACE_NATIVE_ARCH=$(NATIVE_ARCH) \
+			SIZEOF_KERNEL_LONG_T=$(SIZEOF_KERNEL_LONG_T) \
+			SIZEOF_LONG=$(SIZEOF_LONG) \
+			MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/strace.supp
 EXTRA_DIST = \
+	accept_compat.h \
+	attach-p-cmd.h \
 	caps-abbrev.awk \
 	caps.awk \
 	clock.in \
@@ -3635,7 +3800,6 @@
 	getresugid.c \
 	init.sh \
 	init_delete_module.h \
-	ioctl-v.sh \
 	ipc.sh \
 	ipc_msgbuf.expected \
 	ksysent.sed \
@@ -3643,8 +3807,8 @@
 	match.awk \
 	net.expected \
 	netlink_sock_diag-v.sh \
-	oldselect.expected \
 	pipe.expected \
+	print_user_desc.c \
 	process_vm_readv_writev.c \
 	pure_executables.list \
 	qual_fault-exit_group.expected \
@@ -3662,10 +3826,12 @@
 	setugid.c \
 	sigaltstack.expected \
 	sockname.c \
+	stack-fcall.h \
 	strace-C.expected \
 	strace-E.expected \
 	strace-T.expected \
 	strace-ff.expected \
+	strace-k-demangle.test \
 	strace-k.test \
 	strace-r.expected \
 	strace.supp \
@@ -3756,6 +3922,10 @@
 	@rm -f _newselect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(_newselect_OBJECTS) $(_newselect_LDADD) $(LIBS)
 
+_newselect-P$(EXEEXT): $(_newselect_P_OBJECTS) $(_newselect_P_DEPENDENCIES) $(EXTRA__newselect_P_DEPENDENCIES) 
+	@rm -f _newselect-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(_newselect_P_OBJECTS) $(_newselect_P_LDADD) $(LIBS)
+
 accept$(EXEEXT): $(accept_OBJECTS) $(accept_DEPENDENCIES) $(EXTRA_accept_DEPENDENCIES) 
 	@rm -f accept$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(accept_OBJECTS) $(accept_LDADD) $(LIBS)
@@ -4248,6 +4418,10 @@
 	@rm -f ioctl_evdev-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
 
+ioctl_kvm_run$(EXEEXT): $(ioctl_kvm_run_OBJECTS) $(ioctl_kvm_run_DEPENDENCIES) $(EXTRA_ioctl_kvm_run_DEPENDENCIES) 
+	@rm -f ioctl_kvm_run$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_kvm_run_OBJECTS) $(ioctl_kvm_run_LDADD) $(LIBS)
+
 ioctl_loop$(EXEEXT): $(ioctl_loop_OBJECTS) $(ioctl_loop_DEPENDENCIES) $(EXTRA_ioctl_loop_DEPENDENCIES) 
 	@rm -f ioctl_loop$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_loop_OBJECTS) $(ioctl_loop_LDADD) $(LIBS)
@@ -4484,6 +4658,10 @@
 	@rm -f mmsg_name-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mmsg_name_v_OBJECTS) $(mmsg_name_v_LDADD) $(LIBS)
 
+modify_ldt$(EXEEXT): $(modify_ldt_OBJECTS) $(modify_ldt_DEPENDENCIES) $(EXTRA_modify_ldt_DEPENDENCIES) 
+	@rm -f modify_ldt$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(modify_ldt_OBJECTS) $(modify_ldt_LDADD) $(LIBS)
+
 mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) $(EXTRA_mount_DEPENDENCIES) 
 	@rm -f mount$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mount_OBJECTS) $(mount_LDADD) $(LIBS)
@@ -4780,10 +4958,22 @@
 	@rm -f nsyscalls$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(nsyscalls_OBJECTS) $(nsyscalls_LDADD) $(LIBS)
 
+nsyscalls-d$(EXEEXT): $(nsyscalls_d_OBJECTS) $(nsyscalls_d_DEPENDENCIES) $(EXTRA_nsyscalls_d_DEPENDENCIES) 
+	@rm -f nsyscalls-d$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(nsyscalls_d_OBJECTS) $(nsyscalls_d_LDADD) $(LIBS)
+
 old_mmap$(EXEEXT): $(old_mmap_OBJECTS) $(old_mmap_DEPENDENCIES) $(EXTRA_old_mmap_DEPENDENCIES) 
 	@rm -f old_mmap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(old_mmap_OBJECTS) $(old_mmap_LDADD) $(LIBS)
 
+old_mmap-P$(EXEEXT): $(old_mmap_P_OBJECTS) $(old_mmap_P_DEPENDENCIES) $(EXTRA_old_mmap_P_DEPENDENCIES) 
+	@rm -f old_mmap-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(old_mmap_P_OBJECTS) $(old_mmap_P_LDADD) $(LIBS)
+
+old_mmap-v-none$(EXEEXT): $(old_mmap_v_none_OBJECTS) $(old_mmap_v_none_DEPENDENCIES) $(EXTRA_old_mmap_v_none_DEPENDENCIES) 
+	@rm -f old_mmap-v-none$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(old_mmap_v_none_OBJECTS) $(old_mmap_v_none_LDADD) $(LIBS)
+
 oldfstat$(EXEEXT): $(oldfstat_OBJECTS) $(oldfstat_DEPENDENCIES) $(EXTRA_oldfstat_DEPENDENCIES) 
 	@rm -f oldfstat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldfstat_OBJECTS) $(oldfstat_LDADD) $(LIBS)
@@ -4796,6 +4986,18 @@
 	@rm -f oldselect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldselect_OBJECTS) $(oldselect_LDADD) $(LIBS)
 
+oldselect-P$(EXEEXT): $(oldselect_P_OBJECTS) $(oldselect_P_DEPENDENCIES) $(EXTRA_oldselect_P_DEPENDENCIES) 
+	@rm -f oldselect-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_P_OBJECTS) $(oldselect_P_LDADD) $(LIBS)
+
+oldselect-efault$(EXEEXT): $(oldselect_efault_OBJECTS) $(oldselect_efault_DEPENDENCIES) $(EXTRA_oldselect_efault_DEPENDENCIES) 
+	@rm -f oldselect-efault$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_efault_OBJECTS) $(oldselect_efault_LDADD) $(LIBS)
+
+oldselect-efault-P$(EXEEXT): $(oldselect_efault_P_OBJECTS) $(oldselect_efault_P_DEPENDENCIES) $(EXTRA_oldselect_efault_P_DEPENDENCIES) 
+	@rm -f oldselect-efault-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_efault_P_OBJECTS) $(oldselect_efault_P_LDADD) $(LIBS)
+
 oldstat$(EXEEXT): $(oldstat_OBJECTS) $(oldstat_DEPENDENCIES) $(EXTRA_oldstat_DEPENDENCIES) 
 	@rm -f oldstat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldstat_OBJECTS) $(oldstat_LDADD) $(LIBS)
@@ -4860,10 +5062,18 @@
 	@rm -f poll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(poll_OBJECTS) $(poll_LDADD) $(LIBS)
 
+poll-P$(EXEEXT): $(poll_P_OBJECTS) $(poll_P_DEPENDENCIES) $(EXTRA_poll_P_DEPENDENCIES) 
+	@rm -f poll-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(poll_P_OBJECTS) $(poll_P_LDADD) $(LIBS)
+
 ppoll$(EXEEXT): $(ppoll_OBJECTS) $(ppoll_DEPENDENCIES) $(EXTRA_ppoll_DEPENDENCIES) 
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
 
+ppoll-P$(EXEEXT): $(ppoll_P_OBJECTS) $(ppoll_P_DEPENDENCIES) $(EXTRA_ppoll_P_DEPENDENCIES) 
+	@rm -f ppoll-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ppoll_P_OBJECTS) $(ppoll_P_LDADD) $(LIBS)
+
 ppoll-v$(EXEEXT): $(ppoll_v_OBJECTS) $(ppoll_v_DEPENDENCIES) $(EXTRA_ppoll_v_DEPENDENCIES) 
 	@rm -f ppoll-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_v_OBJECTS) $(ppoll_v_LDADD) $(LIBS)
@@ -5084,6 +5294,10 @@
 	@rm -f restart_syscall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(restart_syscall_OBJECTS) $(restart_syscall_LDADD) $(LIBS)
 
+riscv_flush_icache$(EXEEXT): $(riscv_flush_icache_OBJECTS) $(riscv_flush_icache_DEPENDENCIES) $(EXTRA_riscv_flush_icache_DEPENDENCIES) 
+	@rm -f riscv_flush_icache$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(riscv_flush_icache_OBJECTS) $(riscv_flush_icache_LDADD) $(LIBS)
+
 rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES) $(EXTRA_rmdir_DEPENDENCIES) 
 	@rm -f rmdir$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS)
@@ -5124,6 +5338,30 @@
 	@rm -f run_expect_termsig$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS)
 
+s390_guarded_storage$(EXEEXT): $(s390_guarded_storage_OBJECTS) $(s390_guarded_storage_DEPENDENCIES) $(EXTRA_s390_guarded_storage_DEPENDENCIES) 
+	@rm -f s390_guarded_storage$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_guarded_storage_OBJECTS) $(s390_guarded_storage_LDADD) $(LIBS)
+
+s390_guarded_storage-v$(EXEEXT): $(s390_guarded_storage_v_OBJECTS) $(s390_guarded_storage_v_DEPENDENCIES) $(EXTRA_s390_guarded_storage_v_DEPENDENCIES) 
+	@rm -f s390_guarded_storage-v$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_guarded_storage_v_OBJECTS) $(s390_guarded_storage_v_LDADD) $(LIBS)
+
+s390_pci_mmio_read_write$(EXEEXT): $(s390_pci_mmio_read_write_OBJECTS) $(s390_pci_mmio_read_write_DEPENDENCIES) $(EXTRA_s390_pci_mmio_read_write_DEPENDENCIES) 
+	@rm -f s390_pci_mmio_read_write$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_pci_mmio_read_write_OBJECTS) $(s390_pci_mmio_read_write_LDADD) $(LIBS)
+
+s390_runtime_instr$(EXEEXT): $(s390_runtime_instr_OBJECTS) $(s390_runtime_instr_DEPENDENCIES) $(EXTRA_s390_runtime_instr_DEPENDENCIES) 
+	@rm -f s390_runtime_instr$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_runtime_instr_OBJECTS) $(s390_runtime_instr_LDADD) $(LIBS)
+
+s390_sthyi$(EXEEXT): $(s390_sthyi_OBJECTS) $(s390_sthyi_DEPENDENCIES) $(EXTRA_s390_sthyi_DEPENDENCIES) 
+	@rm -f s390_sthyi$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_sthyi_OBJECTS) $(s390_sthyi_LDADD) $(LIBS)
+
+s390_sthyi-v$(EXEEXT): $(s390_sthyi_v_OBJECTS) $(s390_sthyi_v_DEPENDENCIES) $(EXTRA_s390_sthyi_v_DEPENDENCIES) 
+	@rm -f s390_sthyi-v$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_sthyi_v_OBJECTS) $(s390_sthyi_v_LDADD) $(LIBS)
+
 sched_get_priority_mxx$(EXEEXT): $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_DEPENDENCIES) $(EXTRA_sched_get_priority_mxx_DEPENDENCIES) 
 	@rm -f sched_get_priority_mxx$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_LDADD) $(LIBS)
@@ -5176,6 +5414,10 @@
 	@rm -f select$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
 
+select-P$(EXEEXT): $(select_P_OBJECTS) $(select_P_DEPENDENCIES) $(EXTRA_select_P_DEPENDENCIES) 
+	@rm -f select-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(select_P_OBJECTS) $(select_P_LDADD) $(LIBS)
+
 semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIES) 
 	@rm -f semop$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
@@ -5360,6 +5602,10 @@
 	@rm -f socketcall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(socketcall_OBJECTS) $(socketcall_LDADD) $(LIBS)
 
+sockopt-sol_netlink$(EXEEXT): $(sockopt_sol_netlink_OBJECTS) $(sockopt_sol_netlink_DEPENDENCIES) $(EXTRA_sockopt_sol_netlink_DEPENDENCIES) 
+	@rm -f sockopt-sol_netlink$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sockopt_sol_netlink_OBJECTS) $(sockopt_sol_netlink_LDADD) $(LIBS)
+
 splice$(EXEEXT): $(splice_OBJECTS) $(splice_DEPENDENCIES) $(EXTRA_splice_DEPENDENCIES) 
 	@rm -f splice$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(splice_OBJECTS) $(splice_LDADD) $(LIBS)
@@ -5368,6 +5614,10 @@
 	@rm -f stack-fcall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
 
+stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
+	@rm -f stack-fcall-mangled$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
+
 stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES) 
 	@rm -f stat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS)
@@ -5596,6 +5846,10 @@
 	@rm -f xet_robust_list$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
 
+xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) 
+	@rm -f xet_thread_area_x86$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS)
+
 xetitimer$(EXEEXT): $(xetitimer_OBJECTS) $(xetitimer_DEPENDENCIES) $(EXTRA_xetitimer_DEPENDENCIES) 
 	@rm -f xetitimer$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(xetitimer_OBJECTS) $(xetitimer_LDADD) $(LIBS)
@@ -5622,6 +5876,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@
@@ -5746,6 +6001,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-nv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop.Po@am__quote@
@@ -5831,6 +6087,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modify_ldt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq.Po@am__quote@
@@ -5904,10 +6161,16 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls-d.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap-v-none.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldfstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldlstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
@@ -5924,7 +6187,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_free.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_mprotect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-arg2-intptr.Po@am__quote@
@@ -5981,6 +6246,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renameat2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/request_key.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/restart_syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/riscv_flush_icache.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
@@ -5991,6 +6257,12 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_pci_mmio_read_write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_runtime_instr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@
@@ -6003,6 +6275,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
@@ -6050,11 +6323,17 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sock_filter-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockopt-sol_netlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-0.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
@@ -6113,6 +6392,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@
@@ -7094,6 +7374,9 @@
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/_newselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7385,21 +7668,36 @@
 $(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_dm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_kvm_run.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_loop-nv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7415,6 +7713,9 @@
 $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7538,6 +7839,9 @@
 $(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/modify_ldt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7733,12 +8037,30 @@
 $(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/old_mmap-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap-v-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/oldselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7778,6 +8100,9 @@
 $(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ppoll-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7889,6 +8214,9 @@
 $(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/riscv_flush_icache.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7913,6 +8241,24 @@
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_guarded_storage-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_pci_mmio_read_write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_runtime_instr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7949,6 +8295,9 @@
 $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -8072,6 +8421,9 @@
 $(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/sockopt-sol_netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
diff --git a/tests-mx32/_newselect-P.c b/tests-mx32/_newselect-P.c
new file mode 100644
index 0000000..561fbfe
--- /dev/null
+++ b/tests-mx32/_newselect-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "_newselect.c"
diff --git a/tests-mx32/_newselect-P.gen.test b/tests-mx32/_newselect-P.gen.test
new file mode 100755
index 0000000..9c4247a
--- /dev/null
+++ b/tests-mx32/_newselect-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect-P -e trace=_newselect -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=_newselect -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/_newselect.gen.test b/tests-mx32/_newselect.gen.test
index 490abe4..8e4d5f2 100755
--- a/tests-mx32/_newselect.gen.test
+++ b/tests-mx32/_newselect.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/accept.c b/tests-mx32/accept.c
index 8d42ba1..40b45db 100644
--- a/tests-mx32/accept.c
+++ b/tests-mx32/accept.c
@@ -2,6 +2,7 @@
  * Check decoding of accept syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,9 +28,34 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef TEST_SYSCALL_NAME
-# define TEST_SYSCALL_NAME accept
-#endif
+#include "tests.h"
+
+#include <unistd.h>
+
+#include <asm/unistd.h>
+
+#if defined __NR_accept
+
+# ifndef TEST_SYSCALL_NAME
+#  define TEST_SYSCALL_NAME do_accept
+
+#  ifndef TEST_SYSCALL_STR
+#   define TEST_SYSCALL_STR "accept"
+#  endif
+
+int do_accept(int sockfd, void *addr, void *addrlen)
+{
+	return syscall(__NR_accept, sockfd, addr, addrlen);
+}
+# endif /* !TEST_SYSCALL_NAME */
+
+#else /* !__NR_accept */
+
+# ifndef TEST_SYSCALL_NAME
+#  define TEST_SYSCALL_NAME accept
+# endif
+
+#endif /* __NR_accept */
 
 #define TEST_SYSCALL_PREPARE connect_un()
 static void connect_un(void);
diff --git a/tests-mx32/accept.gen.test b/tests-mx32/accept.gen.test
index 3ebba3b..45d9239 100755
--- a/tests-mx32/accept.gen.test
+++ b/tests-mx32/accept.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-mx32/accept4.gen.test b/tests-mx32/accept4.gen.test
index 5bd7fe6..7119970 100755
--- a/tests-mx32/accept4.gen.test
+++ b/tests-mx32/accept4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests-mx32/accept_compat.h b/tests-mx32/accept_compat.h
new file mode 100644
index 0000000..c45b255
--- /dev/null
+++ b/tests-mx32/accept_compat.h
@@ -0,0 +1,25 @@
+#ifndef _STRACE_TESTS_ACCEPT_COMPAT_H_
+#define _STRACE_TESTS_ACCEPT_COMPAT_H_
+
+#include <unistd.h>
+#include <sys/socket.h>
+#include <asm/unistd.h>
+
+#if defined __NR_socketcall && defined __sparc__
+/*
+ * Work around the fact that
+ * - glibc >= 2.26 uses accept4 syscall to implement accept() call on sparc;
+ * - accept syscall had not been wired up on sparc until v4.4-rc8~4^2~1.
+ */
+static inline int
+do_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
+{
+	const long args[] = { sockfd, (long) addr, (long) addrlen };
+
+	return syscall(__NR_socketcall, 5, args);
+}
+#else
+# define do_accept accept
+#endif
+
+#endif /* !_STRACE_TESTS_ACCEPT_COMPAT_H_ */
diff --git a/tests-mx32/acct.gen.test b/tests-mx32/acct.gen.test
index fa14e85..4a98dd4 100755
--- a/tests-mx32/acct.gen.test
+++ b/tests-mx32/acct.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/adjtimex.gen.test b/tests-mx32/adjtimex.gen.test
index 8db59f2..e602443 100755
--- a/tests-mx32/adjtimex.gen.test
+++ b/tests-mx32/adjtimex.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-mx32/alarm.gen.test b/tests-mx32/alarm.gen.test
index ba1dea8..25982e1 100755
--- a/tests-mx32/alarm.gen.test
+++ b/tests-mx32/alarm.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/attach-p-cmd-cmd.c b/tests-mx32/attach-p-cmd-cmd.c
index d0f824e..70e3a2d 100644
--- a/tests-mx32/attach-p-cmd-cmd.c
+++ b/tests-mx32/attach-p-cmd-cmd.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of attach-p-cmd strace test.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,19 +32,41 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include "attach-p-cmd.h"
 
-int
-main(void)
+static void
+write_pidfile(const pid_t pid)
 {
-	static const char lockdir[] = "attach-p-cmd.test-lock";
+	FILE *fp = fopen(pidfile, "w");
+	if (!fp)
+		perror_msg_and_fail("fopen: %s", pidfile);
+
+	if (fprintf(fp, "%d", pid) < 0)
+		perror_msg_and_fail("fprintf: %s", pidfile);
+
+	if (fclose(fp))
+		perror_msg_and_fail("fclose: %s", pidfile);
+}
+
+static void
+wait_for_peer_invocation(void)
+{
 	/* wait for the lock directory to be created by peer */
 	while (rmdir(lockdir)) {
 		if (ENOENT != errno)
 			perror_msg_and_fail("rmdir: %s", lockdir);
 	}
+}
+
+int
+main(void)
+{
+	const pid_t pid = getpid();
+	write_pidfile(pid);
+
+	wait_for_peer_invocation();
 
 	static const char dir[] = "attach-p-cmd.test cmd";
-	pid_t pid = getpid();
 	int rc = chdir(dir);
 
 	printf("%-5d chdir(\"%s\") = %s\n"
diff --git a/tests-mx32/attach-p-cmd-p.c b/tests-mx32/attach-p-cmd-p.c
index 254d19a..843db95 100644
--- a/tests-mx32/attach-p-cmd-p.c
+++ b/tests-mx32/attach-p-cmd-p.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of attach-p-cmd strace test.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,27 +33,14 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
+#include <time.h>
 #include <unistd.h>
+#include "attach-p-cmd.h"
 
 static void
-handler(int signo)
+wait_for_peer_invocation(void)
 {
-}
-
-int
-main(void)
-{
-	const struct sigaction act = { .sa_handler = handler };
-	if (sigaction(SIGALRM, &act, NULL))
-		perror_msg_and_fail("sigaction");
-
-	sigset_t mask = {};
-	sigaddset(&mask, SIGALRM);
-	if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
-		perror_msg_and_fail("sigprocmask");
-
-	static const char lockdir[] = "attach-p-cmd.test-lock";
-	/* create a lock directory */
+	/* create the lock directory */
 	if (mkdir(lockdir, 0700))
 		perror_msg_and_fail("mkdir: %s", lockdir);
 
@@ -63,21 +50,51 @@
 			perror_msg_and_fail("mkdir: %s", lockdir);
 	}
 
-	/* remove the lock directory */
+	/* cleanup the lock directory */
 	if (rmdir(lockdir))
 		perror_msg_and_fail("rmdir: %s", lockdir);
+}
 
-	alarm(1);
-	pause();
+static void
+wait_for_peer_termination(void)
+{
+	FILE *fp = fopen(pidfile, "r");
+	if (!fp)
+		perror_msg_and_fail("fopen: %s", pidfile);
+
+	pid_t pid;
+	if (fscanf(fp, "%d", &pid) < 0)
+		perror_msg_and_fail("fscanf: %s", pidfile);
+	if (pid < 0)
+		error_msg_and_fail("pid = %d", pid);
+
+	if (fclose(fp))
+		perror_msg_and_fail("fclose: %s", pidfile);
+
+	if (unlink(pidfile))
+		perror_msg_and_fail("unlink: %s", pidfile);
+
+	while (kill(pid, 0) == 0)
+		;
+}
+
+int
+main(void)
+{
+	wait_for_peer_invocation();
+	wait_for_peer_termination();
+
+	static const struct timespec ts = { .tv_nsec = 123456789 };
+	if (nanosleep(&ts, NULL))
+		perror_msg_and_fail("nanosleep");
 
 	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"
+	printf("%-5d chdir(\"%s\") = %s\n"
 	       "%-5d +++ exited with 0 +++\n",
-	       pid, pid, dir, rc, errno2name(), pid);
+	       pid, dir, sprintrc(rc), pid);
 
 	return 0;
 }
diff --git a/tests-mx32/attach-p-cmd.h b/tests-mx32/attach-p-cmd.h
new file mode 100644
index 0000000..e04af38
--- /dev/null
+++ b/tests-mx32/attach-p-cmd.h
@@ -0,0 +1,2 @@
+static const char lockdir[] = "attach-p-cmd.test-lock";
+static const char pidfile[] = "attach-p-cmd.test-pid";
diff --git a/tests-mx32/bpf.c b/tests-mx32/bpf.c
index bec30f8..3f963fa 100644
--- a/tests-mx32/bpf.c
+++ b/tests-mx32/bpf.c
@@ -34,8 +34,11 @@
  && (defined HAVE_UNION_BPF_ATTR_ATTACH_FLAGS	\
   || defined HAVE_UNION_BPF_ATTR_BPF_FD		\
   || defined HAVE_UNION_BPF_ATTR_FLAGS		\
-  || defined HAVE_UNION_BPF_ATTR_INNER_MAP_FD	\
-  || defined HAVE_UNION_BPF_ATTR_PROG_FLAGS)
+  || defined HAVE_UNION_BPF_ATTR_INFO_INFO	\
+  || defined HAVE_UNION_BPF_ATTR_NEXT_ID	\
+  || defined HAVE_UNION_BPF_ATTR_NUMA_NODE	\
+  || defined HAVE_UNION_BPF_ATTR_PROG_FLAGS	\
+  || defined HAVE_UNION_BPF_ATTR_TEST_DURATION)
 
 # include <stddef.h>
 # include <stdio.h>
@@ -43,6 +46,7 @@
 # include <string.h>
 # include <unistd.h>
 # include <linux/bpf.h>
+# include "print_fields.h"
 
 static const kernel_ulong_t long_bits = (kernel_ulong_t) 0xfacefeed00000000ULL;
 static const char *errstr;
@@ -183,18 +187,22 @@
 		  init_ ## cmd_ ## _attr, print_ ## cmd_ ## _attr)	\
 	/* End of TEST_BPF definition. */
 
-# ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+#define DEF_BPF_INIT_FIRST(cmd_, field_, value_)			\
+	static unsigned int						\
+	init_ ## cmd_ ## _first(const unsigned long eop)		\
+	{								\
+		static const union bpf_attr attr = { .field_ = value_ };\
+		static const unsigned int offset = sizeof(attr.field_);	\
+		const unsigned long addr = eop - offset;		\
+									\
+		memcpy((void *) addr, &attr.field_, offset);		\
+		return offset;						\
+	}								\
+	/* End of DEF_INIT_FIRST definition. */
 
-static unsigned int
-init_BPF_MAP_CREATE_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .map_type = 2 };
-	static const unsigned int offset = sizeof(attr.map_type);
-	const unsigned long addr = eop - offset;
+# ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
 
-	memcpy((void *) addr, &attr.map_type, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_MAP_CREATE, map_type, 2)
 
 static void
 print_BPF_MAP_CREATE_first(const unsigned long addr)
@@ -211,11 +219,12 @@
 		.key_size = 4,
 		.value_size = 8,
 		.max_entries = 256,
-		.map_flags = 1,
-		.inner_map_fd = -1
+		.map_flags = 7,
+		.inner_map_fd = -1,
+		.numa_node = 42
 	};
 	static const unsigned int offset =
-		offsetofend(union bpf_attr, inner_map_fd);
+		offsetofend(union bpf_attr, numa_node);
 	const unsigned long addr = eop - offset;
 
 	memcpy((void *) addr, &attr, offset);
@@ -227,23 +236,15 @@
 {
 	printf("map_type=BPF_MAP_TYPE_HASH, key_size=4"
 	       ", value_size=8, max_entries=256"
-	       ", map_flags=BPF_F_NO_PREALLOC, inner_map_fd=-1");
+	       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NO_COMMON_LRU"
+	       "|BPF_F_NUMA_NODE, inner_map_fd=-1, numa_node=42");
 }
 
-# endif /* HAVE_UNION_BPF_ATTR_INNER_MAP_FD */
+# endif /* HAVE_UNION_BPF_ATTR_NUMA_NODE */
 
 # ifdef HAVE_UNION_BPF_ATTR_FLAGS
 
-static unsigned int
-init_BPF_MAP_LOOKUP_ELEM_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .map_fd = -1 };
-	static const unsigned int offset = sizeof(attr.map_fd);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.map_fd, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_MAP_LOOKUP_ELEM, map_fd, -1)
 
 static void
 print_BPF_MAP_LOOKUP_ELEM_first(const unsigned long addr)
@@ -367,16 +368,7 @@
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_FLAGS
 
-static unsigned int
-init_BPF_PROG_LOAD_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .prog_type = 1 };
-	static const unsigned int offset = sizeof(attr.prog_type);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.prog_type, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_PROG_LOAD, prog_type, 1)
 
 static void
 print_BPF_PROG_LOAD_first(const unsigned long addr)
@@ -435,16 +427,7 @@
  */
 # ifdef HAVE_UNION_BPF_ATTR_BPF_FD
 
-static unsigned int
-init_BPF_OBJ_PIN_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = {};
-	static const unsigned int offset = sizeof(attr.pathname);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.pathname, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_OBJ_PIN, pathname, 0)
 
 static void
 print_BPF_OBJ_PIN_first(const unsigned long addr)
@@ -484,16 +467,7 @@
 /* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 
-static unsigned int
-init_BPF_PROG_ATTACH_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .target_fd = -1 };
-	static const unsigned int offset = sizeof(attr.target_fd);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.target_fd, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_PROG_ATTACH, target_fd, -1)
 
 static void
 print_BPF_PROG_ATTACH_first(const unsigned long addr)
@@ -559,13 +533,171 @@
 
 # endif /* HAVE_UNION_BPF_ATTR_ATTACH_FLAGS */
 
+/* BPF_PROG_TEST_RUN command appears in kernel 4.12. */
+# ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
+
+DEF_BPF_INIT_FIRST(BPF_PROG_TEST_RUN, test.prog_fd, -1)
+
+static void
+print_BPF_PROG_TEST_RUN_first(const unsigned long addr)
+{
+	printf("test={prog_fd=-1, retval=0, data_size_in=0, data_size_out=0"
+	       ", data_in=0, data_out=0, repeat=0, duration=0}");
+}
+
+static const union bpf_attr sample_BPF_PROG_TEST_RUN_attr = {
+	.test = {
+		.prog_fd = -1,
+		.retval = 0xfac1fed2,
+		.data_size_in = 0xfac3fed4,
+		.data_size_out = 0xfac5fed6,
+		.data_in = (uint64_t) 0xfacef11dbadc2ded,
+		.data_out = (uint64_t) 0xfacef33dbadc4ded,
+		.repeat = 0xfac7fed8,
+		.duration = 0xfac9feda
+	}
+};
+static unsigned int
+init_BPF_PROG_TEST_RUN_attr(const unsigned long eop)
+{
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, test);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &sample_BPF_PROG_TEST_RUN_attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_PROG_TEST_RUN_attr(const unsigned long addr)
+{
+	PRINT_FIELD_D("test={", sample_BPF_PROG_TEST_RUN_attr.test, prog_fd);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, retval);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_size_in);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_size_out);
+	PRINT_FIELD_X(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_in);
+	PRINT_FIELD_X(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_out);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, repeat);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, duration);
+	printf("}");
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_TEST_DURATION */
+
+# ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
+
+DEF_BPF_INIT_FIRST(BPF_PROG_GET_NEXT_ID, start_id, 0xdeadbeef)
+
+static void
+print_BPF_PROG_GET_NEXT_ID_first(const unsigned long addr)
+{
+	printf("start_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static unsigned int
+init_BPF_PROG_GET_NEXT_ID_attr(const unsigned long eop)
+{
+	static const union bpf_attr attr = {
+		.start_id = 0xbadc0ded,
+		.next_id = 0xcafef00d
+	};
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, next_id);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_PROG_GET_NEXT_ID_attr(const unsigned long addr)
+{
+	printf("start_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+#  define init_BPF_MAP_GET_NEXT_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define print_BPF_MAP_GET_NEXT_ID_first print_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_MAP_GET_NEXT_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+#  define print_BPF_MAP_GET_NEXT_ID_attr print_BPF_PROG_GET_NEXT_ID_attr
+
+#  define init_BPF_PROG_GET_FD_BY_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_PROG_GET_FD_BY_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+
+static void
+print_BPF_PROG_GET_FD_BY_ID_first(const unsigned long addr)
+{
+	printf("prog_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static void
+print_BPF_PROG_GET_FD_BY_ID_attr(const unsigned long addr)
+{
+	printf("prog_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+#  define init_BPF_MAP_GET_FD_BY_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_MAP_GET_FD_BY_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+
+static void
+print_BPF_MAP_GET_FD_BY_ID_first(const unsigned long addr)
+{
+	printf("map_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static void
+print_BPF_MAP_GET_FD_BY_ID_attr(const unsigned long addr)
+{
+	printf("map_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_NEXT_ID */
+
+# ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
+
+DEF_BPF_INIT_FIRST(BPF_OBJ_GET_INFO_BY_FD, info.bpf_fd, -1)
+
+static void
+print_BPF_OBJ_GET_INFO_BY_FD_first(const unsigned long addr)
+{
+	printf("info={bpf_fd=-1, info_len=0, info=0}");
+}
+
+static const union bpf_attr sample_BPF_OBJ_GET_INFO_BY_FD_attr = {
+	.info = {
+		.bpf_fd = -1,
+		.info_len = 0xdeadbeef,
+		.info = (uint64_t) 0xfacefeedbadc0ded
+	}
+};
+static unsigned int
+init_BPF_OBJ_GET_INFO_BY_FD_attr(const unsigned long eop)
+{
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, info);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &sample_BPF_OBJ_GET_INFO_BY_FD_attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_OBJ_GET_INFO_BY_FD_attr(const unsigned long addr)
+{
+	PRINT_FIELD_D("info={", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, bpf_fd);
+	PRINT_FIELD_U(", ", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, info_len);
+	PRINT_FIELD_X(", ", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, info);
+	printf("}");
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_INFO_INFO */
+
 int
 main(void)
 {
 	page_size = get_page_size();
 	end_of_page = (unsigned long) tail_alloc(1) + 1;
 
-# ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+# ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
 	TEST_BPF(BPF_MAP_CREATE);
 # endif
 
@@ -590,6 +722,21 @@
 	TEST_BPF(BPF_PROG_DETACH);
 # endif
 
+# ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
+	TEST_BPF(BPF_PROG_TEST_RUN);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
+	TEST_BPF(BPF_PROG_GET_NEXT_ID);
+	TEST_BPF(BPF_MAP_GET_NEXT_ID);
+	TEST_BPF(BPF_PROG_GET_FD_BY_ID);
+	TEST_BPF(BPF_MAP_GET_FD_BY_ID);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
+	TEST_BPF(BPF_OBJ_GET_INFO_BY_FD);
+# endif
+
 	sys_bpf(0xfacefeed, end_of_page, 40);
 	printf("bpf(0xfacefeed /* BPF_??? */, %#lx, 40) = %s\n",
 	       end_of_page, errstr);
diff --git a/tests-mx32/bpf.gen.test b/tests-mx32/bpf.gen.test
index 7ee9e7f..1391d6b 100755
--- a/tests-mx32/bpf.gen.test
+++ b/tests-mx32/bpf.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/btrfs.gen.test b/tests-mx32/btrfs.gen.test
index a7118ef..3976cf5 100755
--- a/tests-mx32/btrfs.gen.test
+++ b/tests-mx32/btrfs.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/chmod.gen.test b/tests-mx32/chmod.gen.test
index 438665a..4033088 100755
--- a/tests-mx32/chmod.gen.test
+++ b/tests-mx32/chmod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/chown.gen.test b/tests-mx32/chown.gen.test
index 46889a1..87cc0f0 100755
--- a/tests-mx32/chown.gen.test
+++ b/tests-mx32/chown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/chown32.gen.test b/tests-mx32/chown32.gen.test
index f0f603e..8d9d891 100755
--- a/tests-mx32/chown32.gen.test
+++ b/tests-mx32/chown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests-mx32/chroot.gen.test b/tests-mx32/chroot.gen.test
index 6ea81dd..40eb55b 100755
--- a/tests-mx32/chroot.gen.test
+++ b/tests-mx32/chroot.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/clock_adjtime.gen.test b/tests-mx32/clock_adjtime.gen.test
index 735e3af..22d5dbc 100755
--- a/tests-mx32/clock_adjtime.gen.test
+++ b/tests-mx32/clock_adjtime.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests-mx32/copy_file_range.gen.test b/tests-mx32/copy_file_range.gen.test
index 4f3063b..e90c6c1 100755
--- a/tests-mx32/copy_file_range.gen.test
+++ b/tests-mx32/copy_file_range.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/creat.gen.test b/tests-mx32/creat.gen.test
index d2e47d3..baff916 100755
--- a/tests-mx32/creat.gen.test
+++ b/tests-mx32/creat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/delete_module.gen.test b/tests-mx32/delete_module.gen.test
index 4e4c671..028515f 100755
--- a/tests-mx32/delete_module.gen.test
+++ b/tests-mx32/delete_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
+run_strace_match_diff -a23 
diff --git a/tests-mx32/dup.gen.test b/tests-mx32/dup.gen.test
index e5729c0..e559cdb 100755
--- a/tests-mx32/dup.gen.test
+++ b/tests-mx32/dup.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-mx32/dup2.gen.test b/tests-mx32/dup2.gen.test
index fd1f5c9..6a6d2f5 100755
--- a/tests-mx32/dup2.gen.test
+++ b/tests-mx32/dup2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests-mx32/dup3.gen.test b/tests-mx32/dup3.gen.test
index d6ff7d7..776b9a7 100755
--- a/tests-mx32/dup3.gen.test
+++ b/tests-mx32/dup3.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/epoll_create.gen.test b/tests-mx32/epoll_create.gen.test
index 841da6d..277a5aa 100755
--- a/tests-mx32/epoll_create.gen.test
+++ b/tests-mx32/epoll_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/epoll_create1.gen.test b/tests-mx32/epoll_create1.gen.test
index c5e62a0..c510c32 100755
--- a/tests-mx32/epoll_create1.gen.test
+++ b/tests-mx32/epoll_create1.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/epoll_ctl.gen.test b/tests-mx32/epoll_ctl.gen.test
index 68c96eb..dba65f7 100755
--- a/tests-mx32/epoll_ctl.gen.test
+++ b/tests-mx32/epoll_ctl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/epoll_pwait.gen.test b/tests-mx32/epoll_pwait.gen.test
index c558efc..f98e2b5 100755
--- a/tests-mx32/epoll_pwait.gen.test
+++ b/tests-mx32/epoll_pwait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/epoll_wait.gen.test b/tests-mx32/epoll_wait.gen.test
index 024cc0f..d90fbeb 100755
--- a/tests-mx32/epoll_wait.gen.test
+++ b/tests-mx32/epoll_wait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
+run_strace_match_diff -a26 
diff --git a/tests-mx32/error_msg.c b/tests-mx32/error_msg.c
index 498a882..9cb3e80 100644
--- a/tests-mx32/error_msg.c
+++ b/tests-mx32/error_msg.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,6 +26,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define perror_msg_and_fail perror_msg_and_fail
+#define error_msg_and_fail error_msg_and_fail
+
 #include "tests.h"
 #include <errno.h>
 #include <stdarg.h>
diff --git a/tests-mx32/execveat.gen.test b/tests-mx32/execveat.gen.test
index c92e4d6..180b829 100755
--- a/tests-mx32/execveat.gen.test
+++ b/tests-mx32/execveat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/fadvise64_64.gen.test b/tests-mx32/fadvise64_64.gen.test
index 5f95b3c..e46bf81 100755
--- a/tests-mx32/fadvise64_64.gen.test
+++ b/tests-mx32/fadvise64_64.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test ); do not edit.
+set -- 
 . "${srcdir=.}/fadvise64.test"
diff --git a/tests-mx32/fallocate.gen.test b/tests-mx32/fallocate.gen.test
index c6cfdb7..3bb5bbf 100755
--- a/tests-mx32/fallocate.gen.test
+++ b/tests-mx32/fallocate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-mx32/fanotify_init.gen.test b/tests-mx32/fanotify_init.gen.test
index ee519e6..69807a7 100755
--- a/tests-mx32/fanotify_init.gen.test
+++ b/tests-mx32/fanotify_init.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/fanotify_mark.gen.test b/tests-mx32/fanotify_mark.gen.test
index ce16a55..4651260 100755
--- a/tests-mx32/fanotify_mark.gen.test
+++ b/tests-mx32/fanotify_mark.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 
diff --git a/tests-mx32/fchdir.gen.test b/tests-mx32/fchdir.gen.test
index c80e141..a352a21 100755
--- a/tests-mx32/fchdir.gen.test
+++ b/tests-mx32/fchdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests-mx32/fchmod.gen.test b/tests-mx32/fchmod.gen.test
index f327fb7..828c9b5 100755
--- a/tests-mx32/fchmod.gen.test
+++ b/tests-mx32/fchmod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-mx32/fchmodat.gen.test b/tests-mx32/fchmodat.gen.test
index 9ee1f01..3646185 100755
--- a/tests-mx32/fchmodat.gen.test
+++ b/tests-mx32/fchmodat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/fchown.gen.test b/tests-mx32/fchown.gen.test
index 63ee545..ec7f7c5 100755
--- a/tests-mx32/fchown.gen.test
+++ b/tests-mx32/fchown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests-mx32/fchown32.gen.test b/tests-mx32/fchown32.gen.test
index d8167dd..1670583 100755
--- a/tests-mx32/fchown32.gen.test
+++ b/tests-mx32/fchown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-mx32/fchownat.gen.test b/tests-mx32/fchownat.gen.test
index 2ec9e32..54bd043 100755
--- a/tests-mx32/fchownat.gen.test
+++ b/tests-mx32/fchownat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/fcntl.gen.test b/tests-mx32/fcntl.gen.test
index 83a1af4..9de26c0 100755
--- a/tests-mx32/fcntl.gen.test
+++ b/tests-mx32/fcntl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-mx32/fcntl64.gen.test b/tests-mx32/fcntl64.gen.test
index 9d3b98a..fee01b6 100755
--- a/tests-mx32/fcntl64.gen.test
+++ b/tests-mx32/fcntl64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-mx32/fdatasync.gen.test b/tests-mx32/fdatasync.gen.test
index 0dbea8a..9aa5f2a 100755
--- a/tests-mx32/fdatasync.gen.test
+++ b/tests-mx32/fdatasync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-mx32/file_ioctl.gen.test b/tests-mx32/file_ioctl.gen.test
index f7e58f5..0abab81 100755
--- a/tests-mx32/file_ioctl.gen.test
+++ b/tests-mx32/file_ioctl.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/m4/st_bpf.m4 b/tests-mx32/filtering_fd-syntax.test
old mode 100644
new mode 100755
similarity index 62%
copy from m4/st_bpf.m4
copy to tests-mx32/filtering_fd-syntax.test
index ae44d28..4f4e9c7
--- a/m4/st_bpf.m4
+++ b/tests-mx32/filtering_fd-syntax.test
@@ -1,6 +1,9 @@
-#!/usr/bin/m4
+#!/bin/sh
 #
-# Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Check descriptor set parsing syntax.
+#
+# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -25,26 +28,33 @@
 # (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_CHECK_UNION_BPF_ATTR],[
+. "${srcdir=.}/syntax.sh"
 
-pushdef([ATTR_NAME], translit([$1], [a-z], [A-Z]))
-pushdef([attr_text], [union bpf_attr.][$1])
-pushdef([have_attr], [st_cv_member_union_bpf_attr_][$1])
+check_fd_qualify()
+{
+	check_e "invalid descriptor '$1'" -e"read=$2"
+	check_e "invalid descriptor '$1'" -e "read=$2"
+	check_e "invalid descriptor '$1'" -e"write=$2"
+	check_e "invalid descriptor '$1'" -e "write=$2"
+}
 
-AC_CACHE_CHECK([whether attr_text initialization works],
-	       [have_attr],
-	       [AC_COMPILE_IFELSE(
-		[AC_LANG_PROGRAM([[#include <linux/bpf.h>]],
-				 [union bpf_attr a = { .$1 = 0 };])],
-		[have_attr=yes],
-		[have_attr=no])])
+for arg in '' , ,, ,,, ; do
+	check_fd_qualify "$arg" "$arg"
+	check_fd_qualify "!$arg" "!$arg"
+done
 
-if test $have_attr = yes; then
-	AC_DEFINE([HAVE_UNION_BPF_ATTR_]ATTR_NAME, [1],
-		  [Define to 1 if attr_text initialization works])
-fi
+for arg in -1 -42 \
+	   not_fd \
+	   2147483648 \
+	   4294967296 \
+	   ; do
+	check_fd_qualify "$arg" "$arg"
+	check_fd_qualify "$arg" "1,$arg"
+	check_fd_qualify "$arg" "$arg,1"
+	check_fd_qualify "$arg" "!$arg"
+done
 
-popdef([have_attr])
-popdef([attr_text])
-popdef([ATTR_NAME])
-])
+for arg in ! all none; do
+	check_fd_qualify "$arg" "1,$arg"
+	check_fd_qualify "!$arg" "1,!$arg"
+done
diff --git a/tests-mx32/filtering_syscall-syntax.test b/tests-mx32/filtering_syscall-syntax.test
new file mode 100755
index 0000000..8fda8dc
--- /dev/null
+++ b/tests-mx32/filtering_syscall-syntax.test
@@ -0,0 +1,121 @@
+#!/bin/sh
+#
+# Check syscall set parsing syntax.
+#
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@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.
+
+. "${srcdir=.}/syntax.sh"
+
+check_syscall()
+{
+	[ -z "$2" ] || check_e "invalid system call '$1'" -e"$2"
+
+	check_e "invalid system call '$1'" -e "$2"
+	check_e "invalid system call '$1'" -etrace="$2"
+	check_e "invalid system call '$1'" -e trace="$2"
+
+	check_e "invalid system call '$1'" -eabbrev="$2"
+	check_e "invalid system call '$1'" -e abbrev="$2"
+
+	check_e "invalid system call '$1'" -everbose="$2"
+	check_e "invalid system call '$1'" -e verbose="$2"
+
+	check_e "invalid system call '$1'" -eraw="$2"
+	check_e "invalid system call '$1'" -e raw="$2"
+
+	check_e "invalid system call '$1'" -einject="$2"
+	check_e "invalid system call '$1'" -e inject="$2"
+	check_e "invalid system call '$1'" -einject="$2:"
+	check_e "invalid system call '$1'" -einject="$2::"
+	check_e "invalid system call '$1'" -einject="$2:::"
+	check_e "invalid system call '$1'" -e inject="$2:"
+	check_e "invalid system call '$1'" -e inject="$2::"
+	check_e "invalid system call '$1'" -e inject="$2:::"
+	check_e "invalid system call '$1'" -einject="$2:when=3"
+	check_e "invalid system call '$1'" -e inject="$2:when=3"
+
+	check_e "invalid system call '$1'" -efault="$2"
+	check_e "invalid system call '$1'" -e fault="$2"
+	check_e "invalid system call '$1'" -efault="$2:"
+	check_e "invalid system call '$1'" -efault="$2::"
+	check_e "invalid system call '$1'" -efault="$2:::"
+	check_e "invalid system call '$1'" -e fault="$2:"
+	check_e "invalid system call '$1'" -e fault="$2::"
+	check_e "invalid system call '$1'" -e fault="$2:::"
+	check_e "invalid system call '$1'" -efault="$2:when=4"
+	check_e "invalid system call '$1'" -e fault="$2:when=4"
+}
+
+for arg in '' , ,, ,,, ; do
+	check_syscall "$arg" "$arg"
+	check_syscall "!$arg" "!$arg"
+done
+
+for arg in -1 -2 -3 -4 -5 \
+	   invalid_syscall_name \
+	   0x 0y \
+	   32767 \
+	   2147483647 \
+	   2147483648 \
+	   4294967295 \
+	   4294967296 \
+	   /non_syscall \
+	   % %not_a_class \
+	   ; do
+	check_syscall "$arg" "$arg"
+	check_syscall "$arg" "!$arg"
+	check_syscall "$arg" "1,$arg"
+done
+
+for arg in '!chdir' none all; do
+	check_syscall "$arg" "1,$arg"
+done
+
+# invalid syscall, multiple syscalls
+for arg in %desc \
+	   %file \
+	   %memory \
+	   %process \
+	   %network \
+	   chdir \
+	   1 \
+	   ?32767 \
+	   ?invalid \
+	   ?%not_a_class \
+	   ?/non_syscall \
+	   ; do
+	check_syscall nonsense "$arg,nonsense"
+	check_syscall nonsense "!$arg,nonsense"
+	check_syscall nonsense "nonsense,$arg"
+	check_syscall nonsense "!nonsense,$arg"
+done
+
+check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
+check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
+check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
+check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
+check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
diff --git a/tests-mx32/finit_module.gen.test b/tests-mx32/finit_module.gen.test
index f2e56af..5ffafd3 100755
--- a/tests-mx32/finit_module.gen.test
+++ b/tests-mx32/finit_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-mx32/flock.gen.test b/tests-mx32/flock.gen.test
index dff2bac..67a9d8c 100755
--- a/tests-mx32/flock.gen.test
+++ b/tests-mx32/flock.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-mx32/fstatfs.gen.test b/tests-mx32/fstatfs.gen.test
index 3dd04d8..27deaf3 100755
--- a/tests-mx32/fstatfs.gen.test
+++ b/tests-mx32/fstatfs.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-mx32/fstatfs64.gen.test b/tests-mx32/fstatfs64.gen.test
index b9527be..d693726 100755
--- a/tests-mx32/fstatfs64.gen.test
+++ b/tests-mx32/fstatfs64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/fsync.gen.test b/tests-mx32/fsync.gen.test
index 921e804..5e72cc2 100755
--- a/tests-mx32/fsync.gen.test
+++ b/tests-mx32/fsync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/ftruncate.gen.test b/tests-mx32/ftruncate.gen.test
index 709a851..6e5926b 100755
--- a/tests-mx32/ftruncate.gen.test
+++ b/tests-mx32/ftruncate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/ftruncate64.gen.test b/tests-mx32/ftruncate64.gen.test
index 4cb1fe7..d910f61 100755
--- a/tests-mx32/ftruncate64.gen.test
+++ b/tests-mx32/ftruncate64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-mx32/futex.c b/tests-mx32/futex.c
index e1dbcb7..0c095b8 100644
--- a/tests-mx32/futex.c
+++ b/tests-mx32/futex.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,10 +57,11 @@
 # include "xlat/futexwakecmps.h"
 
 void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
-	int *uaddr2, unsigned long val3, int rc)
+	int *uaddr2, unsigned long val3, int rc, const char *func, int line)
 {
-	perror_msg_and_fail("futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
-		uaddr, op, (unsigned) val, timeout, uaddr, (unsigned) val3, rc);
+	perror_msg_and_fail("%s:%d: futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
+		func, line, uaddr, op, (unsigned) val, timeout, uaddr,
+		(unsigned) val3, rc);
 }
 
 # define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
@@ -77,7 +78,7 @@
 		if (!(check)) \
 			futex_error((uaddr), (op), (val), \
 				(unsigned long) (timeout), (int *) (uaddr2), \
-				(val3), rc); \
+				(val3), rc, __func__, __LINE__); \
 	} while (0)
 
 # define CHECK_FUTEX_ENOSYS(uaddr, op, val, timeout, uaddr2, val3, check) \
@@ -151,14 +152,20 @@
 	} while (0)
 
 /* Value which differs from one stored in int *val */
-# define VAL     ((unsigned long) 0xbadda7a0facefeedLLU)
-# define VAL_PR  ((unsigned) VAL)
+# define VAL      ((unsigned long) 0xbadda7a0facefeedLLU)
+# define VAL_PR   ((unsigned) VAL)
 
-# define VAL2    ((unsigned long) 0xbadda7a0ca7b100dLLU)
-# define VAL2_PR ((unsigned) VAL2)
+# define VALP     ((unsigned long) 0xbadda7a01acefeedLLU)
+# define VALP_PR  ((unsigned) VALP)
 
-# define VAL3    ((unsigned long) 0xbadda7a09caffee1LLU)
-# define VAL3_PR ((unsigned) VAL3)
+# define VAL2     ((unsigned long) 0xbadda7a0ca7b100dLLU)
+# define VAL2_PR  ((unsigned) VAL2)
+
+# define VAL2P    ((unsigned long) 0xbadda7a07a7b100dLLU)
+# define VAL2P_PR ((unsigned) VAL2P)
+
+# define VAL3     ((unsigned long) 0xbadda7a09caffee1LLU)
+# define VAL3_PR  ((unsigned) VAL3)
 
 int
 main(int argc, char *argv[])
@@ -418,16 +425,26 @@
 
 	/* Trying to re-queue some processes but there's nothing to re-queue */
 	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VAL, VAL2, uaddr2, VAL3,
-		(rc == 0));
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VALP, VAL2P, uaddr2, VAL3,
+		(rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
+		uaddr, VALP_PR, VAL2P_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));
+		uaddr2, VAL3, (rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
 
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_REQUEUE, VALP,
+		VAL2P, uaddr2, VAL3, (rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, sprintrc(rc));
+
 	CHECK_INVALID_CLOCKRT(FUTEX_REQUEUE, ARG3 | ARG4 | ARG5, "%u", "%u",
 		"%#lx");
 
@@ -444,22 +461,38 @@
 
 	/* Comparison re-queue with wrong val value */
 	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, VAL3,
-		(rc == -1) && (errno == EAGAIN));
+		(rc == -1) && (errno == EAGAIN || errno == EINVAL));
 	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, VAL3_PR, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VALP, VAL2P, uaddr2, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, VAL3_PR, sprintrc(rc));
+
 	/* Successful comparison re-queue */
 	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, *uaddr,
-		(rc == 0));
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VALP, VAL2P, uaddr2, *uaddr,
+		(rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_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));
+		VAL2, uaddr2, *uaddr,
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %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, VALP,
+		VAL2P, uaddr2, *uaddr, (rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, *uaddr, sprintrc(rc));
+
 	CHECK_INVALID_CLOCKRT(FUTEX_CMP_REQUEUE, ARG3 | ARG4 | ARG5 | ARG6,
 		"%u", "%u", "%#lx", "%u");
 
diff --git a/tests-mx32/futimesat.gen.test b/tests-mx32/futimesat.gen.test
index c3add8c..80d7a8b 100755
--- a/tests-mx32/futimesat.gen.test
+++ b/tests-mx32/futimesat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/gen_tests.am b/tests-mx32/gen_tests.am
index 71e0013..29d8c64 100644
--- a/tests-mx32/gen_tests.am
+++ b/tests-mx32/gen_tests.am
@@ -1,9 +1,12 @@
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_kvm_run.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nsfs.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
 
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/_newselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -295,21 +298,36 @@
 $(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_dm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_kvm_run.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_loop-nv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -325,6 +343,9 @@
 $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -448,6 +469,9 @@
 $(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/modify_ldt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -643,12 +667,30 @@
 $(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/old_mmap-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap-v-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/oldselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -688,6 +730,9 @@
 $(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ppoll-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -799,6 +844,9 @@
 $(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/riscv_flush_icache.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -823,6 +871,24 @@
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_guarded_storage-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_pci_mmio_read_write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_runtime_instr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -859,6 +925,9 @@
 $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -982,6 +1051,9 @@
 $(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/sockopt-sol_netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
diff --git a/tests-mx32/gen_tests.in b/tests-mx32/gen_tests.in
index 091bbe5..ea33892 100644
--- a/tests-mx32/gen_tests.in
+++ b/tests-mx32/gen_tests.in
@@ -1,6 +1,6 @@
 # Input for gen_tests.sh
 #
-# Copyright (c) 2017 The strace developers.
+# Copyright (c) 2017-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -26,6 +26,7 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 _newselect
+_newselect-P	 -e trace=_newselect -P /dev/full 9>>/dev/full
 accept	-a22
 accept4	-a37
 access	-a30 -P access_sample
@@ -123,16 +124,22 @@
 inotify_init1	-a27
 int_0x80	-a11 -e trace=getgid32
 ioctl_block	+ioctl.test
+ioctl_dm	+ioctl.test -s9
+ioctl_dm-v	+ioctl.test -v -s9
 ioctl_evdev	+ioctl.test
-ioctl_evdev-v	+ioctl-v.sh
+ioctl_evdev-v	+ioctl.test -v
+ioctl_kvm_run	+ioctl.test -a36 -y
 ioctl_loop	+ioctl.test
-ioctl_loop-v	+ioctl-v.sh
+ioctl_loop-nv	+ioctl.test -a22 -e verbose=none
+ioctl_loop-v	+ioctl.test -v
 ioctl_mtd	+ioctl.test
+ioctl_nsfs	+ioctl.test -esignal=none
 ioctl_rtc	+ioctl.test
-ioctl_rtc-v	+ioctl-v.sh
+ioctl_rtc-v	+ioctl.test -v
 ioctl_scsi	+ioctl.test
 ioctl_sg_io_v3	+ioctl.test
 ioctl_sg_io_v4	+ioctl.test
+ioctl_sock_gifconf	+ioctl.test -a28 -s1
 ioctl_uffdio	+ioctl.test
 ioctl_v4l2	+ioctl.test
 ioperm	-a27
@@ -174,6 +181,7 @@
 mmsg-silent	-a25 -e verbose=none -e trace=sendmmsg,recvmmsg
 mmsg_name	-a25 -e trace=sendmmsg,recvmmsg
 mmsg_name-v	-v -a25 -e trace=sendmmsg,recvmmsg
+modify_ldt	-a23
 mount
 move_pages	-s3
 mq	-a32 -e trace=mq_getsetattr,mq_open,mq_unlink
@@ -239,11 +247,17 @@
 nlattr_tcmsg			+netlink_sock_diag.test
 nlattr_unix_diag_msg		+netlink_sock_diag.test
 old_mmap	-a11 -e trace=mmap
+old_mmap-P	-e trace=mmap -P "/dev/full" 9>>/dev/full
+old_mmap-v-none	-a11 -e trace=mmap -e verbose=none
 oldfstat	-a18 -v -P stat.sample
 oldlstat	-a32 -v -P stat.sample -P /dev/full
+oldselect	-a13 -e trace=select
+oldselect-P	-a13 -e trace=select -P /dev/full 9>>/dev/full
+oldselect-efault	-a13 -e trace=select
+oldselect-efault-P	-a13 -e trace=select -P /dev/full 9>>/dev/full
 oldstat	-a32 -v -P stat.sample -P /dev/full
 open	-a30 -P $NAME.sample
-openat	-P $NAME.sample
+openat	-a36 -P $NAME.sample
 osf_utimes	-a21
 pause	-a8 -esignal=none
 perf_event_open	-a1
@@ -254,6 +268,7 @@
 pkey_free	-a13
 pkey_mprotect	-a37
 ppoll	-s2
+ppoll-P	-s2 -e trace=ppoll -P /dev/full 9>>/dev/full
 ppoll-v	-v -s2 -e trace=ppoll
 pread64-pwrite64	-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
 preadv	-a21
@@ -281,7 +296,7 @@
 readdir	-a16
 readlink	-xx
 readlinkat	-xx
-reboot
+reboot		-s 256
 recvfrom	-a35
 recvmmsg-timeout	-a25 -e trace=recvmmsg
 recvmsg	-eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
@@ -291,6 +306,7 @@
 renameat
 renameat2
 request_key	-a33 -s12
+riscv_flush_icache	-a34
 rmdir	-a22
 rt_sigpending	-a20
 rt_sigprocmask
@@ -299,6 +315,12 @@
 rt_sigsuspend	-a20 -esignal=none
 rt_sigtimedwait	-a38
 rt_tgsigqueueinfo	-esignal=none
+s390_guarded_storage	-a32
+s390_guarded_storage-v	-e trace=s390_guarded_storage -a32 -v
+s390_pci_mmio_read_write	-e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
+s390_runtime_instr	-a50
+s390_sthyi	-a47
+s390_sthyi-v	-e trace=s390_sthyi -a47 -v
 sched	test_trace_expr times -e/sched
 sched_get_priority_mxx	-a33 -e trace=sched_get_priority_min,sched_get_priority_max
 sched_rr_get_interval	-a31
@@ -311,6 +333,7 @@
 seccomp-filter-v	-v -e trace=seccomp
 seccomp_get_action_avail	-e trace=seccomp
 select	-a36
+select-P	-a36 -e trace=select -P /dev/full 9>>/dev/full
 semop	-a32 -e trace=semop,semtimedop
 sendfile	-a27
 sendfile64	-a29
@@ -352,6 +375,7 @@
 so_peercred	-e trace=getsockopt
 sock_filter-v	-v -e trace=getsockopt,setsockopt
 socketcall	-a20
+sockopt-sol_netlink	-e trace=getsockopt,setsockopt
 splice
 stat	-a32 -v -P stat.sample -P /dev/full
 stat64	-a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/gen_tests.sh b/tests-mx32/gen_tests.sh
index b062436..b41983e 100755
--- a/tests-mx32/gen_tests.sh
+++ b/tests-mx32/gen_tests.sh
@@ -1,6 +1,7 @@
 #!/bin/sh -efu
 #
 # Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 
 names=
 
-while read -r name args; do {
+while read -r name arg0 args; do {
 	[ -n "${name###*}" ] || continue
 	if [ -z "$match" ]; then
 		names="$names $name"
@@ -65,13 +66,14 @@
 
 	hdr="\
 #!/bin/sh -efu
-# Generated by $0 from $input ($name $args); do not edit."
+# Generated by $0 from $input ($name $arg0 $args); do not edit."
 
-	case "$args" in
+	case "$arg0" in
 		+*)
 		cat <<-EOF
 		$hdr
-		. "\${srcdir=.}/${args#+}"
+		set -- $args
+		. "\${srcdir=.}/${arg0#+}"
 		EOF
 		;;
 
@@ -79,7 +81,7 @@
 		cat <<-EOF
 		$hdr
 		. "\${srcdir=.}/init.sh"
-		run_strace_match_diff $args
+		run_strace_match_diff $arg0 $args
 		EOF
 		;;
 
@@ -87,7 +89,7 @@
 		cat <<-EOF
 		$hdr
 		. "\${srcdir=.}/init.sh"
-		$args
+		$arg0 $args
 		EOF
 		;;
 	esac > "$output"
diff --git a/tests-mx32/get_regs.test b/tests-mx32/get_regs.test
index c673fe9..eb69137 100755
--- a/tests-mx32/get_regs.test
+++ b/tests-mx32/get_regs.test
@@ -36,7 +36,7 @@
 run_strace -qq -esignal=none -eraw=all -etrace=none ../gettid > /dev/null
 
 run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > less' \
-	-- ${STRACE##* } -o "$LOG" $args > /dev/null
+	-- "$STRACE_EXE" -o "$LOG" $args > /dev/null
 
 [ "$(cat less)" -gt 0 ] ||
 	fail_ "$STRACE $args failed to catch any ptrace syscalls"
@@ -44,7 +44,7 @@
 run_strace -qq -esignal=none -eraw=all -etrace=all ../gettid > /dev/null
 
 run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > more' \
-	-- ${STRACE##* } -o "$LOG" $args > /dev/null
+	-- "$STRACE_EXE" -o "$LOG" $args > /dev/null
 
 [ "$(cat more)" -gt 0 ] ||
 	fail_ "$STRACE $args failed to catch any ptrace syscalls"
diff --git a/tests-mx32/getcpu.gen.test b/tests-mx32/getcpu.gen.test
index 44d9a4b..ae38aaa 100755
--- a/tests-mx32/getcpu.gen.test
+++ b/tests-mx32/getcpu.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-mx32/getcwd.c b/tests-mx32/getcwd.c
index 0c32f8d..2020df4 100644
--- a/tests-mx32/getcwd.c
+++ b/tests-mx32/getcwd.c
@@ -4,9 +4,9 @@
 
 #ifdef __NR_getcwd
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 
 int
 main(void)
diff --git a/tests-mx32/getcwd.gen.test b/tests-mx32/getcwd.gen.test
index af2ff08..f783a5b 100755
--- a/tests-mx32/getcwd.gen.test
+++ b/tests-mx32/getcwd.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-mx32/getegid.gen.test b/tests-mx32/getegid.gen.test
index d6fecc2..ddf8fa9 100755
--- a/tests-mx32/getegid.gen.test
+++ b/tests-mx32/getegid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getegid32.gen.test b/tests-mx32/getegid32.gen.test
index 38c4a4b..a773f56 100755
--- a/tests-mx32/getegid32.gen.test
+++ b/tests-mx32/getegid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/geteuid.gen.test b/tests-mx32/geteuid.gen.test
index 9e8c12f..c7da2aa 100755
--- a/tests-mx32/geteuid.gen.test
+++ b/tests-mx32/geteuid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/geteuid32.gen.test b/tests-mx32/geteuid32.gen.test
index 5b78331..75c3f12 100755
--- a/tests-mx32/geteuid32.gen.test
+++ b/tests-mx32/geteuid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgid.gen.test b/tests-mx32/getgid.gen.test
index 5a87aee..fc6ac3b 100755
--- a/tests-mx32/getgid.gen.test
+++ b/tests-mx32/getgid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgid32.gen.test b/tests-mx32/getgid32.gen.test
index 05e2d70..b3a8756 100755
--- a/tests-mx32/getgid32.gen.test
+++ b/tests-mx32/getgid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgroups.gen.test b/tests-mx32/getgroups.gen.test
index 48b09be..ae196d0 100755
--- a/tests-mx32/getgroups.gen.test
+++ b/tests-mx32/getgroups.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/getgroups32.gen.test b/tests-mx32/getgroups32.gen.test
index 74637d0..54b71d5 100755
--- a/tests-mx32/getgroups32.gen.test
+++ b/tests-mx32/getgroups32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-mx32/getpeername.gen.test b/tests-mx32/getpeername.gen.test
index 66fb0a9..020583a 100755
--- a/tests-mx32/getpeername.gen.test
+++ b/tests-mx32/getpeername.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/getpgrp.gen.test b/tests-mx32/getpgrp.gen.test
index 1ec48e9..26989cd 100755
--- a/tests-mx32/getpgrp.gen.test
+++ b/tests-mx32/getpgrp.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/getpid.gen.test b/tests-mx32/getpid.gen.test
index 4691774..2a3eb1c 100755
--- a/tests-mx32/getpid.gen.test
+++ b/tests-mx32/getpid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a9
+run_strace_match_diff -a9 
diff --git a/tests-mx32/getppid.gen.test b/tests-mx32/getppid.gen.test
index 52116a0..655b0b7 100755
--- a/tests-mx32/getppid.gen.test
+++ b/tests-mx32/getppid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/getresgid.gen.test b/tests-mx32/getresgid.gen.test
index f53bccc..dc32c62 100755
--- a/tests-mx32/getresgid.gen.test
+++ b/tests-mx32/getresgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-mx32/getresgid32.gen.test b/tests-mx32/getresgid32.gen.test
index 5f00506..0ee2829 100755
--- a/tests-mx32/getresgid32.gen.test
+++ b/tests-mx32/getresgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/getresuid.gen.test b/tests-mx32/getresuid.gen.test
index e947a94..b0f478c 100755
--- a/tests-mx32/getresuid.gen.test
+++ b/tests-mx32/getresuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests-mx32/getresuid32.gen.test b/tests-mx32/getresuid32.gen.test
index b088a22..1b2f232 100755
--- a/tests-mx32/getresuid32.gen.test
+++ b/tests-mx32/getresuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/getrlimit.gen.test b/tests-mx32/getrlimit.gen.test
index b97c176..08daf2d 100755
--- a/tests-mx32/getrlimit.gen.test
+++ b/tests-mx32/getrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/getrusage.gen.test b/tests-mx32/getrusage.gen.test
index c4fb182..161818a 100755
--- a/tests-mx32/getrusage.gen.test
+++ b/tests-mx32/getrusage.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -v
+run_strace_match_diff -v 
diff --git a/tests-mx32/getsid.gen.test b/tests-mx32/getsid.gen.test
index 123f177..2b9084a 100755
--- a/tests-mx32/getsid.gen.test
+++ b/tests-mx32/getsid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/getsockname.gen.test b/tests-mx32/getsockname.gen.test
index cd40d3e..64cdeea 100755
--- a/tests-mx32/getsockname.gen.test
+++ b/tests-mx32/getsockname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/gettid.gen.test b/tests-mx32/gettid.gen.test
index 1ceaa53..f5ad317 100755
--- a/tests-mx32/gettid.gen.test
+++ b/tests-mx32/gettid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a9
+run_strace_match_diff -a9 
diff --git a/tests-mx32/getuid32.gen.test b/tests-mx32/getuid32.gen.test
index ac0d0ad..e81eb06 100755
--- a/tests-mx32/getuid32.gen.test
+++ b/tests-mx32/getuid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/group_req.c b/tests-mx32/group_req.c
index 946fe5c..eb56cb7 100644
--- a/tests-mx32/group_req.c
+++ b/tests-mx32/group_req.c
@@ -2,6 +2,7 @@
  * Check decoding of MCAST_JOIN_GROUP/MCAST_LEAVE_GROUP.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,9 +34,9 @@
 
 #if defined MCAST_JOIN_GROUP && defined MCAST_LEAVE_GROUP
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
 
diff --git a/tests-mx32/init_module.gen.test b/tests-mx32/init_module.gen.test
index 8948e2e..b6961be 100755
--- a/tests-mx32/init_module.gen.test
+++ b/tests-mx32/init_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/inode_of_sockfd.c b/tests-mx32/inode_of_sockfd.c
index b227f30..6a523c7 100644
--- a/tests-mx32/inode_of_sockfd.c
+++ b/tests-mx32/inode_of_sockfd.c
@@ -2,6 +2,7 @@
  * This file is part of strace test suite.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,11 +30,11 @@
 
 #include "tests.h"
 #include <assert.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 unsigned long
 inode_of_sockfd(const int fd)
diff --git a/tests-mx32/inotify_init1.gen.test b/tests-mx32/inotify_init1.gen.test
index d847b50..a1060c5 100755
--- a/tests-mx32/inotify_init1.gen.test
+++ b/tests-mx32/inotify_init1.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/ioctl-v.sh b/tests-mx32/ioctl-v.sh
deleted file mode 100755
index be89671..0000000
--- a/tests-mx32/ioctl-v.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -v -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl.c b/tests-mx32/ioctl.c
index 3c666b0..af5f9ba 100644
--- a/tests-mx32/ioctl.c
+++ b/tests-mx32/ioctl.c
@@ -86,8 +86,13 @@
 	       " = -1 EBADF (%m)\n", &data);
 
 	(void) ioctl(-1, _IOR('M', 13, int), &data);
+# ifdef HAVE_STRUCT_MTD_WRITE_REQ
 	printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, [MTD_OTP_OFF])"
 	       " = -1 EBADF (%m)\n");
+# else
+	printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, %p)"
+	       " = -1 EBADF (%m)\n", &data);
+# endif
 
 	(void) ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), (kernel_ulong_t) -1ULL);
 	printf("ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), %#lx)"
diff --git a/tests-mx32/ioctl.test b/tests-mx32/ioctl.test
index 1eb469e..cbbadc8 100755
--- a/tests-mx32/ioctl.test
+++ b/tests-mx32/ioctl.test
@@ -6,6 +6,6 @@
 
 check_prog grep
 run_prog > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
+run_strace -a16 -eioctl "$@" $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl_block.gen.test b/tests-mx32/ioctl_block.gen.test
index 0ffec6f..8b2c3df 100755
--- a/tests-mx32/ioctl_block.gen.test
+++ b/tests-mx32/ioctl_block.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_dm-v.gen.test b/tests-mx32/ioctl_dm-v.gen.test
new file mode 100755
index 0000000..66fa585
--- /dev/null
+++ b/tests-mx32/ioctl_dm-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_dm-v +ioctl.test -v -s9); do not edit.
+set -- -v -s9
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_dm-v.test b/tests-mx32/ioctl_dm-v.test
deleted file mode 100755
index eed37c2..0000000
--- a/tests-mx32/ioctl_dm-v.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check unabbreviated decoding of DM* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -s9 -veioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl_dm.c b/tests-mx32/ioctl_dm.c
index 1e831df..bbdc00c 100644
--- a/tests-mx32/ioctl_dm.c
+++ b/tests-mx32/ioctl_dm.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Mikulas Patocka <mpatocka@redhat.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -143,7 +143,7 @@
 	ptr->length       = dts_length_base + dts_length_step * id;
 	ptr->status       = dts_status_base + dts_status_step * id;
 
-	strncpy(ptr->target_type, str129 +
+	memcpy(ptr->target_type, str129 +
 		id % (sizeof(str129) - sizeof(ptr->target_type)),
 		id % (sizeof(ptr->target_type) + 1));
 	if (id % (sizeof(ptr->target_type) + 1) < sizeof(ptr->target_type))
@@ -252,8 +252,8 @@
 
 	/* Unterminated name/uuid */
 	init_s(dm_arg, min_sizeof_dm_ioctl, 0);
-	strncpy(dm_arg->name, str129, sizeof(dm_arg->name));
-	strncpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
+	memcpy(dm_arg->name, str129, sizeof(dm_arg->name));
+	memcpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
 	ioctl(-1, DM_VERSION, dm_arg);
 	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=%zu, "
 	       "dev=makedev(18, 52), name=\"%.127s\"..., uuid=\"%.128s\"..., "
@@ -511,7 +511,7 @@
 					 target##id_next) - \
 				offsetof(struct dm_table_open_test, \
 					 target##id); \
-			strncpy(dm_arg_open3->param##id, str129 + id * 2, id); \
+			memcpy(dm_arg_open3->param##id, str129 + id * 2, id); \
 			dm_arg_open3->param##id[id] = '\0'; \
 		} while (0)
 	#define PRINT_DM_TARGET(id) \
diff --git a/tests-mx32/ioctl_dm.gen.test b/tests-mx32/ioctl_dm.gen.test
new file mode 100755
index 0000000..b60c717
--- /dev/null
+++ b/tests-mx32/ioctl_dm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_dm +ioctl.test -s9); do not edit.
+set -- -s9
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_dm.test b/tests-mx32/ioctl_dm.test
deleted file mode 100755
index e9cca03..0000000
--- a/tests-mx32/ioctl_dm.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of DM* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -s9 -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl_evdev-v.gen.test b/tests-mx32/ioctl_evdev-v.gen.test
index fc7e2f0..bf74ef4 100755
--- a/tests-mx32/ioctl_evdev-v.gen.test
+++ b/tests-mx32/ioctl_evdev-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev.gen.test b/tests-mx32/ioctl_evdev.gen.test
index 26f0a28..68a43f7 100755
--- a/tests-mx32/ioctl_evdev.gen.test
+++ b/tests-mx32/ioctl_evdev.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_kvm_run.c b/tests-mx32/ioctl_kvm_run.c
new file mode 100644
index 0000000..1794614
--- /dev/null
+++ b/tests-mx32/ioctl_kvm_run.c
@@ -0,0 +1,242 @@
+/*
+ * Check decoding of KVM_* commands of ioctl syscall using /dev/kvm API.
+ * Based on kvmtest.c from https://lwn.net/Articles/658512/
+ *
+ * kvmtest.c author: Josh Triplett <josh@joshtriplett.org>
+ * Copyright (c) 2015 Intel Corporation
+ * Copyright (c) 2017-2018 The strace developers.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "tests.h"
+
+#if defined HAVE_LINUX_KVM_H				\
+ && defined HAVE_STRUCT_KVM_REGS			\
+ && defined HAVE_STRUCT_KVM_SREGS			\
+ && defined HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION	\
+ &&(defined __x86_64__ || defined __i386__)
+
+# include <fcntl.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <sys/mman.h>
+# include <linux/kvm.h>
+
+static int
+kvm_ioctl(int fd, unsigned long cmd, const char *cmd_str, void *arg)
+{
+	int rc = ioctl(fd, cmd, arg);
+	if (rc < 0)
+		perror_msg_and_skip("%s", cmd_str);
+	return rc;
+}
+
+#define KVM_IOCTL(fd_, cmd_, arg_)	\
+	kvm_ioctl((fd_), (cmd_), #cmd_, (arg_))
+
+static const char dev[] = "/dev/kvm";
+static const char vm_dev[] = "anon_inode:kvm-vm";
+static const char vcpu_dev[] = "anon_inode:kvm-vcpu";
+static size_t page_size;
+
+extern const char code[];
+extern const unsigned short code_size;
+
+__asm__(
+	".type code, @object		\n"
+	"code:				\n"
+	"	mov $0xd80003f8, %edx	\n"
+	"	mov $'\n', %al		\n"
+	"	out %al, (%dx)		\n"
+	"	hlt			\n"
+	".size code, . - code		\n"
+	".type code_size, @object	\n"
+	"code_size:			\n"
+	"	.short . - code		\n"
+	".size code_size, . - code_size	\n"
+	);
+
+
+static void
+run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
+	void *const mem)
+{
+	/* Initialize CS to point at 0, via a read-modify-write of sregs. */
+	struct kvm_sregs sregs;
+	KVM_IOCTL(vcpu_fd, KVM_GET_SREGS, &sregs);
+	printf("ioctl(%d<%s>, KVM_GET_SREGS, {cs={base=%#jx, limit=%u, selector=%u"
+	       ", type=%u, present=%u, dpl=%u, db=%u, s=%u, l=%u, g=%u, avl=%u}"
+	       ", ...}) = 0\n", vcpu_fd, vcpu_dev, (uintmax_t) sregs.cs.base,
+	       sregs.cs.limit, sregs.cs.selector, sregs.cs.type,
+	       sregs.cs.present, sregs.cs.dpl, sregs.cs.db, sregs.cs.s,
+	       sregs.cs.l, sregs.cs.g, sregs.cs.avl);
+
+	sregs.cs.base = 0;
+	sregs.cs.selector = 0;
+	KVM_IOCTL(vcpu_fd, KVM_SET_SREGS, &sregs);
+	printf("ioctl(%d<%s>, KVM_SET_SREGS, {cs={base=%#jx, limit=%u"
+	       ", selector=%u, type=%u, present=%u, dpl=%u, db=%u, s=%u"
+	       ", l=%u, g=%u, avl=%u}, ...}) = 0\n",
+	       vcpu_fd, vcpu_dev, (uintmax_t) sregs.cs.base,
+	       sregs.cs.limit, sregs.cs.selector, sregs.cs.type,
+	       sregs.cs.present, sregs.cs.dpl, sregs.cs.db, sregs.cs.s,
+	       sregs.cs.l, sregs.cs.g, sregs.cs.avl);
+
+	/*
+	 * Initialize registers: instruction pointer for our code, addends,
+	 * and initial flags required by x86 architecture.
+	 */
+	struct kvm_regs regs = {
+		.rip = page_size,
+		.rax = 2,
+		.rbx = 2,
+		.rflags = 0x2,
+	};
+	KVM_IOCTL(vcpu_fd, KVM_SET_REGS, &regs);
+	printf("ioctl(%d<%s>, KVM_SET_REGS, {rax=%#jx, ..."
+	       ", rsp=%#jx, rbp=%#jx, ..., rip=%#jx, rflags=%#jx}) = 0\n",
+	       vcpu_fd, vcpu_dev, (uintmax_t) regs.rax,
+	       (uintmax_t) regs.rsp, (uintmax_t) regs.rbp,
+	       (uintmax_t) regs.rip, (uintmax_t) regs.rflags);
+
+	/* Copy the code */
+	memcpy(mem, code, code_size);
+
+	const char *p = "\n";
+
+	/* Repeatedly run code and handle VM exits. */
+	for (;;) {
+		KVM_IOCTL(vcpu_fd, KVM_RUN, NULL);
+		printf("ioctl(%d<%s>, KVM_RUN, 0) = 0\n", vcpu_fd, vcpu_dev);
+
+		switch (run->exit_reason) {
+		case KVM_EXIT_HLT:
+			if (p)
+				error_msg_and_fail("premature KVM_EXIT_HLT");
+			return;
+		case KVM_EXIT_IO:
+			if (run->io.direction == KVM_EXIT_IO_OUT
+			    && run->io.size == 1
+			    && run->io.port == 0x03f8
+			    && run->io.count == 1
+			    && run->io.data_offset < mmap_size
+			    && p && *p == ((char *) run)[run->io.data_offset])
+				p = NULL;
+			else
+				error_msg_and_fail("unhandled KVM_EXIT_IO");
+			break;
+		case KVM_EXIT_MMIO:
+			error_msg_and_fail("Got an unexpected MMIO exit:"
+					   " phys_addr %#llx,"
+					   " data %02x %02x %02x %02x"
+						" %02x %02x %02x %02x,"
+					   " len %u, is_write %hhu",
+					   (unsigned long long) run->mmio.phys_addr,
+					   run->mmio.data[0], run->mmio.data[1],
+					   run->mmio.data[2], run->mmio.data[3],
+					   run->mmio.data[4], run->mmio.data[5],
+					   run->mmio.data[6], run->mmio.data[7],
+					   run->mmio.len, run->mmio.is_write);
+
+		default:
+			error_msg_and_fail("exit_reason = %#x",
+					   run->exit_reason);
+		}
+	}
+}
+
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	int kvm = open(dev, O_RDWR);
+	if (kvm < 0)
+		perror_msg_and_skip("open: %s", dev);
+
+	/* Make sure we have the stable version of the API */
+	int ret = KVM_IOCTL(kvm, KVM_GET_API_VERSION, 0);
+	if (ret != KVM_API_VERSION)
+		error_msg_and_skip("KVM_GET_API_VERSION returned %d"
+				   ", KVM_API_VERSION is %d",
+				   kvm, KVM_API_VERSION);
+	printf("ioctl(%d<%s>, KVM_GET_API_VERSION, 0) = %d\n",
+	       kvm, dev, ret);
+
+	int vm_fd = KVM_IOCTL(kvm, KVM_CREATE_VM, 0);
+	printf("ioctl(%d<%s>, KVM_CREATE_VM, 0) = %d<%s>\n",
+	       kvm, dev, vm_fd, vm_dev);
+
+	/* Allocate one aligned page of guest memory to hold the code. */
+	page_size = get_page_size();
+	void *const mem = mmap(NULL, page_size, PROT_READ | PROT_WRITE,
+				  MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+	if (mem == MAP_FAILED)
+		perror_msg_and_fail("mmap page");
+
+	/* Map it to the second page frame (to avoid the real-mode IDT at 0). */
+	struct kvm_userspace_memory_region region = {
+		.slot = 0,
+		.guest_phys_addr = page_size,
+		.memory_size = page_size,
+		.userspace_addr = (uintptr_t) mem,
+	};
+	KVM_IOCTL(vm_fd, KVM_SET_USER_MEMORY_REGION, &region);
+	printf("ioctl(%d<%s>, KVM_SET_USER_MEMORY_REGION"
+	       ", {slot=0, flags=0, guest_phys_addr=%#lx, memory_size=%lu"
+	       ", userspace_addr=%p}) = 0\n", vm_fd, vm_dev,
+	       (unsigned long) page_size, (unsigned long) page_size, mem);
+
+	int vcpu_fd = KVM_IOCTL(vm_fd, KVM_CREATE_VCPU, NULL);
+	printf("ioctl(%d<%s>, KVM_CREATE_VCPU, 0) = %d<%s>\n",
+	       vm_fd, vm_dev, vcpu_fd, vcpu_dev);
+
+	/* Map the shared kvm_run structure and following data. */
+	ret = KVM_IOCTL(kvm, KVM_GET_VCPU_MMAP_SIZE, NULL);
+	struct kvm_run *run;
+	if (ret < (int) sizeof(*run))
+		error_msg_and_fail("KVM_GET_VCPU_MMAP_SIZE returned %d < %d",
+				   ret, (int) sizeof(*run));
+	printf("ioctl(%d<%s>, KVM_GET_VCPU_MMAP_SIZE, 0) = %d\n",
+	       kvm, dev, ret);
+
+	const size_t mmap_size = (ret + page_size - 1) & -page_size;
+	run = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE,
+		   MAP_SHARED, vcpu_fd, 0);
+	if (run == MAP_FAILED)
+		perror_msg_and_fail("mmap vcpu");
+
+	run_kvm(vcpu_fd, run, mmap_size, mem);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else /* !HAVE_LINUX_KVM_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_KVM_H && HAVE_STRUCT_KVM_REGS && "
+		    "HAVE_STRUCT_KVM_SREGS && "
+		    "HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION && "
+		    "(__x86_64__ || __i386__)")
+
+#endif
diff --git a/tests-mx32/ioctl_kvm_run.gen.test b/tests-mx32/ioctl_kvm_run.gen.test
new file mode 100755
index 0000000..7ab473b
--- /dev/null
+++ b/tests-mx32/ioctl_kvm_run.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_kvm_run +ioctl.test -a36 -y); do not edit.
+set -- -a36 -y
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_loop-nv.gen.test b/tests-mx32/ioctl_loop-nv.gen.test
new file mode 100755
index 0000000..d9da86a
--- /dev/null
+++ b/tests-mx32/ioctl_loop-nv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-nv +ioctl.test -a22 -e verbose=none); do not edit.
+set -- -a22 -e verbose=none
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_loop-nv.test b/tests-mx32/ioctl_loop-nv.test
deleted file mode 100755
index 7d59cc2..0000000
--- a/tests-mx32/ioctl_loop-nv.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check non-verbose decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl_loop-v.gen.test b/tests-mx32/ioctl_loop-v.gen.test
index 7fd9f66..b03bf78 100755
--- a/tests-mx32/ioctl_loop-v.gen.test
+++ b/tests-mx32/ioctl_loop-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_loop.gen.test b/tests-mx32/ioctl_loop.gen.test
index f7aee8e..d4ec35a 100755
--- a/tests-mx32/ioctl_loop.gen.test
+++ b/tests-mx32/ioctl_loop.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_mtd.c b/tests-mx32/ioctl_mtd.c
index 6a7d94a..1b5be75 100644
--- a/tests-mx32/ioctl_mtd.c
+++ b/tests-mx32/ioctl_mtd.c
@@ -30,22 +30,20 @@
 
 #include "tests.h"
 
-#include <errno.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <linux/ioctl.h>
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
-# include "mtd-abi.h"
-#else
+#ifdef HAVE_STRUCT_MTD_WRITE_REQ
+
+# include <errno.h>
+# include <inttypes.h>
+# include <stdio.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <linux/ioctl.h>
+# include <linux/version.h>
 # include <mtd/mtd-abi.h>
-#endif
 
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
-#define TEST_NULL_ARG(cmd) \
+# define TEST_NULL_ARG(cmd) \
 	do { \
 		ioctl(-1, cmd, 0); \
 		if (_IOC_DIR(cmd) == _IOC_WRITE) \
@@ -60,7 +58,7 @@
 			printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \
 	} while (0)
 
-#define TEST_erase_info_user(cmd, eiu)						\
+# define TEST_erase_info_user(cmd, eiu)						\
 	do {									\
 		ioctl(-1, cmd, eiu);						\
 		printf("ioctl(-1, MIXER_%s(%u) or %s, {start=%#x, length=%#x})"	\
@@ -122,9 +120,9 @@
 	ioctl(-1, MEMGETREGIONINFO, riu);
 	printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
 	       "MEMGETREGIONINFO"
-#ifdef __i386__
+# ifdef __i386__
 	       " or MTRRIOC_GET_PAGE_ENTRY"
-#endif
+# endif
 	       , riu->regionindex);
 
 	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
@@ -198,3 +196,9 @@
 	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_MTD_WRITE_REQ")
+
+#endif
diff --git a/tests-mx32/ioctl_mtd.gen.test b/tests-mx32/ioctl_mtd.gen.test
index cbc3104..65b0003 100755
--- a/tests-mx32/ioctl_mtd.gen.test
+++ b/tests-mx32/ioctl_mtd.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_nsfs.gen.test b/tests-mx32/ioctl_nsfs.gen.test
new file mode 100755
index 0000000..f9adc5f
--- /dev/null
+++ b/tests-mx32/ioctl_nsfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_nsfs +ioctl.test -esignal=none); do not edit.
+set -- -esignal=none
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_nsfs.test b/tests-mx32/ioctl_nsfs.test
deleted file mode 100755
index acdfb61..0000000
--- a/tests-mx32/ioctl_nsfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of NS_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -eioctl -esignal=none $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl_rtc-v.gen.test b/tests-mx32/ioctl_rtc-v.gen.test
index b534a02..820181b 100755
--- a/tests-mx32/ioctl_rtc-v.gen.test
+++ b/tests-mx32/ioctl_rtc-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_rtc.gen.test b/tests-mx32/ioctl_rtc.gen.test
index e430a82..310b558 100755
--- a/tests-mx32/ioctl_rtc.gen.test
+++ b/tests-mx32/ioctl_rtc.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_scsi.gen.test b/tests-mx32/ioctl_scsi.gen.test
index 23ac307..499bfc4 100755
--- a/tests-mx32/ioctl_scsi.gen.test
+++ b/tests-mx32/ioctl_scsi.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sg_io_v3.gen.test b/tests-mx32/ioctl_sg_io_v3.gen.test
index e7e5ea5..ef8fd14 100755
--- a/tests-mx32/ioctl_sg_io_v3.gen.test
+++ b/tests-mx32/ioctl_sg_io_v3.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sg_io_v4.gen.test b/tests-mx32/ioctl_sg_io_v4.gen.test
index 575ad96..4aa4e4e 100755
--- a/tests-mx32/ioctl_sg_io_v4.gen.test
+++ b/tests-mx32/ioctl_sg_io_v4.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sock_gifconf.gen.test b/tests-mx32/ioctl_sock_gifconf.gen.test
new file mode 100755
index 0000000..5d6fe2f
--- /dev/null
+++ b/tests-mx32/ioctl_sock_gifconf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sock_gifconf +ioctl.test -a28 -s1); do not edit.
+set -- -a28 -s1
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sock_gifconf.test b/tests-mx32/ioctl_sock_gifconf.test
deleted file mode 100755
index 22d7ea4..0000000
--- a/tests-mx32/ioctl_sock_gifconf.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of SIOCGIFCONF ioctl.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a28 -s1 -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/ioctl_uffdio.gen.test b/tests-mx32/ioctl_uffdio.gen.test
index 80fd2a6..ed73c5f 100755
--- a/tests-mx32/ioctl_uffdio.gen.test
+++ b/tests-mx32/ioctl_uffdio.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2.gen.test b/tests-mx32/ioctl_v4l2.gen.test
index cbd36ba..4c57144 100755
--- a/tests-mx32/ioctl_v4l2.gen.test
+++ b/tests-mx32/ioctl_v4l2.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioperm.gen.test b/tests-mx32/ioperm.gen.test
index 154d60a..bc69f69 100755
--- a/tests-mx32/ioperm.gen.test
+++ b/tests-mx32/ioperm.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/iopl.gen.test b/tests-mx32/iopl.gen.test
index 3d9704c..f7769d2 100755
--- a/tests-mx32/iopl.gen.test
+++ b/tests-mx32/iopl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests-mx32/ip_mreq.c b/tests-mx32/ip_mreq.c
index 3f4648c..12cc261 100644
--- a/tests-mx32/ip_mreq.c
+++ b/tests-mx32/ip_mreq.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,9 +32,9 @@
 #if defined IP_ADD_MEMBERSHIP && defined IPV6_ADD_MEMBERSHIP \
  && defined IPV6_JOIN_ANYCAST
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
 # include <net/if.h>
diff --git a/tests-mx32/ipc.gen.test b/tests-mx32/ipc.gen.test
index 5ed1f0d..0aa7578 100755
--- a/tests-mx32/ipc.gen.test
+++ b/tests-mx32/ipc.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-mx32/ipc_msg.gen.test b/tests-mx32/ipc_msg.gen.test
index f4fec80..b1f1f7e 100755
--- a/tests-mx32/ipc_msg.gen.test
+++ b/tests-mx32/ipc_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_msgbuf.c b/tests-mx32/ipc_msgbuf.c
index d108389..c4af1be 100644
--- a/tests-mx32/ipc_msgbuf.c
+++ b/tests-mx32/ipc_msgbuf.c
@@ -38,11 +38,16 @@
 
 static int msqid = -1;
 
-static void
+static int
 cleanup(void)
 {
-	msgctl(msqid, IPC_RMID, 0);
-	msqid = -1;
+	if (msqid != -1) {
+		int rc = msgctl(msqid, IPC_RMID, 0);
+		msqid = -1;
+		if (rc == -1)
+			return 77;
+	}
+	return 0;
 }
 
 int
@@ -59,10 +64,11 @@
 	msqid = msgget(IPC_PRIVATE, IPC_CREAT | S_IRWXU);
 	if (msqid == -1)
 		perror_msg_and_skip("msgget");
-	atexit(cleanup);
+	typedef void (*atexit_func)(void);
+	atexit((atexit_func) cleanup);
 	if (msgsnd(msqid, &msg, msgsz, 0) == -1)
 		perror_msg_and_skip("msgsnd");
 	if (msgrcv(msqid, &msg, msgsz, mtype, 0) != msgsz)
 		perror_msg_and_skip("msgrcv");
-	return 0;
+	return cleanup();
 }
diff --git a/tests-mx32/ipc_sem.gen.test b/tests-mx32/ipc_sem.gen.test
index 54159a6..a1c03d2 100755
--- a/tests-mx32/ipc_sem.gen.test
+++ b/tests-mx32/ipc_sem.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_shm.c b/tests-mx32/ipc_shm.c
index 66960ff..c793138 100644
--- a/tests-mx32/ipc_shm.c
+++ b/tests-mx32/ipc_shm.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +33,14 @@
 #include <stdlib.h>
 #include <sys/shm.h>
 
+#ifndef SHM_HUGE_SHIFT
+# define SHM_HUGE_SHIFT 26
+#endif
+
+#ifndef SHM_HUGE_MASK
+# define SHM_HUGE_MASK 0x3f
+#endif
+
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
@@ -64,18 +73,54 @@
 	#else
 		(size_t) 0x1e55c0de5dec0dedULL;
 	#endif
-	static const int bogus_flags = 0xface1e55;
-
+	static const unsigned int bogus_ipc_shm_flags =
+		IPC_CREAT | IPC_EXCL | SHM_HUGETLB | SHM_NORESERVE;
+	static const unsigned int huge_mask = SHM_HUGE_MASK << SHM_HUGE_SHIFT;
+	static const unsigned int huge_flags = 21 << SHM_HUGE_SHIFT;
+	int bogus_flags;
 	int rc;
 	struct shmid_ds ds;
 
-	rc = shmget(bogus_key, bogus_size, bogus_flags);
-	printf("shmget\\(%#llx, %zu, %s%s%s%#x\\|%#04o\\) += %s\n",
+	rc = shmget(bogus_key, bogus_size, 0);
+	printf("shmget\\(%#llx, %zu, 000\\) += %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),
+	       sprintrc_grep(rc));
+
+	rc = shmget(bogus_key, bogus_size, huge_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "21<<SHM_HUGE_SHIFT", 0, sprintrc_grep(rc));
+
+	bogus_flags = 0xface1e55 & ~(bogus_ipc_shm_flags | huge_mask);
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %#x\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       bogus_flags & ~0777,
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags |= bogus_ipc_shm_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
+	       bogus_flags & ~(0777 | bogus_ipc_shm_flags),
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags |= huge_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
+	       bogus_flags & ~(0777 | bogus_ipc_shm_flags | huge_mask),
+	       "21<<SHM_HUGE_SHIFT",
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags &= ~bogus_ipc_shm_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %#x\\|%s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       bogus_flags & ~(0777 | huge_mask),
+	       "21<<SHM_HUGE_SHIFT",
 	       bogus_flags & 0777, sprintrc_grep(rc));
 
 	id = shmget(private_key, 1, 0600);
diff --git a/tests-mx32/ipc_shm.gen.test b/tests-mx32/ipc_shm.gen.test
index 505eaba..8c6df9b 100755
--- a/tests-mx32/ipc_shm.gen.test
+++ b/tests-mx32/ipc_shm.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/kcmp.gen.test b/tests-mx32/kcmp.gen.test
index c073a39..139e909 100755
--- a/tests-mx32/kcmp.gen.test
+++ b/tests-mx32/kcmp.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-mx32/kexec_file_load.gen.test b/tests-mx32/kexec_file_load.gen.test
index aefaab3..1101349 100755
--- a/tests-mx32/kexec_file_load.gen.test
+++ b/tests-mx32/kexec_file_load.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
+run_strace_match_diff -s9 
diff --git a/tests-mx32/kexec_load.gen.test b/tests-mx32/kexec_load.gen.test
index 0af9527..6ce1831 100755
--- a/tests-mx32/kexec_load.gen.test
+++ b/tests-mx32/kexec_load.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
+run_strace_match_diff -s9 
diff --git a/tests-mx32/lchown.gen.test b/tests-mx32/lchown.gen.test
index b31e29d..d346c76 100755
--- a/tests-mx32/lchown.gen.test
+++ b/tests-mx32/lchown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
+run_strace_match_diff -a30 
diff --git a/tests-mx32/lchown32.gen.test b/tests-mx32/lchown32.gen.test
index 83be4bc..5da2349 100755
--- a/tests-mx32/lchown32.gen.test
+++ b/tests-mx32/lchown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 
diff --git a/tests-mx32/link.gen.test b/tests-mx32/link.gen.test
index b6db34d..2ec3f5b 100755
--- a/tests-mx32/link.gen.test
+++ b/tests-mx32/link.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/linkat.gen.test b/tests-mx32/linkat.gen.test
index 54b12b9..8bdf78b 100755
--- a/tests-mx32/linkat.gen.test
+++ b/tests-mx32/linkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/llseek.test b/tests-mx32/llseek.test
index 8dcd65d..9db68e3 100755
--- a/tests-mx32/llseek.test
+++ b/tests-mx32/llseek.test
@@ -7,5 +7,5 @@
 check_prog grep
 run_prog > /dev/null
 run_strace -e_llseek $args > "$EXP"
-grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
+grep -v '^_llseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/lookup_dcookie.gen.test b/tests-mx32/lookup_dcookie.gen.test
index 6357e19..616c705 100755
--- a/tests-mx32/lookup_dcookie.gen.test
+++ b/tests-mx32/lookup_dcookie.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/madvise.gen.test b/tests-mx32/madvise.gen.test
index bd36dad..a549cf9 100755
--- a/tests-mx32/madvise.gen.test
+++ b/tests-mx32/madvise.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-mx32/mbind.gen.test b/tests-mx32/mbind.gen.test
index a0d144d..c47e0fc 100755
--- a/tests-mx32/mbind.gen.test
+++ b/tests-mx32/mbind.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/membarrier.c b/tests-mx32/membarrier.c
index 73dd3b0..43f99f8 100644
--- a/tests-mx32/membarrier.c
+++ b/tests-mx32/membarrier.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,28 +45,49 @@
 	printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
 	       sprintrc(-1));
 	if (saved_errno != ENOSYS) {
+		const char *text_global;
 		const char *text;
 		int rc = syscall(__NR_membarrier, 0, 0);
 
-		switch (rc) {
-		case 1:
-			text = "MEMBARRIER_CMD_SHARED";
+		assert(rc >= 0);
+
+		text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
+
+		switch (rc & ~1) {
+		case 0:
+			text = "";
 			break;
-		case 1|8:
-			text = "MEMBARRIER_CMD_SHARED|"
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+		case 8:
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
 			break;
-		case 1|8|16:
-			text = "MEMBARRIER_CMD_SHARED|"
+		case 8|16:
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
+			break;
+
+		case 2|4|8|16:
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
 			break;
+
+		case 2|4|8|16|32|64:
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE";
+			break;
+
 		default:
 			error_msg_and_fail("membarrier returned %#x, does"
 					   " the test have to be updated?", rc);
 		}
-		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
-		       rc, text);
+		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
+		       rc, text_global, text[0] && text_global[0] ? "|" : "",
+		       text);
 	}
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/membarrier.gen.test b/tests-mx32/membarrier.gen.test
index 7a6ea10..6ae6e91 100755
--- a/tests-mx32/membarrier.gen.test
+++ b/tests-mx32/membarrier.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-mx32/memfd_create.c b/tests-mx32/memfd_create.c
index 4559b42..8334af8 100644
--- a/tests-mx32/memfd_create.c
+++ b/tests-mx32/memfd_create.c
@@ -1,3 +1,32 @@
+/*
+ * Check decoding of memfd_create syscall.
+ *
+ * Copyright (c) 2015-2017 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>
 #include "scno.h"
@@ -5,17 +34,62 @@
 #ifdef __NR_memfd_create
 
 # include <stdio.h>
+# include <stdint.h>
 # include <unistd.h>
 
+# ifdef HAVE_LINUX_MEMFD_H
+#  include <linux/memfd.h>
+# endif
+
+# ifndef MFD_HUGE_SHIFT
+#  define MFD_HUGE_SHIFT 26
+# endif
+
+# ifndef MFD_HUGE_MASK
+#  define MFD_HUGE_MASK 0x3f
+# endif
+
+static const char *errstr;
+
+static long
+k_memfd_create(const kernel_ulong_t name, const kernel_ulong_t flags)
+{
+	const long rc = syscall(__NR_memfd_create, name, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
 int
 main(void)
 {
-	static const char text[] = "strace";
-	int rc = syscall(__NR_memfd_create, text, 0xf);
+	const size_t size = 255 - (sizeof("memfd:") - 1) + 1;
+	char *pattern = tail_alloc(size);
+	fill_memory_ex(pattern, size, '0', 10);
 
-	printf("memfd_create(\"%s\", %s) = %s\n",
-	       text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8",
-	       sprintrc(rc));
+	k_memfd_create((uintptr_t) pattern, 0);
+	printf("memfd_create(\"%.*s\"..., 0) = %s\n",
+	       (int) size - 1, pattern, errstr);
+
+	kernel_ulong_t flags = (kernel_ulong_t) 0xfacefeed00000007ULL;
+	k_memfd_create((uintptr_t) pattern, flags);
+	printf("memfd_create(\"%.*s\"..., %s) = %s\n",
+	       (int) size - 1, pattern,
+	       "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB",
+	       errstr);
+
+	pattern[size - 1] = '\0';
+	flags = 30 << MFD_HUGE_SHIFT;
+	k_memfd_create((uintptr_t) pattern, flags);
+	printf("memfd_create(\"%s\", 30<<MFD_HUGE_SHIFT) = %s\n",
+	       pattern, errstr);
+
+	pattern += size - 1;
+	flags = (kernel_ulong_t) -1ULL;
+	k_memfd_create(0, flags);
+	flags = -1U & ~(7 | (MFD_HUGE_MASK << MFD_HUGE_SHIFT));
+	printf("memfd_create(NULL, MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB"
+	       "|%#x|%u<<MFD_HUGE_SHIFT) = %s\n",
+	       (unsigned int) flags, MFD_HUGE_MASK, errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/memfd_create.gen.test b/tests-mx32/memfd_create.gen.test
index 11762be..ccb5b52 100755
--- a/tests-mx32/memfd_create.gen.test
+++ b/tests-mx32/memfd_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/migrate_pages.gen.test b/tests-mx32/migrate_pages.gen.test
index 20b7cad..0ea017d 100755
--- a/tests-mx32/migrate_pages.gen.test
+++ b/tests-mx32/migrate_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-mx32/mincore.gen.test b/tests-mx32/mincore.gen.test
index dc40726..45e43e2 100755
--- a/tests-mx32/mincore.gen.test
+++ b/tests-mx32/mincore.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-mx32/mkdir.gen.test b/tests-mx32/mkdir.gen.test
index 80b4995..8d34c8b 100755
--- a/tests-mx32/mkdir.gen.test
+++ b/tests-mx32/mkdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/mkdirat.gen.test b/tests-mx32/mkdirat.gen.test
index 0f3fdae..eef8e52 100755
--- a/tests-mx32/mkdirat.gen.test
+++ b/tests-mx32/mkdirat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/mknod.gen.test b/tests-mx32/mknod.gen.test
index 870c88b..ce08e99 100755
--- a/tests-mx32/mknod.gen.test
+++ b/tests-mx32/mknod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests-mx32/mknodat.gen.test b/tests-mx32/mknodat.gen.test
index 747fcbe..dce7d44 100755
--- a/tests-mx32/mknodat.gen.test
+++ b/tests-mx32/mknodat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-mx32/mlock2.gen.test b/tests-mx32/mlock2.gen.test
index aa1818e..ff94eb8 100755
--- a/tests-mx32/mlock2.gen.test
+++ b/tests-mx32/mlock2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/mlockall.gen.test b/tests-mx32/mlockall.gen.test
index 06d8ca4..59ef67f 100755
--- a/tests-mx32/mlockall.gen.test
+++ b/tests-mx32/mlockall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-mx32/mmap64.gen.test b/tests-mx32/mmap64.gen.test
index 5e747b0..0ecd529 100755
--- a/tests-mx32/mmap64.gen.test
+++ b/tests-mx32/mmap64.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test ); do not edit.
+set -- 
 . "${srcdir=.}/mmap.test"
diff --git a/tests-mx32/modify_ldt.c b/tests-mx32/modify_ldt.c
new file mode 100644
index 0000000..1e26bda
--- /dev/null
+++ b/tests-mx32/modify_ldt.c
@@ -0,0 +1,137 @@
+/*
+ * Check decoding of modify_ldt syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_modify_ldt && defined HAVE_STRUCT_USER_DESC
+
+# include <errno.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "print_user_desc.c"
+
+void
+printrc(long rc)
+{
+#ifdef __x86_64__
+	int err = -rc;
+
+	/* Thanks, long return type of syscall(2) */
+	printf("%lld", zero_extend_signed_to_ull(rc));
+
+	if (err > 0 && err < 0x1000) {
+		errno = err;
+		printf(" %s (%m)", errno2name());
+	}
+#else
+	printf("%s", sprintrc(rc));
+#endif
+
+	puts("");
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_func =
+		(kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+	static const kernel_ulong_t bogus_bytecount =
+		(kernel_ulong_t) 0xdeadfacefa57beefULL;
+
+	struct user_desc *us = tail_alloc(sizeof(*us));
+	unsigned int *bogus_int = tail_alloc(sizeof(*bogus_int));
+	long rc;
+
+	fill_memory(us, sizeof(*us));
+
+	rc = syscall(__NR_modify_ldt, 0, 0, 0);
+	printf("modify_ldt(0, NULL, 0) = ");
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, (kernel_long_t) -1,
+		     bogus_bytecount);
+	printf("modify_ldt(%d, %#llx, %llu) = ",
+	       (int) bogus_func,
+	       zero_extend_signed_to_ull((kernel_long_t) -1),
+	       (unsigned long long) bogus_bytecount);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us + 1, 0);
+	printf("modify_ldt(%d, %p, 0) = ", (int) bogus_func, us + 1);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, 42);
+	printf("modify_ldt(%d, %p, 42) = ", (int) bogus_func, us);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us + 1, sizeof(*us));
+	printf("modify_ldt(%d, %p, %zu) = ",
+	       (int) bogus_func, us + 1, sizeof(*us));
+	printrc(rc);
+
+	/*
+	 * print_user_desc handles entry_number field in a special way for
+	 * get_thread_area syscall, so let's also check here that we don't
+	 * retrieve it accidentally.
+	 */
+	rc = syscall(__NR_modify_ldt, bogus_func, bogus_int, sizeof(*us));
+	printf("modify_ldt(%d, %p, %zu) = ",
+	       (int) bogus_func, bogus_int, sizeof(*us));
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, sizeof(*us));
+	printf("modify_ldt(%d, ", (int) bogus_func);
+	print_user_desc(us, NULL);
+	printf(", %zu) = ", sizeof(*us));
+	printrc(rc);
+
+	fill_memory_ex(us, sizeof(*us), 0x55, 80);
+	us->entry_number = -1;
+	us->base_addr = 0;
+	us->limit = 0;
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, sizeof(*us));
+	printf("modify_ldt(%d, ", (int) bogus_func);
+	print_user_desc(us, "-1");
+	printf(", %zu) = ", sizeof(*us));
+	printrc(rc);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_modify_ldt && HAVE_STRUCT_USER_DESC");
+
+#endif
diff --git a/tests-mx32/modify_ldt.gen.test b/tests-mx32/modify_ldt.gen.test
new file mode 100755
index 0000000..1a85b06
--- /dev/null
+++ b/tests-mx32/modify_ldt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (modify_ldt -a23 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 
diff --git a/tests-mx32/mount.gen.test b/tests-mx32/mount.gen.test
index 0b124bc..69bc99b 100755
--- a/tests-mx32/mount.gen.test
+++ b/tests-mx32/mount.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/move_pages.gen.test b/tests-mx32/move_pages.gen.test
index 2f060fa..9d472ef 100755
--- a/tests-mx32/move_pages.gen.test
+++ b/tests-mx32/move_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
+run_strace_match_diff -s3 
diff --git a/tests-mx32/munlockall.gen.test b/tests-mx32/munlockall.gen.test
index 18343cb..2e4e0c4 100755
--- a/tests-mx32/munlockall.gen.test
+++ b/tests-mx32/munlockall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests-mx32/nanosleep.gen.test b/tests-mx32/nanosleep.gen.test
index ea5b19a..41928de 100755
--- a/tests-mx32/nanosleep.gen.test
+++ b/tests-mx32/nanosleep.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/net-accept-connect.c b/tests-mx32/net-accept-connect.c
index 4045e05..0756c9b 100644
--- a/tests-mx32/net-accept-connect.c
+++ b/tests-mx32/net-accept-connect.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,15 +49,16 @@
 	struct sockaddr_un addr = {
 		.sun_family = AF_UNIX,
 	};
-	socklen_t len;
 
 	assert(ac == 2);
-	assert(strlen(av[1]) > 0);
+	socklen_t len = strlen(av[1]);
+	assert(len > 0 && len <= sizeof(addr.sun_path));
 
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
-	len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
-	if (len > sizeof(addr))
-		len = sizeof(addr);
+	if (++len > sizeof(addr.sun_path))
+		len = sizeof(addr.sun_path);
+
+	memcpy(addr.sun_path, av[1], len);
+	len += offsetof(struct sockaddr_un, sun_path);
 
 	unlink(av[1]);
 	close(0);
diff --git a/tests-mx32/net-y-unix.c b/tests-mx32/net-y-unix.c
index fbdf590..847c735 100644
--- a/tests-mx32/net-y-unix.c
+++ b/tests-mx32/net-y-unix.c
@@ -2,6 +2,7 @@
  * This file is part of net-y-unix strace test.
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#include "accept_compat.h"
+
 #define TEST_SOCKET "net-y-unix.socket"
 
 int
@@ -106,7 +108,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	int accept_fd = accept(listen_fd, accept_sa, len);
+	int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
@@ -177,7 +179,7 @@
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	accept_fd = accept(listen_fd, accept_sa, len);
+	accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	accept_inode = inode_of_sockfd(accept_fd);
diff --git a/tests-mx32/net-yy-inet.c b/tests-mx32/net-yy-inet.c
index c043920..c69bb17 100644
--- a/tests-mx32/net-yy-inet.c
+++ b/tests-mx32/net-yy-inet.c
@@ -2,7 +2,7 @@
  * This file is part of net-yy-inet strace test.
  *
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,6 +39,8 @@
 #include <netinet/tcp.h>
 #include <arpa/inet.h>
 
+#include "accept_compat.h"
+
 int
 main(void)
 {
@@ -105,7 +107,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	const int accept_fd = accept(listen_fd, accept_sa, len);
+	const int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	const unsigned int connect_port =
diff --git a/tests-mx32/net-yy-unix.c b/tests-mx32/net-yy-unix.c
index 21822db..40ac3a6 100644
--- a/tests-mx32/net-yy-unix.c
+++ b/tests-mx32/net-yy-unix.c
@@ -2,6 +2,7 @@
  * This file is part of net-yy-unix strace test.
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#include "accept_compat.h"
+
 #define TEST_SOCKET "net-yy-unix.socket"
 
 int
@@ -107,7 +109,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	int accept_fd = accept(listen_fd, accept_sa, len);
+	int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
@@ -180,7 +182,7 @@
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	accept_fd = accept(listen_fd, accept_sa, len);
+	accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	accept_inode = inode_of_sockfd(accept_fd);
diff --git a/tests-mx32/net.expected b/tests-mx32/net.expected
index 80dd070..e33e296 100644
--- a/tests-mx32/net.expected
+++ b/tests-mx32/net.expected
@@ -3,5 +3,5 @@
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +bind\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +listen\(0, 5\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +getsockname\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, \[19\]\) += 0
-[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[19->2\]\) += 1
+[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept4?\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[19->2\](, 0)?\) += 1
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +connect\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
diff --git a/tests-mx32/netlink_audit.gen.test b/tests-mx32/netlink_audit.gen.test
index 6511067..5c17038 100755
--- a/tests-mx32/netlink_audit.gen.test
+++ b/tests-mx32/netlink_audit.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_audit +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_audit +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_crypto.gen.test b/tests-mx32/netlink_crypto.gen.test
index b138099..fcb4c3d 100755
--- a/tests-mx32/netlink_crypto.gen.test
+++ b/tests-mx32/netlink_crypto.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_crypto +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_crypto +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_generic.gen.test b/tests-mx32/netlink_generic.gen.test
index e51f15c..6f304d3 100755
--- a/tests-mx32/netlink_generic.gen.test
+++ b/tests-mx32/netlink_generic.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_generic +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_generic +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_kobject_uevent.gen.test b/tests-mx32/netlink_kobject_uevent.gen.test
index 310a70b..46bdebd 100755
--- a/tests-mx32/netlink_kobject_uevent.gen.test
+++ b/tests-mx32/netlink_kobject_uevent.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_kobject_uevent +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_kobject_uevent +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_netfilter.gen.test b/tests-mx32/netlink_netfilter.gen.test
index fffb72b..94b3f36 100755
--- a/tests-mx32/netlink_netfilter.gen.test
+++ b/tests-mx32/netlink_netfilter.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_netfilter +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_netfilter +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_route.gen.test b/tests-mx32/netlink_route.gen.test
index 298dbf1..bd9c0d9 100755
--- a/tests-mx32/netlink_route.gen.test
+++ b/tests-mx32/netlink_route.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_route +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_route +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_selinux.gen.test b/tests-mx32/netlink_selinux.gen.test
index a8871d6..484ffae 100755
--- a/tests-mx32/netlink_selinux.gen.test
+++ b/tests-mx32/netlink_selinux.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_selinux +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_selinux +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/netlink_xfrm.gen.test b/tests-mx32/netlink_xfrm.gen.test
index 17f7444..3691898 100755
--- a/tests-mx32/netlink_xfrm.gen.test
+++ b/tests-mx32/netlink_xfrm.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_xfrm +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_xfrm +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_acct.gen.test b/tests-mx32/nfnetlink_acct.gen.test
index 7db2276..e3aa889 100755
--- a/tests-mx32/nfnetlink_acct.gen.test
+++ b/tests-mx32/nfnetlink_acct.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_cthelper.gen.test b/tests-mx32/nfnetlink_cthelper.gen.test
index 661c949..fa26e14 100755
--- a/tests-mx32/nfnetlink_cthelper.gen.test
+++ b/tests-mx32/nfnetlink_cthelper.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ctnetlink.gen.test b/tests-mx32/nfnetlink_ctnetlink.gen.test
index d4c4daa..9e9ad15 100755
--- a/tests-mx32/nfnetlink_ctnetlink.gen.test
+++ b/tests-mx32/nfnetlink_ctnetlink.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ctnetlink_exp.gen.test b/tests-mx32/nfnetlink_ctnetlink_exp.gen.test
index a5d83f9..4ed3707 100755
--- a/tests-mx32/nfnetlink_ctnetlink_exp.gen.test
+++ b/tests-mx32/nfnetlink_ctnetlink_exp.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_cttimeout.gen.test b/tests-mx32/nfnetlink_cttimeout.gen.test
index e197f00..ab42fc7 100755
--- a/tests-mx32/nfnetlink_cttimeout.gen.test
+++ b/tests-mx32/nfnetlink_cttimeout.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ipset.gen.test b/tests-mx32/nfnetlink_ipset.gen.test
index 418437a..ea129fb 100755
--- a/tests-mx32/nfnetlink_ipset.gen.test
+++ b/tests-mx32/nfnetlink_ipset.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_nft_compat.gen.test b/tests-mx32/nfnetlink_nft_compat.gen.test
index c3dc890..aff04c5 100755
--- a/tests-mx32/nfnetlink_nft_compat.gen.test
+++ b/tests-mx32/nfnetlink_nft_compat.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_nftables.gen.test b/tests-mx32/nfnetlink_nftables.gen.test
index 25e90e8..c23ad33 100755
--- a/tests-mx32/nfnetlink_nftables.gen.test
+++ b/tests-mx32/nfnetlink_nftables.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_osf.gen.test b/tests-mx32/nfnetlink_osf.gen.test
index 2689574..aa54090 100755
--- a/tests-mx32/nfnetlink_osf.gen.test
+++ b/tests-mx32/nfnetlink_osf.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_queue.gen.test b/tests-mx32/nfnetlink_queue.gen.test
index 739fb17..965e0d2 100755
--- a/tests-mx32/nfnetlink_queue.gen.test
+++ b/tests-mx32/nfnetlink_queue.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ulog.gen.test b/tests-mx32/nfnetlink_ulog.gen.test
index 850ebaf..825ad9f 100755
--- a/tests-mx32/nfnetlink_ulog.gen.test
+++ b/tests-mx32/nfnetlink_ulog.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr.gen.test b/tests-mx32/nlattr.gen.test
index 105801b..0ea2f18 100755
--- a/tests-mx32/nlattr.gen.test
+++ b/tests-mx32/nlattr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_br_port_msg.gen.test b/tests-mx32/nlattr_br_port_msg.gen.test
index f843797..c957275 100755
--- a/tests-mx32/nlattr_br_port_msg.gen.test
+++ b/tests-mx32/nlattr_br_port_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_br_port_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_br_port_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_crypto_user_alg.gen.test b/tests-mx32/nlattr_crypto_user_alg.gen.test
index 81d866e..e52b6be 100755
--- a/tests-mx32/nlattr_crypto_user_alg.gen.test
+++ b/tests-mx32/nlattr_crypto_user_alg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_crypto_user_alg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_crypto_user_alg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_dcbmsg.gen.test b/tests-mx32/nlattr_dcbmsg.gen.test
index d78bfcf..f9ef39f 100755
--- a/tests-mx32/nlattr_dcbmsg.gen.test
+++ b/tests-mx32/nlattr_dcbmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_dcbmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_dcbmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_fib_rule_hdr.gen.test b/tests-mx32/nlattr_fib_rule_hdr.gen.test
index cbdad4d..fb61343 100755
--- a/tests-mx32/nlattr_fib_rule_hdr.gen.test
+++ b/tests-mx32/nlattr_fib_rule_hdr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_fib_rule_hdr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_fib_rule_hdr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ifaddrlblmsg.gen.test b/tests-mx32/nlattr_ifaddrlblmsg.gen.test
index 0c41dbe..0f51430 100755
--- a/tests-mx32/nlattr_ifaddrlblmsg.gen.test
+++ b/tests-mx32/nlattr_ifaddrlblmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrlblmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrlblmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ifaddrmsg.gen.test b/tests-mx32/nlattr_ifaddrmsg.gen.test
index d659e00..3fb81bd 100755
--- a/tests-mx32/nlattr_ifaddrmsg.gen.test
+++ b/tests-mx32/nlattr_ifaddrmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ifinfomsg.gen.test b/tests-mx32/nlattr_ifinfomsg.gen.test
index 618df14..b9a6456 100755
--- a/tests-mx32/nlattr_ifinfomsg.gen.test
+++ b/tests-mx32/nlattr_ifinfomsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifinfomsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifinfomsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ifla_brport.gen.test b/tests-mx32/nlattr_ifla_brport.gen.test
index 48bfed4..6758d8d 100755
--- a/tests-mx32/nlattr_ifla_brport.gen.test
+++ b/tests-mx32/nlattr_ifla_brport.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_brport +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_brport +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ifla_port.gen.test b/tests-mx32/nlattr_ifla_port.gen.test
index 605bf04..ecea89a 100755
--- a/tests-mx32/nlattr_ifla_port.gen.test
+++ b/tests-mx32/nlattr_ifla_port.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_port +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_port +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ifla_xdp.gen.test b/tests-mx32/nlattr_ifla_xdp.gen.test
index a30e843..c6e0fab 100755
--- a/tests-mx32/nlattr_ifla_xdp.gen.test
+++ b/tests-mx32/nlattr_ifla_xdp.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_inet_diag_msg.gen.test b/tests-mx32/nlattr_inet_diag_msg.gen.test
index 953a767..953a23d 100755
--- a/tests-mx32/nlattr_inet_diag_msg.gen.test
+++ b/tests-mx32/nlattr_inet_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_inet_diag_req_compat.gen.test b/tests-mx32/nlattr_inet_diag_req_compat.gen.test
index bf8b65c..7b577dc 100755
--- a/tests-mx32/nlattr_inet_diag_req_compat.gen.test
+++ b/tests-mx32/nlattr_inet_diag_req_compat.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_compat +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_compat +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_inet_diag_req_v2.gen.test b/tests-mx32/nlattr_inet_diag_req_v2.gen.test
index 0260bc4..01c73a1 100755
--- a/tests-mx32/nlattr_inet_diag_req_v2.gen.test
+++ b/tests-mx32/nlattr_inet_diag_req_v2.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_v2 +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_v2 +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_mdba_mdb_entry.gen.test b/tests-mx32/nlattr_mdba_mdb_entry.gen.test
index 67253e8..8d09a03 100755
--- a/tests-mx32/nlattr_mdba_mdb_entry.gen.test
+++ b/tests-mx32/nlattr_mdba_mdb_entry.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_mdba_router_port.gen.test b/tests-mx32/nlattr_mdba_router_port.gen.test
index ce9ea14..97230e8 100755
--- a/tests-mx32/nlattr_mdba_router_port.gen.test
+++ b/tests-mx32/nlattr_mdba_router_port.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ndmsg.gen.test b/tests-mx32/nlattr_ndmsg.gen.test
index 06b8f1a..1d2763b 100755
--- a/tests-mx32/nlattr_ndmsg.gen.test
+++ b/tests-mx32/nlattr_ndmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_ndtmsg.gen.test b/tests-mx32/nlattr_ndtmsg.gen.test
index d75ad57..bf7d122 100755
--- a/tests-mx32/nlattr_ndtmsg.gen.test
+++ b/tests-mx32/nlattr_ndtmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndtmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndtmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_netconfmsg.gen.test b/tests-mx32/nlattr_netconfmsg.gen.test
index 9a061cb..27f3a66 100755
--- a/tests-mx32/nlattr_netconfmsg.gen.test
+++ b/tests-mx32/nlattr_netconfmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netconfmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netconfmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_netlink_diag_msg.gen.test b/tests-mx32/nlattr_netlink_diag_msg.gen.test
index aa6aabf..eacc6df 100755
--- a/tests-mx32/nlattr_netlink_diag_msg.gen.test
+++ b/tests-mx32/nlattr_netlink_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netlink_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netlink_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_nlmsgerr.gen.test b/tests-mx32/nlattr_nlmsgerr.gen.test
index 23df500..f06ea42 100755
--- a/tests-mx32/nlattr_nlmsgerr.gen.test
+++ b/tests-mx32/nlattr_nlmsgerr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_nlmsgerr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_nlmsgerr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_packet_diag_msg.gen.test b/tests-mx32/nlattr_packet_diag_msg.gen.test
index 6af8749..7177ea2 100755
--- a/tests-mx32/nlattr_packet_diag_msg.gen.test
+++ b/tests-mx32/nlattr_packet_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag-v.sh"
diff --git a/tests-mx32/nlattr_rtgenmsg.gen.test b/tests-mx32/nlattr_rtgenmsg.gen.test
index 0ff6d13..37ec842 100755
--- a/tests-mx32/nlattr_rtgenmsg.gen.test
+++ b/tests-mx32/nlattr_rtgenmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtgenmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtgenmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_rtmsg.gen.test b/tests-mx32/nlattr_rtmsg.gen.test
index 5525143..f075529 100755
--- a/tests-mx32/nlattr_rtmsg.gen.test
+++ b/tests-mx32/nlattr_rtmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_smc_diag_msg.gen.test b/tests-mx32/nlattr_smc_diag_msg.gen.test
index 3e6407e..e64d21e 100755
--- a/tests-mx32/nlattr_smc_diag_msg.gen.test
+++ b/tests-mx32/nlattr_smc_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_smc_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_smc_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tc_stats.gen.test b/tests-mx32/nlattr_tc_stats.gen.test
index 72780d4..11cadd2 100755
--- a/tests-mx32/nlattr_tc_stats.gen.test
+++ b/tests-mx32/nlattr_tc_stats.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tca_stab.gen.test b/tests-mx32/nlattr_tca_stab.gen.test
index 14cd1a5..81d36c7 100755
--- a/tests-mx32/nlattr_tca_stab.gen.test
+++ b/tests-mx32/nlattr_tca_stab.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tcamsg.gen.test b/tests-mx32/nlattr_tcamsg.gen.test
index 7c30207..1a6408d 100755
--- a/tests-mx32/nlattr_tcamsg.gen.test
+++ b/tests-mx32/nlattr_tcamsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcamsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcamsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tcmsg.gen.test b/tests-mx32/nlattr_tcmsg.gen.test
index f5bf7a9..7e70ca2 100755
--- a/tests-mx32/nlattr_tcmsg.gen.test
+++ b/tests-mx32/nlattr_tcmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_unix_diag_msg.gen.test b/tests-mx32/nlattr_unix_diag_msg.gen.test
index d913afc..fd5b828 100755
--- a/tests-mx32/nlattr_unix_diag_msg.gen.test
+++ b/tests-mx32/nlattr_unix_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_unix_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_unix_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nsyscalls-d.c b/tests-mx32/nsyscalls-d.c
new file mode 100644
index 0000000..1525dea
--- /dev/null
+++ b/tests-mx32/nsyscalls-d.c
@@ -0,0 +1,2 @@
+#define DEBUG_PRINT 1
+#include "nsyscalls.c"
diff --git a/tests-mx32/nsyscalls-d.test b/tests-mx32/nsyscalls-d.test
new file mode 100755
index 0000000..2cca32f
--- /dev/null
+++ b/tests-mx32/nsyscalls-d.test
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Check decoding of out-of-range syscalls along with debug ouput
+
+. "${srcdir=.}/init.sh"
+
+: ${debug_flag=-d}
+NAME=nsyscalls-d
+
+if [ "$MIPS_ABI" = "o32" ]; then
+	syscall=syscall
+	[ -z "$debug_flag" ] ||
+		skip_ "mips $MIPS_ABI is not supported by this test yet"
+else
+	syscall=none
+fi
+
+run_strace $debug_flag -e trace=$syscall ../$NAME "$STRACE_EXE" 9 \
+	2> "$LOG-err-all" > "$EXP" 9> "$EXP-err"
+
+[ -n "$debug_flag" ] || > "$EXP-err"
+
+grep "invalid syscall" "$LOG-err-all" > "$LOG-err"
+
+match_diff "$LOG" "$EXP"
+match_diff "$LOG-err" "$EXP-err"
diff --git a/tests-mx32/nsyscalls-nd.test b/tests-mx32/nsyscalls-nd.test
new file mode 100755
index 0000000..7d2f1e1
--- /dev/null
+++ b/tests-mx32/nsyscalls-nd.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+debug_flag=
+. "${srcdir=.}"/nsyscalls-d.test
diff --git a/tests-mx32/nsyscalls.c b/tests-mx32/nsyscalls.c
index 29f444a..9f74867 100644
--- a/tests-mx32/nsyscalls.c
+++ b/tests-mx32/nsyscalls.c
@@ -2,7 +2,7 @@
  * Check decoding of out-of-range syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +32,7 @@
 #include "sysent.h"
 #include <errno.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <asm/unistd.h>
 
@@ -43,6 +44,10 @@
 
 #include "sysent_shorthand_undefs.h"
 
+#ifndef DEBUG_PRINT
+# define DEBUG_PRINT 0
+#endif
+
 #if defined __X32_SYSCALL_BIT && defined __NR_read \
  && (__X32_SYSCALL_BIT & __NR_read) != 0
 # define SYSCALL_BIT __X32_SYSCALL_BIT
@@ -50,6 +55,11 @@
 # define SYSCALL_BIT 0
 #endif
 
+#if DEBUG_PRINT
+static const char *strace_name;
+static FILE *debug_out;
+#endif
+
 static void
 test_syscall(const unsigned long nr)
 {
@@ -64,13 +74,19 @@
 
 	long rc = syscall(nr | SYSCALL_BIT,
 			  a[0], a[1], a[2], a[3], a[4], a[5]);
+
+#if DEBUG_PRINT
+	fprintf(debug_out, "%s: pid %d invalid syscall %#lx\n",
+		strace_name, getpid(), nr | SYSCALL_BIT);
+#endif
+
 #ifdef LINUX_MIPSO32
 	printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)"
 	       " = %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,
+	printf("syscall_%#lx(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)"
+	       " = %ld (errno %d)\n", nr | SYSCALL_BIT,
 	       (unsigned long long) a[0],
 	       (unsigned long long) a[1],
 	       (unsigned long long) a[2],
@@ -82,8 +98,26 @@
 }
 
 int
-main(void)
+main(int argc, char *argv[])
 {
+#if DEBUG_PRINT
+	if (argc < 3)
+		error_msg_and_fail("Not enough arguments. "
+				   "Usage: %s STRACE_NAME DEBUG_OUT_FD",
+				   argv[0]);
+
+	strace_name = argv[1];
+
+	errno = 0;
+	int debug_out_fd = strtol(argv[2], NULL, 0);
+	if (errno)
+		error_msg_and_fail("Not a number: %s", argv[2]);
+
+	debug_out = fdopen(debug_out_fd, "a");
+	if (!debug_out)
+		perror_msg_and_fail("fdopen: %d", debug_out_fd);
+#endif
+
 	test_syscall(ARRAY_SIZE(syscallent));
 
 #ifdef SYS_socket_subcall
diff --git a/tests-mx32/old_mmap-P.c b/tests-mx32/old_mmap-P.c
new file mode 100644
index 0000000..bb28e88
--- /dev/null
+++ b/tests-mx32/old_mmap-P.c
@@ -0,0 +1,3 @@
+#define TEST_FD 9
+#define PATH_TRACING
+#include "old_mmap.c"
diff --git a/tests-mx32/old_mmap-P.gen.test b/tests-mx32/old_mmap-P.gen.test
new file mode 100755
index 0000000..b1de934
--- /dev/null
+++ b/tests-mx32/old_mmap-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap-P -e trace=mmap -P "/dev/full" 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=mmap -P "/dev/full" 9>>/dev/full
diff --git a/tests-mx32/old_mmap-v-none.c b/tests-mx32/old_mmap-v-none.c
new file mode 100644
index 0000000..033503c
--- /dev/null
+++ b/tests-mx32/old_mmap-v-none.c
@@ -0,0 +1 @@
+#include "old_mmap.c"
diff --git a/tests-mx32/old_mmap-v-none.gen.test b/tests-mx32/old_mmap-v-none.gen.test
new file mode 100755
index 0000000..a568d98
--- /dev/null
+++ b/tests-mx32/old_mmap-v-none.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap-v-none -a11 -e trace=mmap -e verbose=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap -e verbose=none
diff --git a/tests-mx32/old_mmap.c b/tests-mx32/old_mmap.c
index 2725fb7..35ec428 100644
--- a/tests-mx32/old_mmap.c
+++ b/tests-mx32/old_mmap.c
@@ -2,6 +2,7 @@
  * Check decoding of "old mmap" edition of mmap syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,57 +37,64 @@
  * it would require additional efforts to filter out mmap calls made by glibc.
  */
 
-#if defined __NR_mmap && \
-(   defined __arm__ \
- || defined __i386__ \
- || (defined __s390__ && !defined __s390x__) \
-)
+#if defined __NR_mmap \
+	&& (defined __arm__ || defined __i386__ || defined __m68k__ \
+		|| defined __s390__ || defined __s390x__) \
+	&& (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))
 
 # include <stdio.h>
 # include <string.h>
 # include <sys/mman.h>
 # include <unistd.h>
 
+# ifndef TEST_FD
+#  define TEST_FD -2LU
+# endif
+
 int
 main(void)
 {
 	long rc = syscall(__NR_mmap, 0);
+# ifndef PATH_TRACING
 	printf("mmap(NULL) = %ld %s (%m)\n", rc, errno2name());
+# endif
 
-	const unsigned int args1_c[6] = {
-		0xdeadbeef,		/* addr */
-		0xfacefeed,		/* len */
+	const unsigned long args1_c[6] = {
+		(unsigned long) 0xbadc0deddeadbeefULL,	/* addr */
+		(unsigned long) 0xdeefacedfacefeedULL,	/* len */
 		PROT_READ|PROT_EXEC,	/* prot */
 		MAP_FILE|MAP_FIXED,	/* flags */
-		-2U,			/* fd */
-		0xbadc0ded		/* offset */
+		TEST_FD,		/* fd */
+		(unsigned long) 0xdecaffedbadc0dedULL	/* offset */
 	};
-	const unsigned int page_size = get_page_size();
-	const unsigned int args2_c[6] = {
+	const unsigned long page_size = get_page_size();
+	const unsigned long args2_c[6] = {
 		0,
 		page_size,
 		PROT_READ|PROT_WRITE,
 		MAP_PRIVATE|MAP_ANONYMOUS,
-		-1U,
-		0xfaced000 & -page_size
+		-1LU,
+		(unsigned long) 0xda7a1057faced000ULL & -page_size
 	};
 	void *args = tail_memdup(args1_c, sizeof(args1_c));
 
 	rc = syscall(__NR_mmap, args);
-	printf("mmap(%#x, %u, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
-	       ", %d, %#x) = %ld %s (%m)\n",
-	       args1_c[0], args1_c[1], args1_c[4], args1_c[5],
+	printf("mmap(%#lx, %lu, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
+	       ", %d, %#lx) = %ld %s (%m)\n",
+	       args1_c[0], args1_c[1], (int) args1_c[4], args1_c[5],
 	       rc, errno2name());
 
 	memcpy(args, args2_c, sizeof(args2_c));
 	rc = syscall(__NR_mmap, args);
-	printf("mmap(NULL, %u, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
-	       ", %d, %#x) = %#lx\n",
-	       args2_c[1], args2_c[4], args2_c[5], rc);
+# ifndef PATH_TRACING
+	printf("mmap(NULL, %lu, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
+	       ", %d, %#lx) = %#lx\n",
+	       args2_c[1], (int) args2_c[4], args2_c[5], rc);
+# endif
 
 	void *addr = (void *) rc;
 	if (mprotect(addr, page_size, PROT_NONE))
-		perror_msg_and_fail("mprotect(%p, %u, PROT_NONE)",
+		perror_msg_and_fail("mprotect(%p, %lu, PROT_NONE)",
 				    addr, page_size);
 
 	puts("+++ exited with 0 +++");
@@ -95,7 +103,9 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_mmap && (__arm__ || __i386__"
-		    " || (__s390__ && !__s390x__))")
+SKIP_MAIN_UNDEFINED("defined __NR_mmap "
+	"&& (defined __arm__ || defined __i386__ || defined __m68k__ "
+		"|| defined __s390__ || defined __s390x__) "
+	"&& (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))")
 
 #endif
diff --git a/tests-mx32/oldselect-P.c b/tests-mx32/oldselect-P.c
new file mode 100644
index 0000000..67e2134
--- /dev/null
+++ b/tests-mx32/oldselect-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "oldselect.c"
diff --git a/tests-mx32/oldselect-P.gen.test b/tests-mx32/oldselect-P.gen.test
new file mode 100755
index 0000000..3486ffd
--- /dev/null
+++ b/tests-mx32/oldselect-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-P -a13 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/oldselect-efault-P.c b/tests-mx32/oldselect-efault-P.c
new file mode 100644
index 0000000..9ebf73d
--- /dev/null
+++ b/tests-mx32/oldselect-efault-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "oldselect-efault.c"
diff --git a/tests-mx32/oldselect-efault-P.gen.test b/tests-mx32/oldselect-efault-P.gen.test
new file mode 100755
index 0000000..a3d7176
--- /dev/null
+++ b/tests-mx32/oldselect-efault-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/oldselect-efault.c b/tests-mx32/oldselect-efault.c
new file mode 100644
index 0000000..3c44334
--- /dev/null
+++ b/tests-mx32/oldselect-efault.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2015-2018 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_select && defined __NR__newselect \
+ && __NR_select != __NR__newselect \
+ && !defined __sparc__
+
+# include <stdint.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <sys/select.h>
+
+static const char *errstr;
+
+static long
+xselect(const kernel_ulong_t args)
+{
+	static const kernel_ulong_t dummy = F8ILL_KULONG_MASK | 0xfacefeed;
+	long rc = syscall(__NR_select, args, dummy, dummy, dummy, dummy, dummy);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	unsigned long *const args = tail_alloc(sizeof(*args) * 4);
+	memset(args, 0, sizeof(*args) * 4);
+
+	xselect(0);
+#ifndef PATH_TRACING_FD
+	printf("select(NULL) = %s\n", errstr);
+#endif
+
+	xselect((uintptr_t) args);
+#ifndef PATH_TRACING_FD
+	printf("select(%p) = %s\n", args, errstr);
+#endif
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
+		    " && __NR_select != __NR__newselect"
+		    " && !defined __sparc__")
+
+#endif
diff --git a/tests-mx32/oldselect-efault.gen.test b/tests-mx32/oldselect-efault.gen.test
new file mode 100755
index 0000000..bfeb557
--- /dev/null
+++ b/tests-mx32/oldselect-efault.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-efault -a13 -e trace=select); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select
diff --git a/tests-mx32/oldselect.c b/tests-mx32/oldselect.c
index 7413fc3..7f548f8 100644
--- a/tests-mx32/oldselect.c
+++ b/tests-mx32/oldselect.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,37 +30,38 @@
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
- && !defined SPARC
+ && !defined __sparc__
 
-# include <unistd.h>
-# include <sys/select.h>
+# define TEST_SYSCALL_NR __NR_select
+# define TEST_SYSCALL_STR "select"
+# define xselect xselect
+# include "xselect.c"
 
-int
-main(void)
+static uint32_t *args;
+
+static long
+xselect(const kernel_ulong_t nfds,
+	const kernel_ulong_t rs,
+	const kernel_ulong_t ws,
+	const kernel_ulong_t es,
+	const kernel_ulong_t tv)
 {
-	int fds[2];
-	fd_set r = {}, w = {};
-	struct timeval timeout = { .tv_sec = 0, .tv_usec = 42 };
-	long args[] = {
-		2, (long) &r, (long) &w, 0, (long) &timeout,
-		0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded, 0xdeadbeef
-	};
-
-	(void) close(0);
-	(void) close(1);
-	if (pipe(fds))
-		perror_msg_and_fail("pipe");
-
-	FD_SET(0, &w);
-	FD_SET(1, &r);
-	if (syscall(__NR_select, args))
-		perror_msg_and_skip("select");
-
-	return 0;
+	if (!args)
+		args = tail_alloc(sizeof(*args) * 5);
+	args[0] = nfds;
+	args[1] = rs;
+	args[2] = ws;
+	args[3] = es;
+	args[4] = tv;
+	long rc = syscall(TEST_SYSCALL_NR, args);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect")
+SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
+		    " && __NR_select != __NR__newselect"
+		    " && !defined __sparc__")
 
 #endif
diff --git a/tests-mx32/oldselect.expected b/tests-mx32/oldselect.expected
deleted file mode 100644
index d6e7f3c..0000000
--- a/tests-mx32/oldselect.expected
+++ /dev/null
@@ -1,2 +0,0 @@
-select(2, [1], [0], NULL, {tv_sec=0, tv_usec=42}) = 0 (Timeout)
-+++ exited with 0 +++
diff --git a/tests-mx32/oldselect.gen.test b/tests-mx32/oldselect.gen.test
new file mode 100755
index 0000000..1f10cbe
--- /dev/null
+++ b/tests-mx32/oldselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect -a13 -e trace=select); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select
diff --git a/tests-mx32/oldselect.test b/tests-mx32/oldselect.test
deleted file mode 100755
index 35661ad..0000000
--- a/tests-mx32/oldselect.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check old select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a34 -eselect $args
-match_diff
-
-exit 0
diff --git a/tests-mx32/open.c b/tests-mx32/open.c
index 01e89b0..fe486c5 100644
--- a/tests-mx32/open.c
+++ b/tests-mx32/open.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,7 +31,7 @@
 
 #ifdef __NR_open
 
-# include <fcntl.h>
+# include <asm/fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
@@ -56,16 +57,11 @@
 		       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
+# ifdef O_TMPFILE
 	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 */
+	printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+	       sample, sprintrc(fd));
+# endif /* O_TMPFILE */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/openat.c b/tests-mx32/openat.c
index 1d6765c..8c97441 100644
--- a/tests-mx32/openat.c
+++ b/tests-mx32/openat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Katerina Koukiou <k.koukiou@gmail.com>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,17 +29,36 @@
 #include "tests.h"
 #include <asm/unistd.h>
 
-#if defined __NR_openat
+#ifdef __NR_openat
 
-# include <fcntl.h>
+# include <asm/fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+#ifdef O_TMPFILE
+/* The kernel & C libraries often inline O_DIRECTORY. */
+# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
+#else
+# define STRACE_O_TMPFILE 0
+#endif
+
+static const char sample[] = "openat.sample";
+
+static void
+test_mode_flag(unsigned int mode_val, const char *mode_str,
+	       unsigned int flag_val, const char *flag_str)
+{
+	long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0);
+	printf("openat(-1, \"%s\", %s%s%s%s) = %s\n",
+	       sample, mode_str,
+	       flag_val ? "|" : "", flag_str,
+	       flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "",
+	       sprintrc(rc));
+}
+
 int
 main(void)
 {
-	static const char sample[] = "openat.sample";
-
 	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));
@@ -53,6 +73,54 @@
 		       sample, sprintrc(fd));
 	}
 
+	struct {
+		unsigned int val;
+		const char *str;
+	} modes[] = {
+		{ ARG_STR(O_RDONLY) },
+		{ ARG_STR(O_WRONLY) },
+		{ ARG_STR(O_RDWR) },
+		{ ARG_STR(O_ACCMODE) }
+	}, flags[] = {
+		{ ARG_STR(O_APPEND) },
+		{ ARG_STR(O_DIRECT) },
+		{ ARG_STR(O_DIRECTORY) },
+		{ ARG_STR(O_EXCL) },
+		{ ARG_STR(O_LARGEFILE) },
+		{ ARG_STR(O_NOATIME) },
+		{ ARG_STR(O_NOCTTY) },
+		{ ARG_STR(O_NOFOLLOW) },
+		{ ARG_STR(O_NONBLOCK) },
+		{ ARG_STR(O_SYNC) },
+		{ ARG_STR(O_TRUNC) },
+		{ ARG_STR(O_CREAT) },
+# ifdef O_CLOEXEC
+		{ ARG_STR(O_CLOEXEC) },
+# endif
+# ifdef O_DSYNC
+		{ ARG_STR(O_DSYNC) },
+# endif
+# ifdef __O_SYNC
+		{ ARG_STR(__O_SYNC) },
+# endif
+# ifdef O_PATH
+		{ ARG_STR(O_PATH) },
+# endif
+# ifdef O_TMPFILE
+		{ ARG_STR(O_TMPFILE) },
+# endif
+# ifdef __O_TMPFILE
+		{ ARG_STR(__O_TMPFILE) },
+# endif
+		{ ARG_STR(0x80000000) },
+		{ 0, "" }
+	};
+
+	for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m)
+		for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f)
+			test_mode_flag(modes[m].val, modes[m].str,
+				       flags[f].val, flags[f].str);
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests-mx32/openat.gen.test b/tests-mx32/openat.gen.test
index fe29e1c..29dd349 100755
--- a/tests-mx32/openat.gen.test
+++ b/tests-mx32/openat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -a36 -P $NAME.sample); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
+run_strace_match_diff -a36 -P $NAME.sample
diff --git a/tests-mx32/options-syntax.test b/tests-mx32/options-syntax.test
index 2e459c9..f81dd99 100755
--- a/tests-mx32/options-syntax.test
+++ b/tests-mx32/options-syntax.test
@@ -3,7 +3,7 @@
 # Check strace options syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2017 The strace developers.
+# Copyright (c) 2016-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,33 +37,10 @@
 check_e "Syscall 'chdir' for -b isn't supported" -b chdir
 check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
 
-check_e "invalid system call '-1'" -e-1
-check_e "invalid system call '-2'" -e -2
-check_e "invalid system call '-3'" -etrace=-3
-check_e "invalid system call '-4'" -e trace=-4
-check_e "invalid system call '-5'" -e trace=1,-5
-check_e "invalid system call '/non_syscall'" -e trace=/non_syscall
-check_e "invalid system call '2147483647'" -e 2147483647
-check_e "invalid system call '2147483648'" -e 2147483648
-check_e "invalid system call '4294967295'" -e 4294967295
-check_e "invalid system call '4294967296'" -e 4294967296
+check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')"
 
-check_e "invalid descriptor '-1'" -eread=-1
-check_e "invalid descriptor '-42'" -ewrite=-42
-check_e "invalid descriptor '2147483648'" -eread=2147483648
-check_e "invalid descriptor '4294967296'" -ewrite=4294967296
-check_e "invalid descriptor 'foo'" -eread=foo
-check_e "invalid descriptor ''" -ewrite=
-check_e "invalid descriptor ','" -eread=,
-check_e "invalid descriptor '!'" -ewrite='!'
-check_e "invalid descriptor '!'" -eread='0,!'
-check_e "invalid descriptor '!,'" -ewrite='!,'
-
-check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
-check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
-check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
-check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
-check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
+ff_name="$(printf '%4084s' ' ')"
+check_e_using_grep "$ff_name: File *name too long" -ff -o "$ff_name" true
 
 check_h 'must have PROG [ARGS] or -p PID'
 check_h 'PROG [ARGS] must be specified with -D' -D -p $$
@@ -80,12 +57,12 @@
 check_h "invalid -s argument: '1073741824'" -s 1073741824
 check_h "invalid -I argument: '5'" -I 5
 
-../zeroargc "$strace_exp" /bin/true 2> "$LOG" &&
+../zeroargc "$STRACE_EXE" /bin/true 2> "$LOG" &&
 	dump_log_and_fail_with \
 		'zeroargc strace failed to handle the error properly'
 cat > "$EXP" << __EOF__
-$strace_exp: must have PROG [ARGS] or -p PID
-Try '$strace_exp -h' for more information.
+$STRACE_EXE: must have PROG [ARGS] or -p PID
+Try '$STRACE_EXE -h' for more information.
 __EOF__
 diff -u -- "$EXP" "$LOG" > /dev/null || {
 	cat > "$EXP" <<- '__EOF__'
@@ -107,17 +84,17 @@
 
 	for c in i r t T y; do
 		check_e "-$c has no effect with -c
-$strace_exp: $umsg" -u :nosuchuser: -c -$c true
+$STRACE_EXE: $umsg" -u :nosuchuser: -c -$c true
 	done
 		check_e "-i has no effect with -c
-$strace_exp: -r has no effect with -c
-$strace_exp: -t has no effect with -c
-$strace_exp: -T has no effect with -c
-$strace_exp: -y has no effect with -c
-$strace_exp: $umsg" -u :nosuchuser: -cirtTy true
+$STRACE_EXE: -r has no effect with -c
+$STRACE_EXE: -t has no effect with -c
+$STRACE_EXE: -T has no effect with -c
+$STRACE_EXE: -y has no effect with -c
+$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTy true
 
 	check_e "-tt has no effect with -r
-$strace_exp: $umsg" -u :nosuchuser: -r -tt true
+$STRACE_EXE: $umsg" -u :nosuchuser: -r -tt true
 fi
 
 args='-p 2147483647'
@@ -127,7 +104,7 @@
 
 for cmd in PTRACE_SEIZE PTRACE_ATTACH; do
 	cat > "$EXP" << __EOF__
-$strace_exp: attach: ptrace($cmd, 2147483647): No such process
+$STRACE_EXE: attach: ptrace($cmd, 2147483647): No such process
 __EOF__
 	diff -- "$EXP" "$LOG" ||
 		continue
diff --git a/tests-mx32/osf_utimes.gen.test b/tests-mx32/osf_utimes.gen.test
index b6be305..9e683b4 100755
--- a/tests-mx32/osf_utimes.gen.test
+++ b/tests-mx32/osf_utimes.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-mx32/perf_event_open.c b/tests-mx32/perf_event_open.c
index 74ff952..667c31f 100644
--- a/tests-mx32/perf_event_open.c
+++ b/tests-mx32/perf_event_open.c
@@ -2,7 +2,7 @@
  * Check verbose decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -102,7 +102,8 @@
 		 use_clockid			:1,
 		 context_switch			:1,
 		 write_backward			:1,
-		 __reserved_1			:36;
+		 namespaces			:1,
+		 __reserved_1			:35;
 };
 
 static const char *
@@ -351,9 +352,17 @@
 # endif
 	printf(", write_backward=%" PRIu64, val);
 
+	val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES
+		attr->namespaces;
+# else
+		flags_data.flags.namespaces;
+# endif
+	printf(", namespaces=%" PRIu64, val);
+
 	val = flags_data.flags.__reserved_1;
 	if (val)
-		printf(", __reserved_1=%#" PRIx64 " /* Bits 63..28 */", val);
+		printf(", __reserved_1=%#" PRIx64 " /* Bits 63..29 */", val);
 
 	printf(", %s=%u",
 		attr->watermark ? "wakeup_watermark" : "wakeup_events",
@@ -523,7 +532,8 @@
 	"PERF_SAMPLE_BRANCH_IND_JUMP|" \
 	"PERF_SAMPLE_BRANCH_CALL|" \
 	"PERF_SAMPLE_BRANCH_NO_FLAGS|" \
-	"PERF_SAMPLE_BRANCH_NO_CYCLES"
+	"PERF_SAMPLE_BRANCH_NO_CYCLES|" \
+	"PERF_SAMPLE_BRANCH_TYPE_SAVE"
 
 int
 main(void)
@@ -608,7 +618,7 @@
 	static const struct u64_val_str sample_types[] = {
 		{ ARG_STR(0) },
 		{ 0x800, "PERF_SAMPLE_BRANCH_STACK" },
-		{ ARG_ULL_STR(0xdeadc0deda780000) " /* PERF_SAMPLE_??? */" },
+		{ ARG_ULL_STR(0xdeadc0deda700000) " /* PERF_SAMPLE_??? */" },
 		{ 0xffffffffffffffffULL,
 			"PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
 			"PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
@@ -618,7 +628,8 @@
 			"PERF_SAMPLE_REGS_USER|PERF_SAMPLE_STACK_USER|"
 			"PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
 			"PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
-			"PERF_SAMPLE_REGS_INTR|0xfffffffffff80000" },
+			"PERF_SAMPLE_REGS_INTR|PERF_SAMPLE_PHYS_ADDR|"
+			"0xfffffffffff00000" },
 	};
 	static const struct u64_val_str read_formats[] = {
 		{ ARG_STR(0) },
@@ -650,11 +661,11 @@
 	static const struct u64_val_str branch_sample_types[] = {
 		{ ARG_STR(0) },
 		{ 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
-		{ 0xffff, BRANCH_TYPE_ALL },
-		{ ARG_ULL_STR(0xdeadcaffeeed0000)
+		{ 0x1ffff, BRANCH_TYPE_ALL },
+		{ ARG_ULL_STR(0xdeadcaffeeec0000)
 			" /* PERF_SAMPLE_BRANCH_??? */" },
 		{ 0xffffffffffffffffULL,
-			BRANCH_TYPE_ALL "|0xffffffffffff0000" }
+			BRANCH_TYPE_ALL "|0xfffffffffffe0000" }
 	};
 	static const struct s32_val_str clockids[] = {
 		{ 11, "CLOCK_TAI" },
diff --git a/tests-mx32/perf_event_open.gen.test b/tests-mx32/perf_event_open.gen.test
index 85336c3..02d468a 100755
--- a/tests-mx32/perf_event_open.gen.test
+++ b/tests-mx32/perf_event_open.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a1 
diff --git a/tests-mx32/pipe2.gen.test b/tests-mx32/pipe2.gen.test
index 5a06c03..50b8fd6 100755
--- a/tests-mx32/pipe2.gen.test
+++ b/tests-mx32/pipe2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-mx32/pkey_alloc.c b/tests-mx32/pkey_alloc.c
index 4577278..4a0aa72 100644
--- a/tests-mx32/pkey_alloc.c
+++ b/tests-mx32/pkey_alloc.c
@@ -2,6 +2,7 @@
  * Check decoding of pkey_alloc syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -53,10 +54,12 @@
 			sizeof(kernel_ulong_t) > sizeof(int) ?
 			"PKEY_DISABLE_WRITE|0xbadc0ded00000000" :
 			"PKEY_DISABLE_WRITE" },
-		{ 0xdec0ded, "PKEY_DISABLE_ACCESS|0xdec0dec" },
-		{ 0x3, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE" },
+		{ 0xdec0ded, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_EXECUTE|"
+				"0xdec0de8" },
+		{ 0x7, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE|"
+				"PKEY_DISABLE_EXECUTE" },
 		{ ARG_STR(0) },
-		{ 0xbadc0dec, "0xbadc0dec /* PKEY_??? */" },
+		{ 0xbadc0de8, "0xbadc0de8 /* PKEY_??? */" },
 	};
 
 	long rc;
diff --git a/tests-mx32/pkey_alloc.gen.test b/tests-mx32/pkey_alloc.gen.test
index b3e5869..fb554ef 100755
--- a/tests-mx32/pkey_alloc.gen.test
+++ b/tests-mx32/pkey_alloc.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/pkey_free.gen.test b/tests-mx32/pkey_free.gen.test
index 588d1aa..0374cc7 100755
--- a/tests-mx32/pkey_free.gen.test
+++ b/tests-mx32/pkey_free.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests-mx32/pkey_mprotect.gen.test b/tests-mx32/pkey_mprotect.gen.test
index 14be231..11a902a 100755
--- a/tests-mx32/pkey_mprotect.gen.test
+++ b/tests-mx32/pkey_mprotect.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests-mx32/poll-P.c b/tests-mx32/poll-P.c
new file mode 100644
index 0000000..7bbeb79
--- /dev/null
+++ b/tests-mx32/poll-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "poll.c"
diff --git a/tests-mx32/poll-P.test b/tests-mx32/poll-P.test
new file mode 100755
index 0000000..a190572
--- /dev/null
+++ b/tests-mx32/poll-P.test
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Check path tracing of poll syscall.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a16 -vepoll -P /dev/full 9>>/dev/full \
+	$args > "$EXP"
+match_diff "$LOG" "$EXP"
+
+for abbrev in 0 1 2 3 4 5; do
+	run_prog "../$NAME" $abbrev > /dev/null
+	run_strace -a16 -epoll -s$abbrev -P /dev/full 9>>/dev/full \
+		$args > "$EXP"
+	match_diff "$LOG" "$EXP"
+done
diff --git a/tests-mx32/poll.c b/tests-mx32/poll.c
index 2bf8c1a..c5930a3 100644
--- a/tests-mx32/poll.c
+++ b/tests-mx32/poll.c
@@ -1,8 +1,7 @@
 /*
- * This file is part of poll strace test.
+ * Check decoding of poll syscall.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,6 +37,7 @@
 # include <poll.h>
 # include <stdio.h>
 # include <stdlib.h>
+# include <string.h>
 # include <unistd.h>
 
 #define PRINT_EVENT(flag, member)			\
@@ -163,12 +163,19 @@
 int
 main(int ac, char **av)
 {
+# ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+# endif
+
 	tprintf("%s", "");
 
 	assert(syscall(__NR_poll, NULL, 42, 0) == -1);
 	if (ENOSYS == errno)
 		perror_msg_and_skip("poll");
+
+# ifndef PATH_TRACING_FD
 	tprintf("poll(NULL, 42, 0) = -1 EFAULT (%m)\n");
+# endif
 
 	int fds[2];
 	if (pipe(fds) || pipe(fds))
@@ -187,7 +194,93 @@
 	int rc = syscall(__NR_poll, tail_fds0, 0, timeout);
 	assert(rc == 0);
 
+# ifndef PATH_TRACING_FD
 	tprintf("poll([], 0, %d) = %d (Timeout)\n", timeout, rc);
+# endif
+
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 3);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	tail_fds0[0].fd = -1;
+	tail_fds0[2].fd = -3;
+	tail_fds0[4].events = 0;
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 2);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	tail_fds0[1].fd = -2;
+	tail_fds0[4].fd = -5;
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	struct pollfd pfds1[] = {
+		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+	};
+	struct pollfd *const tail_fds1 = tail_memdup(pfds1, sizeof(pfds1));
+	rc = syscall(__NR_poll, tail_fds1, ARRAY_SIZE(pfds1), timeout);
+	assert(rc == 0);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
+				    ARRAY_SIZE(pfds1), abbrev);
+	tprintf(", %u, %d) = %d (Timeout)\n",
+		(unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
+# endif /* !PATH_TRACING_FD */
+
+	const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
+	rc = syscall(__NR_poll, efault, 1, 0);
+	assert(rc == -1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(%p, 1, 0) = -1 EFAULT (%m)\n", efault);
+# endif
+
+	const unsigned int valid = 1;
+	const void *const epfds = tail_fds0 + ARRAY_SIZE(pfds0) - valid;
+	rc = syscall(__NR_poll, epfds, valid + 1, 0);
+	assert(rc == -1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(epfds, valid + 1, valid, abbrev);
+	errno = EFAULT;
+	tprintf(", %u, 0) = -1 EFAULT (%m)\n", valid + 1);
+# endif /* !PATH_TRACING_FD */
+
+# ifdef PATH_TRACING_FD
+	memcpy(tail_fds0, pfds0, sizeof(pfds0));
+	tail_fds0[4].fd = PATH_TRACING_FD;
 
 	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
 	assert(rc == 3);
@@ -200,60 +293,15 @@
 	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
 	tprintf(")\n");
 
-	tail_fds0[0].fd = -1;
-	tail_fds0[2].fd = -3;
-	tail_fds0[4].events = 0;
-	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
-	assert(rc == 2);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
-				    ARRAY_SIZE(pfds0), abbrev);
-	tprintf(", %u, %d) = %d (",
-		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
-	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
-	tprintf(")\n");
-
-	tail_fds0[1].fd = -2;
-	tail_fds0[4].fd = -5;
-	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
-	assert(rc == 1);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
-				    ARRAY_SIZE(pfds0), abbrev);
-	tprintf(", %u, %d) = %d (",
-		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
-	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
-	tprintf(")\n");
-
-	struct pollfd pfds1[] = {
-		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
-	};
-	struct pollfd *const tail_fds1 = tail_memdup(pfds1, sizeof(pfds1));
-	rc = syscall(__NR_poll, tail_fds1, ARRAY_SIZE(pfds1), timeout);
-	assert(rc == 0);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
-				    ARRAY_SIZE(pfds1), abbrev);
-	tprintf(", %u, %d) = %d (Timeout)\n",
-		(unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
-
-	const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
-	rc = syscall(__NR_poll, efault, 1, 0);
-	assert(rc == -1);
-	tprintf("poll(%p, 1, 0) = -1 EFAULT (%m)\n", efault);
-
-	const unsigned int valid = 1;
-	const void *const epfds = tail_fds0 + ARRAY_SIZE(pfds0) - valid;
 	rc = syscall(__NR_poll, epfds, valid + 1, 0);
 	assert(rc == -1);
+
+	/* the 1st pollfd element is readable and contains PATH_TRACING_FD */
 	tprintf("poll(");
 	print_pollfd_array_entering(epfds, valid + 1, valid, abbrev);
 	errno = EFAULT;
 	tprintf(", %u, 0) = -1 EFAULT (%m)\n", valid + 1);
+# endif /* PATH_TRACING_FD */
 
 	tprintf("+++ exited with 0 +++\n");
 	return 0;
diff --git a/tests-mx32/ppoll-P.c b/tests-mx32/ppoll-P.c
new file mode 100644
index 0000000..c2c572e
--- /dev/null
+++ b/tests-mx32/ppoll-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "ppoll.c"
diff --git a/tests-mx32/ppoll-P.gen.test b/tests-mx32/ppoll-P.gen.test
new file mode 100755
index 0000000..25a9704
--- /dev/null
+++ b/tests-mx32/ppoll-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-P -s2 -e trace=ppoll -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -e trace=ppoll -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/ppoll.c b/tests-mx32/ppoll.c
index 6224183..b33f959 100644
--- a/tests-mx32/ppoll.c
+++ b/tests-mx32/ppoll.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of ppoll syscall.
  *
- * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,10 @@
 int
 main(void)
 {
+# ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+# endif
+
 	static const kernel_ulong_t bogus_nfds =
 		(kernel_ulong_t) 0xdeadbeeffacefeedULL;
 	static const kernel_ulong_t bogus_sigsetsize =
@@ -76,28 +80,36 @@
 	sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
 	if (ENOSYS == errno)
 		perror_msg_and_skip("ppoll");
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
 	       (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
 	       errstr);
+# endif
 
 	sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
 		  (unsigned long) efault + 16, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
 	       efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+# endif
 
 	ts->tv_sec = 0xdeadbeefU;
 	ts->tv_nsec = 0xfacefeedU;
 	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
 	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 	       sigset_size, errstr);
+# endif
 
 	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
 	ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
 	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
 	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 	       sigset_size, errstr);
+# endif
 
 	if (pipe(pipe_fd) || pipe(pipe_fd + 2))
 		perror_msg_and_fail("pipe");
@@ -124,24 +136,56 @@
 		       (unsigned long) sigmask, sigset_size);
 	if (rc != 2)
 		perror_msg_and_fail("ppoll 1");
+# ifndef PATH_TRACING_FD
 	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
 	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
-#if VERBOSE
+#  if VERBOSE
 	       ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
-#else
+#  else
 	       ", ...]"
-#endif
+#  endif
 	       ", %u, {tv_sec=42, tv_nsec=999999999}, [%s], %u) = %ld"
 	       " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
 	       ", left {tv_sec=%u, tv_nsec=%u})\n",
 	       pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
-#if VERBOSE
+#  if VERBOSE
 	       pipe_fd[2], pipe_fd[3],
-#endif
+#  endif
 	       (unsigned int) ARRAY_SIZE(fds1), USR2_CHLD_str,
 	       (unsigned int) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
 	       pipe_fd[3], (unsigned int) ts->tv_sec,
 	       (unsigned int) ts->tv_nsec);
+# endif /* !PATH_TRACING_FD */
+
+# ifdef PATH_TRACING_FD
+	ts->tv_sec = 123;
+	ts->tv_nsec = 987654321;
+	fds[3].fd = PATH_TRACING_FD;
+
+	rc = sys_ppoll((unsigned long) fds,
+		       F8ILL_KULONG_MASK | ARRAY_SIZE(fds1), (unsigned long) ts,
+		       (unsigned long) sigmask, sigset_size);
+	if (rc != 2)
+		perror_msg_and_fail("ppoll -P");
+	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
+	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
+#  if VERBOSE
+	       ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
+#  else
+	       ", ...]"
+#  endif
+	       ", %u, {tv_sec=123, tv_nsec=987654321}, [%s], %u) = %ld"
+	       " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
+	       ", left {tv_sec=%u, tv_nsec=%u})\n",
+	       pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
+#  if VERBOSE
+	       pipe_fd[2], PATH_TRACING_FD,
+#  endif
+	       (unsigned int) ARRAY_SIZE(fds1), USR2_CHLD_str,
+	       (unsigned int) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+	       PATH_TRACING_FD, (unsigned int) ts->tv_sec,
+	       (unsigned int) ts->tv_nsec);
+# endif /* PATH_TRACING_FD */
 
 	ts->tv_sec = 0;
 	ts->tv_nsec = 999;
@@ -163,23 +207,27 @@
 		       (unsigned long) sigmask, sigset_size);
 	if (rc != 0)
 		perror_msg_and_fail("ppoll 2");
+# ifndef PATH_TRACING_FD
 	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
 	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}], %u"
 	       ", {tv_sec=0, tv_nsec=999}, ~[HUP KILL STOP], %u)"
 	       " = %ld (Timeout)\n",
 	       pipe_fd[1], pipe_fd[0], POLLWRNORM_str,
 	       (unsigned) ARRAY_SIZE(fds2), sigset_size, rc);
+# endif /* !PATH_TRACING_FD */
 
 	if (F8ILL_KULONG_SUPPORTED) {
 		sys_ppoll(f8ill_ptr_to_kulong(fds), ARRAY_SIZE(fds2),
 			  f8ill_ptr_to_kulong(ts), f8ill_ptr_to_kulong(sigmask),
 			  sigset_size);
+# ifndef PATH_TRACING_FD
 		printf("ppoll(%#llx, %u, %#llx, %#llx, %u) = %s\n",
 		       (unsigned long long) f8ill_ptr_to_kulong(fds),
 		       (unsigned) ARRAY_SIZE(fds2),
 		       (unsigned long long) f8ill_ptr_to_kulong(ts),
 		       (unsigned long long) f8ill_ptr_to_kulong(sigmask),
 		       (unsigned) sigset_size, errstr);
+# endif /* !PATH_TRACING_FD */
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/ppoll.gen.test b/tests-mx32/ppoll.gen.test
index 4c07598..120e953 100755
--- a/tests-mx32/ppoll.gen.test
+++ b/tests-mx32/ppoll.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s2
+run_strace_match_diff -s2 
diff --git a/tests-mx32/prctl-dumpable.c b/tests-mx32/prctl-dumpable.c
index 1049bce..52c1668 100644
--- a/tests-mx32/prctl-dumpable.c
+++ b/tests-mx32/prctl-dumpable.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,7 +33,8 @@
 #include <asm/unistd.h>
 #include <linux/prctl.h>
 
-#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE
+#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE \
+ && !defined __ia64__
 
 # include <stdio.h>
 # include <unistd.h>
@@ -101,6 +103,7 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE"
+		    " && !__ia64__")
 
 #endif
diff --git a/tests-mx32/preadv.gen.test b/tests-mx32/preadv.gen.test
index 8fb7b54..c3fabe6 100755
--- a/tests-mx32/preadv.gen.test
+++ b/tests-mx32/preadv.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-mx32/print_user_desc.c b/tests-mx32/print_user_desc.c
new file mode 100644
index 0000000..2dac387
--- /dev/null
+++ b/tests-mx32/print_user_desc.c
@@ -0,0 +1,78 @@
+/*
+ * Auxiliary printing function for the struct user_desc type.
+ * Used by modify_ldt and xet_thread_area tests.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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"
+
+#ifdef HAVE_STRUCT_USER_DESC
+
+# include <asm/ldt.h>
+
+/**
+ * Print user_desc structure.
+ *
+ * @param us        Pointer to struct user_desc to print.
+ * @param entry_str If not NULL, the string is printed as a value of
+ *                  entry_number field.
+ */
+static void
+print_user_desc(struct user_desc *us, const char *entry_str)
+{
+	if (entry_str)
+		printf("{entry_number=%s", entry_str);
+	else
+		printf("{entry_number=%u", us->entry_number);
+
+	printf(", base_addr=%#08x"
+	       ", limit=%#08x"
+	       ", seg_32bit=%u"
+	       ", contents=%u"
+	       ", read_exec_only=%u"
+	       ", limit_in_pages=%u"
+	       ", seg_not_present=%u"
+	       ", useable=%u"
+# ifdef __x86_64__
+	       ", lm=%u"
+# endif
+	       "}",
+	       us->base_addr,
+	       us->limit,
+	       us->seg_32bit,
+	       us->contents,
+	       us->read_exec_only,
+	       us->limit_in_pages,
+	       us->seg_not_present,
+	       us->useable
+# ifdef __x86_64__
+	       , us->lm
+# endif
+	       );
+}
+
+#endif /* HAVE_STRUCT_USER_DESC */
diff --git a/tests-mx32/printpath-umovestr.c b/tests-mx32/printpath-umovestr.c
index a7251e5..0d5955f 100644
--- a/tests-mx32/printpath-umovestr.c
+++ b/tests-mx32/printpath-umovestr.c
@@ -2,6 +2,7 @@
  * Test regular printpath/umovestr.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,8 +30,8 @@
 
 #include "tests.h"
 #include "test_ucopy.h"
+#include <limits.h>
 #include <stdio.h>
-#include <sys/param.h>
 
 int
 main(void)
diff --git a/tests-mx32/prlimit64.gen.test b/tests-mx32/prlimit64.gen.test
index 11964a5..2c94fc9 100755
--- a/tests-mx32/prlimit64.gen.test
+++ b/tests-mx32/prlimit64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/pselect6.gen.test b/tests-mx32/pselect6.gen.test
index c89e705..29d3896 100755
--- a/tests-mx32/pselect6.gen.test
+++ b/tests-mx32/pselect6.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/ptrace.c b/tests-mx32/ptrace.c
index d776dcd..c70d568 100644
--- a/tests-mx32/ptrace.c
+++ b/tests-mx32/ptrace.c
@@ -2,7 +2,7 @@
  * Check decoding of ptrace syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,12 +32,12 @@
 #include <asm/unistd.h>
 
 #include <errno.h>
+#include "ptrace.h"
 #include <signal.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/wait.h>
 #include <unistd.h>
-#include "ptrace.h"
 #include <linux/audit.h>
 
 static const char *errstr;
diff --git a/tests-mx32/pure_executables.am b/tests-mx32/pure_executables.am
index 2cae9ae..128028f 100644
--- a/tests-mx32/pure_executables.am
+++ b/tests-mx32/pure_executables.am
@@ -104,6 +104,7 @@
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_kvm_run \
   ioctl_loop \
   ioctl_mtd \
   ioctl_rtc \
@@ -154,6 +155,7 @@
   mmap64 \
   mmsg \
   mmsg_name \
+  modify_ldt \
   mount \
   move_pages \
   mq \
@@ -223,9 +225,12 @@
   nlattr_tcmsg \
   nlattr_unix_diag_msg \
   old_mmap \
+  old_mmap-P \
+  old_mmap-v-none \
   oldfstat \
   oldlstat \
   oldselect \
+  oldselect-efault \
   oldstat \
   open \
   openat \
@@ -239,7 +244,9 @@
   pkey_free \
   pkey_mprotect \
   poll \
+  poll-P \
   ppoll \
+  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -282,6 +289,7 @@
   renameat \
   renameat2 \
   request_key \
+  riscv_flush_icache \
   rmdir \
   rt_sigaction \
   rt_sigpending \
@@ -291,6 +299,12 @@
   rt_sigsuspend \
   rt_sigtimedwait \
   rt_tgsigqueueinfo \
+  s390_guarded_storage \
+  s390_guarded_storage-v \
+  s390_pci_mmio_read_write \
+  s390_runtime_instr \
+  s390_sthyi \
+  s390_sthyi-v \
   sched_get_priority_mxx \
   sched_rr_get_interval \
   sched_xetaffinity \
@@ -342,6 +356,7 @@
   so_peercred \
   sock_filter-v \
   socketcall \
+  sockopt-sol_netlink \
   splice \
   stat \
   stat64 \
@@ -393,6 +408,7 @@
   xattr \
   xattr-strings \
   xet_robust_list \
+  xet_thread_area_x86 \
   xetitimer \
   xetpgid \
   xetpriority \
diff --git a/tests-mx32/pure_executables.list b/tests-mx32/pure_executables.list
index d98b17d..2f602a9 100755
--- a/tests-mx32/pure_executables.list
+++ b/tests-mx32/pure_executables.list
@@ -103,6 +103,7 @@
 ioctl_block
 ioctl_dm
 ioctl_evdev
+ioctl_kvm_run
 ioctl_loop
 ioctl_mtd
 ioctl_rtc
@@ -153,6 +154,7 @@
 mmap64
 mmsg
 mmsg_name
+modify_ldt
 mount
 move_pages
 mq
@@ -222,9 +224,12 @@
 nlattr_tcmsg
 nlattr_unix_diag_msg
 old_mmap
+old_mmap-P
+old_mmap-v-none
 oldfstat
 oldlstat
 oldselect
+oldselect-efault
 oldstat
 open
 openat
@@ -238,7 +243,9 @@
 pkey_free
 pkey_mprotect
 poll
+poll-P
 ppoll
+ppoll-P
 prctl-arg2-intptr
 prctl-dumpable
 prctl-name
@@ -281,6 +288,7 @@
 renameat
 renameat2
 request_key
+riscv_flush_icache
 rmdir
 rt_sigaction
 rt_sigpending
@@ -290,6 +298,12 @@
 rt_sigsuspend
 rt_sigtimedwait
 rt_tgsigqueueinfo
+s390_guarded_storage
+s390_guarded_storage-v
+s390_pci_mmio_read_write
+s390_runtime_instr
+s390_sthyi
+s390_sthyi-v
 sched_get_priority_mxx
 sched_rr_get_interval
 sched_xetaffinity
@@ -341,6 +355,7 @@
 so_peercred
 sock_filter-v
 socketcall
+sockopt-sol_netlink
 splice
 stat
 stat64
@@ -392,6 +407,7 @@
 xattr
 xattr-strings
 xet_robust_list
+xet_thread_area_x86
 xetitimer
 xetpgid
 xetpriority
diff --git a/tests-mx32/qual_fault-syntax.test b/tests-mx32/qual_fault-syntax.test
index 0cce539..43ade76 100755
--- a/tests-mx32/qual_fault-syntax.test
+++ b/tests-mx32/qual_fault-syntax.test
@@ -2,7 +2,7 @@
 #
 # Check -e fault= syntax.
 #
-# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -40,16 +40,7 @@
 		"strace -e fault=$* failed to handle an argument error properly"
 }
 
-for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
-	   invalid_syscall_name \
-	   invalid_syscall_name:when=3 \
-	   -1 \!-1 \
-	   -1:when=4 \
-	   -2 \
-	   -2:when=5 \
-	   32767 \!32767 \
-	   32767:when=6 \
-	   chdir:42 \!chdir:42 \
+for arg in chdir:42 \!chdir:42 \
 	   chdir:42:when=7 \
 	   chdir:invalid \
 	   chdir:invalid:when=8 \
@@ -92,12 +83,6 @@
 	   chdir:when=65536:error=30 \
 	   chdir:when=1+65536 \
 	   chdir:when=1+65536:error=31 \
-	   file,nonsense \
-	   \!desc,nonsense \
-	   chdir,nonsense \
-	   \!chdir,nonsense \
-	   1,nonsense \
-	   \!1,nonsense \
 	   chdir:retval=0 \
 	   chdir:signal=1 \
 	   chdir:error=1:error=2 \
diff --git a/tests-mx32/qual_fault.c b/tests-mx32/qual_fault.c
index 05401de..670d9fe 100644
--- a/tests-mx32/qual_fault.c
+++ b/tests-mx32/qual_fault.c
@@ -2,7 +2,7 @@
  * Check that fault injection works properly.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,11 +33,11 @@
 #include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
diff --git a/tests-mx32/qual_inject-syntax.test b/tests-mx32/qual_inject-syntax.test
index 7aa6180..46cead2 100755
--- a/tests-mx32/qual_inject-syntax.test
+++ b/tests-mx32/qual_inject-syntax.test
@@ -2,7 +2,7 @@
 #
 # Check -e inject= syntax.
 #
-# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -40,17 +40,7 @@
 		"strace -e inject=$* failed to handle an argument error properly"
 }
 
-for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
-	   invalid_syscall_name \
-	   invalid_syscall_name:when=3 \
-	   -1 \!-1 \
-	   -1:when=4 \
-	   -2 \
-	   -2:when=5 \
-	   32767 \!32767 \
-	   32767:when=6 \
-	   42 \
-	   chdir \
+for arg in 42 chdir \
 	   chdir:42 \!chdir:42 \
 	   chdir:42:when=7 \
 	   chdir:invalid \
@@ -94,12 +84,6 @@
 	   chdir:when=65536:error=30 \
 	   chdir:when=1+65536 \
 	   chdir:when=1+65536:error=31 \
-	   file,nonsense \
-	   \!desc,nonsense \
-	   chdir,nonsense \
-	   \!chdir,nonsense \
-	   1,nonsense \
-	   \!1,nonsense \
 	   chdir:retval=-1 \
 	   chdir:signal=0 \
 	   chdir:signal=129 \
diff --git a/tests-mx32/quotactl.gen.test b/tests-mx32/quotactl.gen.test
index c6ad6e1..6d2dc75 100755
--- a/tests-mx32/quotactl.gen.test
+++ b/tests-mx32/quotactl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/readahead.gen.test b/tests-mx32/readahead.gen.test
index 4e88efa..c27ab0d 100755
--- a/tests-mx32/readahead.gen.test
+++ b/tests-mx32/readahead.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a1 
diff --git a/tests-mx32/readdir.gen.test b/tests-mx32/readdir.gen.test
index 10da83b..09aad4f 100755
--- a/tests-mx32/readdir.gen.test
+++ b/tests-mx32/readdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests-mx32/readlink.gen.test b/tests-mx32/readlink.gen.test
index 755fc8b..4263234 100755
--- a/tests-mx32/readlink.gen.test
+++ b/tests-mx32/readlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
+run_strace_match_diff -xx 
diff --git a/tests-mx32/readlinkat.gen.test b/tests-mx32/readlinkat.gen.test
index 2a50299..d7de993 100755
--- a/tests-mx32/readlinkat.gen.test
+++ b/tests-mx32/readlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
+run_strace_match_diff -xx 
diff --git a/tests-mx32/reboot.c b/tests-mx32/reboot.c
index ce651dc..3f819ce 100644
--- a/tests-mx32/reboot.c
+++ b/tests-mx32/reboot.c
@@ -10,21 +10,83 @@
 # define INVALID_MAGIC 319887762
 # define INVALID_CMD 0x01234568
 
+# define STR32 "AbCdEfGhIjKlMnOpQrStUvWxYz012345"
+# define STR128 STR32 STR32 STR32 STR32
+
 int
 main(void)
 {
+	static const kernel_ulong_t bogus_magic1 =
+		(kernel_ulong_t) 0xFFFFFFFFFFFFFFFFULL;
+	static const kernel_ulong_t bogus_magic2 =
+		(kernel_ulong_t) 0xdeadfacefa57beefULL;
+	static const kernel_ulong_t bogus_cmd =
+		(kernel_ulong_t) 0xbadda7a09caffee1ULL;
 	static const char buf[] = "reboot";
-	long rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
+	static const char str256_buf[] = STR128 STR128;
+
+	long rc;
+	char *str256 = tail_memdup(str256_buf, sizeof(str256_buf) - 1);
+
+	rc = syscall(__NR_reboot, 0, 0, 0, 0);
+	printf("reboot(0 /* LINUX_REBOOT_MAGIC_??? */, "
+	       "0 /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_CAD_OFF) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_reboot, bogus_magic1, bogus_magic2, bogus_cmd, -1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_CMD_??? */) = %s\n",
+	       (unsigned int) bogus_magic1, (unsigned int) bogus_magic2,
+	       (unsigned int) bogus_cmd, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
 			  INVALID_MAGIC, LINUX_REBOOT_CMD_RESTART2, buf);
 	printf("reboot(LINUX_REBOOT_MAGIC1, %#x /* LINUX_REBOOT_MAGIC_??? */,"
-	       " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %ld %s (%m)\n",
-	       INVALID_MAGIC, buf, rc, errno2name());
+	       " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %s\n",
+	       INVALID_MAGIC, buf, sprintrc(rc));
 
 	rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
 		     LINUX_REBOOT_MAGIC2, INVALID_CMD);
 	printf("reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,"
-	       " %#x /* LINUX_REBOOT_CMD_??? */) = %ld %s (%m)\n",
-	       INVALID_CMD, rc, errno2name());
+	       " %#x /* LINUX_REBOOT_CMD_??? */) = %s\n",
+	       INVALID_CMD, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2A,
+			  LINUX_REBOOT_CMD_RESTART2, str256);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2A, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, str256, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2B,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2B, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, str256 + 1, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2C,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 2);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2C, "
+	       "LINUX_REBOOT_CMD_RESTART2, %p) = %s\n",
+	       INVALID_MAGIC, str256 + 2, sprintrc(rc));
+
+	str256[255] = '\0';
+	rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1,
+			  LINUX_REBOOT_CMD_RESTART2, str256);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, (unsigned int) bogus_magic1, str256,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.254s\") = %s\n",
+	       INVALID_MAGIC, (unsigned int) bogus_magic1, str256 + 1,
+	       sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/reboot.gen.test b/tests-mx32/reboot.gen.test
index 0a48dea..06d2f0c 100755
--- a/tests-mx32/reboot.gen.test
+++ b/tests-mx32/reboot.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot -s 256); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff -s 256
diff --git a/tests-mx32/recvfrom.gen.test b/tests-mx32/recvfrom.gen.test
index c23780c..2741d21 100755
--- a/tests-mx32/recvfrom.gen.test
+++ b/tests-mx32/recvfrom.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-mx32/remap_file_pages.c b/tests-mx32/remap_file_pages.c
index 452d2de..4e40963 100644
--- a/tests-mx32/remap_file_pages.c
+++ b/tests-mx32/remap_file_pages.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of remap_file_pages syscall.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,22 +33,62 @@
 #ifdef __NR_remap_file_pages
 
 # include <stdio.h>
-# include <sys/mman.h>
+# include <stdint.h>
 # include <unistd.h>
+# include <linux/mman.h>
+
+static const char *errstr;
+
+static long
+k_remap_file_pages(const kernel_ulong_t addr,
+		   const kernel_ulong_t size,
+		   const kernel_ulong_t prot,
+		   const kernel_ulong_t pgoff,
+		   const kernel_ulong_t flags)
+{
+	const long rc = syscall(__NR_remap_file_pages,
+				addr, size, prot, pgoff, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
-	const unsigned long size = (unsigned long) 0xdefaced1bad2f00dULL;
-	const unsigned long prot = PROT_READ|PROT_WRITE|PROT_EXEC;
-	const unsigned long pgoff = (unsigned long) 0xcaf3babebad4deedULL;
-	const unsigned long flags = MAP_PRIVATE|MAP_ANONYMOUS;
+	kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+	kernel_ulong_t size = (kernel_ulong_t) 0xdefaced1bad2f00dULL;
+	kernel_ulong_t prot = PROT_READ|PROT_WRITE|PROT_EXEC;
+	kernel_ulong_t pgoff = (kernel_ulong_t) 0xcaf3babebad4deedULL;
+	kernel_ulong_t flags = MAP_PRIVATE|MAP_ANONYMOUS;
 
-	long rc = syscall(__NR_remap_file_pages, addr, size, prot, pgoff, flags);
-	printf("remap_file_pages(%#lx, %lu, %s, %lu, %s) = %ld %s (%m)\n",
-	       addr, size, "PROT_READ|PROT_WRITE|PROT_EXEC", pgoff,
-	       "MAP_PRIVATE|MAP_ANONYMOUS", rc, errno2name());
+	k_remap_file_pages(addr, size, prot, pgoff, flags);
+	printf("remap_file_pages(%#jx, %ju, %s, %ju, %s) = %s\n",
+	       (uintmax_t) addr, (uintmax_t) size,
+	       "PROT_READ|PROT_WRITE|PROT_EXEC",
+	       (uintmax_t) pgoff, "MAP_PRIVATE|MAP_ANONYMOUS", errstr);
+
+#ifdef MAP_HUGETLB
+# ifndef MAP_HUGE_2MB
+#  ifndef MAP_HUGE_SHIFT
+#   define MAP_HUGE_SHIFT 26
+#  endif
+#  define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
+# endif /* !MAP_HUGE_2MB */
+	addr = (kernel_ulong_t) 0xfacefeeddeadf00dULL;
+	size = (kernel_ulong_t) 0xdefaced1bad2beefULL;
+	prot = (kernel_ulong_t) 0xdefaced00000000ULL | PROT_NONE;
+	flags = MAP_TYPE | MAP_FIXED | MAP_NORESERVE | MAP_HUGETLB | MAP_HUGE_2MB;
+
+	k_remap_file_pages(addr, size, prot, pgoff, flags);
+	printf("remap_file_pages(%#jx, %ju, %s, %ju"
+	       ", %#x /* MAP_??? */"
+	       "|MAP_FIXED|MAP_NORESERVE|MAP_HUGETLB|21<<MAP_HUGE_SHIFT)"
+	       " = %s\n",
+	       (uintmax_t) addr, (uintmax_t) size,
+	       prot == PROT_NONE ? "PROT_NONE" :
+				   "0xdefaced00000000 /* PROT_??? */",
+	       (uintmax_t) pgoff, MAP_TYPE, errstr);
+#endif /* MAP_HUGETLB */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/remap_file_pages.gen.test b/tests-mx32/remap_file_pages.gen.test
index e489473..b358988 100755
--- a/tests-mx32/remap_file_pages.gen.test
+++ b/tests-mx32/remap_file_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/rename.gen.test b/tests-mx32/rename.gen.test
index 07f0180..81fb039 100755
--- a/tests-mx32/rename.gen.test
+++ b/tests-mx32/rename.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-mx32/renameat.gen.test b/tests-mx32/renameat.gen.test
index f2879cd..dbc6e05 100755
--- a/tests-mx32/renameat.gen.test
+++ b/tests-mx32/renameat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/renameat2.gen.test b/tests-mx32/renameat2.gen.test
index cd7c34c..78251cb 100755
--- a/tests-mx32/renameat2.gen.test
+++ b/tests-mx32/renameat2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/riscv_flush_icache.c b/tests-mx32/riscv_flush_icache.c
new file mode 100644
index 0000000..8aaeda5
--- /dev/null
+++ b/tests-mx32/riscv_flush_icache.c
@@ -0,0 +1,93 @@
+/*
+ * Check decoding of riscv_flush_icache syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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>
+
+#include "scno.h"
+
+#ifdef __NR_riscv_flush_icache
+
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int main(void)
+{
+	static struct {
+		kernel_ulong_t addr;
+		const char *str;
+	} addrs[] = {
+		{ (kernel_ulong_t) (uintptr_t) ARG_STR(NULL) },
+		{ (kernel_ulong_t) 0xbadc0deddeadf157ULL,
+			sizeof(kernel_ulong_t) == 8 ? "0xbadc0deddeadf157" :
+			"0xdeadf157" },
+	};
+	static struct {
+		kernel_ulong_t val;
+		const char *str;
+	} flags[] = {
+		{ ARG_STR(0) },
+		{ 1, "SYS_RISCV_FLUSH_ICACHE_LOCAL" },
+		{ (kernel_ulong_t) 0xfacefeedfffffffeULL,
+			sizeof(kernel_ulong_t) == 8 ?
+			"0xfacefeedfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" :
+			"0xfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" },
+		{ (kernel_ulong_t) 0xfacefeedffffffffULL,
+			sizeof(kernel_ulong_t) == 8 ?
+			"SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfacefeedfffffffe" :
+			"SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfffffffe" },
+	};
+
+	for (size_t i = 0; i < ARRAY_SIZE(addrs); i++) {
+		for (size_t j = 0; j < ARRAY_SIZE(addrs); j++) {
+			for (size_t k = 0; k < ARRAY_SIZE(flags); k++) {
+				long rc = syscall(__NR_riscv_flush_icache,
+						  addrs[i].addr,
+						  addrs[j].addr,
+						  flags[k].val);
+
+				printf("riscv_flush_icache(%s, %s, %s) = %s\n",
+				       addrs[i].str, addrs[j].str, flags[k].str,
+				       sprintrc(rc));
+			}
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_riscv_flush_icache");
+
+#endif
diff --git a/tests-mx32/riscv_flush_icache.gen.test b/tests-mx32/riscv_flush_icache.gen.test
new file mode 100755
index 0000000..1a1f793
--- /dev/null
+++ b/tests-mx32/riscv_flush_icache.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (riscv_flush_icache -a34 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 
diff --git a/tests-mx32/rmdir.gen.test b/tests-mx32/rmdir.gen.test
index b511039..8b346af 100755
--- a/tests-mx32/rmdir.gen.test
+++ b/tests-mx32/rmdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-mx32/rt_sigpending.gen.test b/tests-mx32/rt_sigpending.gen.test
index 0458876..d52858a 100755
--- a/tests-mx32/rt_sigpending.gen.test
+++ b/tests-mx32/rt_sigpending.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/rt_sigprocmask.gen.test b/tests-mx32/rt_sigprocmask.gen.test
index a21c6db..67fcdc0 100755
--- a/tests-mx32/rt_sigprocmask.gen.test
+++ b/tests-mx32/rt_sigprocmask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/rt_sigqueueinfo.gen.test b/tests-mx32/rt_sigqueueinfo.gen.test
index 7baf0e4..d11eecc 100755
--- a/tests-mx32/rt_sigqueueinfo.gen.test
+++ b/tests-mx32/rt_sigqueueinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-mx32/rt_sigreturn.gen.test b/tests-mx32/rt_sigreturn.gen.test
index 0672f11..d8b153e 100755
--- a/tests-mx32/rt_sigreturn.gen.test
+++ b/tests-mx32/rt_sigreturn.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1'); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1' ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal='!USR1'
+run_strace_match_diff -esignal='!USR1' 
diff --git a/tests-mx32/rt_sigtimedwait.gen.test b/tests-mx32/rt_sigtimedwait.gen.test
index 2b18e7a..a9409ae 100755
--- a/tests-mx32/rt_sigtimedwait.gen.test
+++ b/tests-mx32/rt_sigtimedwait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
+run_strace_match_diff -a38 
diff --git a/tests-mx32/rt_tgsigqueueinfo.gen.test b/tests-mx32/rt_tgsigqueueinfo.gen.test
index 407bbff..0539e35 100755
--- a/tests-mx32/rt_tgsigqueueinfo.gen.test
+++ b/tests-mx32/rt_tgsigqueueinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-mx32/run.sh b/tests-mx32/run.sh
index d1b796c..208aa0f 100755
--- a/tests-mx32/run.sh
+++ b/tests-mx32/run.sh
@@ -9,4 +9,9 @@
 $TIMEOUT true > /dev/null 2>&1 ||
 	TIMEOUT=
 
-exec $TIMEOUT "$@"
+if [ $# -eq 0 ]; then
+	echo 'No command or test-file specified' >&2
+	exit 1
+fi
+
+exec $TIMEOUT "$@" < /dev/null
diff --git a/tests-mx32/s390_guarded_storage-v.c b/tests-mx32/s390_guarded_storage-v.c
new file mode 100644
index 0000000..05afd9f
--- /dev/null
+++ b/tests-mx32/s390_guarded_storage-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "s390_guarded_storage.c"
diff --git a/tests-mx32/s390_guarded_storage-v.gen.test b/tests-mx32/s390_guarded_storage-v.gen.test
new file mode 100755
index 0000000..045ff76
--- /dev/null
+++ b/tests-mx32/s390_guarded_storage-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_guarded_storage -a32 -v
diff --git a/tests-mx32/s390_guarded_storage.c b/tests-mx32/s390_guarded_storage.c
new file mode 100644
index 0000000..ab67c15
--- /dev/null
+++ b/tests-mx32/s390_guarded_storage.c
@@ -0,0 +1,229 @@
+/*
+ * Check decoding of s390_guarded_storage syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_guarded_storage && defined HAVE_ASM_GUARDED_STORAGE_H
+
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <asm/guarded_storage.h>
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
+static void
+gs_no_arg(kernel_ulong_t val, const char *val_str)
+{
+	static const kernel_ulong_t bogus_addr =
+		(kernel_ulong_t) 0xcaffeedadeadbed5ULL;
+	static const kernel_ulong_t bogus_cmd_mask =
+		(kernel_ulong_t) 0xbadc0ded00000000ULL;
+	long rc;
+
+	rc = syscall(__NR_s390_guarded_storage, val | bogus_cmd_mask,
+		     bogus_addr);
+	printf("s390_guarded_storage(%s) = %s\n", val_str, sprintrc(rc));
+}
+
+static void
+gs_print_epl(uint64_t addr, bool valid, const char *str)
+{
+	if (!valid) {
+		if (str)
+			printf("%s", str);
+		else
+			printf("%#" PRIx64, addr);
+
+		return;
+	}
+
+	struct gs_epl *gsepl = (struct gs_epl *) (uintptr_t) addr;
+
+	printf("[{");
+
+# if VERBOSE
+	if (gsepl->pad1)
+		printf("pad1=%#02x, ", gsepl->pad1);
+
+	printf("gs_eam=%#02x /* extended addressing mode: %u, "
+	       "basic addressing mode: %u */"
+	       ", gs_eci=%#02x /* CPU in TX: %u, CPU in CX: %u, "
+	       "instruction: %s */"
+	       ", gs_eai=%#02x /* DAT: %u, address space indication: %u, "
+	       "AR number: %u */, ",
+	       gsepl->gs_eam, gsepl->e, gsepl->b,
+	       gsepl->gs_eci, gsepl->tx, gsepl->cx,
+	       gsepl->in ? "LLGFGS": "LGG",
+	       gsepl->gs_eai, gsepl->t, gsepl->as, gsepl->ar);
+
+	if (gsepl->pad2)
+		printf("pad2=%#08x, ", gsepl->pad2);
+# endif /* VERBOSE */
+
+	printf("gs_eha=%#llx, ", (unsigned long long) gsepl->gs_eha);
+
+# if VERBOSE
+	printf("gs_eia=%#llx, gs_eoa=%#llx, gs_eir=%#llx, gs_era=%#llx",
+	       (unsigned long long) gsepl->gs_eia,
+	       (unsigned long long) gsepl->gs_eoa,
+	       (unsigned long long) gsepl->gs_eir,
+	       (unsigned long long) gsepl->gs_era);
+# else /* !VERBOSE */
+	printf("...");
+# endif /* VERBOSE */
+
+	printf("}]");
+}
+
+static void
+gs_set_cb(kernel_ulong_t addr, bool valid, bool epl_valid,
+	  const char *bc_str, const char *epl_str)
+{
+	static const kernel_ulong_t bogus_cmd_mask =
+		(kernel_ulong_t) 0xda7a105700000000ULL;
+
+	long rc;
+
+	printf("s390_guarded_storage(GS_SET_BC_CB, ");
+
+	if (valid) {
+		struct gs_cb *gscb = (struct gs_cb *) (uintptr_t) addr;
+
+		printf("{");
+
+		if (gscb->reserved)
+			printf("reserved=%#016llx, ",
+			       (unsigned long long) gscb->reserved);
+
+		printf("gsd=%#16llx",
+		       (unsigned long long) gscb->gsd);
+# if VERBOSE
+		printf(" /* GS origin: ");
+
+		unsigned int gsc = gscb->gsd & 0x3F;
+		unsigned int gls = (gscb->gsd >> 8) & 7;
+		bool gsc_valid = gsc >= 25 && gsc <= 56;
+
+		if (gsc_valid) {
+			uint64_t gls = gscb->gsd >> gsc;
+			int field_size = 2 + (67 - gsc) / 4;
+
+			printf("%#0*" PRIx64, field_size, gls);
+		} else {
+			printf("[invalid]");
+		}
+
+		printf(", guard load shift: %u, GS characteristic: %u */",
+		       gls, gsc);
+# endif /* VERBOSE */
+
+		printf(", gssm=%#016llx, gs_epl_a=",
+		       (unsigned long long) gscb->gssm);
+
+		gs_print_epl(gscb->gs_epl_a, epl_valid, epl_str);
+
+		printf("}");
+	} else {
+		if (bc_str)
+			printf("%s", bc_str);
+		else
+			printf("%#llx", (unsigned long long) addr);
+	}
+
+	rc = syscall(__NR_s390_guarded_storage,
+		     GS_SET_BC_CB | bogus_cmd_mask, addr);
+	printf(") = %s\n", sprintrc(rc));
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_cmd =
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL;
+	static const kernel_ulong_t bogus_addr =
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL;
+
+	struct gs_cb *gscb = tail_alloc(sizeof(*gscb));
+	struct gs_epl *gsepl = tail_alloc(sizeof(*gsepl));
+
+	long rc;
+
+	rc = syscall(__NR_s390_guarded_storage, 5, 0);
+	printf("s390_guarded_storage(0x5 /* GS_??? */, NULL) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_guarded_storage, bogus_cmd, bogus_addr);
+	printf("s390_guarded_storage(%#x /* GS_??? */, %#lx) = %s\n",
+	       (unsigned) bogus_cmd, (unsigned long) bogus_addr, sprintrc(rc));
+
+	gs_no_arg(ARG_STR(GS_BROADCAST));
+	gs_no_arg(ARG_STR(GS_CLEAR_BC_CB));
+	gs_no_arg(ARG_STR(GS_DISABLE));
+	gs_no_arg(ARG_STR(GS_ENABLE));
+
+	fill_memory(gscb, sizeof(*gscb));
+	fill_memory_ex(gsepl, sizeof(*gsepl), 0xA5, 0x5A);
+
+	gs_set_cb(0, false, false, "NULL", NULL);
+	gs_set_cb((uintptr_t) (gscb + 1), false, false, NULL, NULL);
+
+	gscb->gs_epl_a = 0;
+	gs_set_cb((uintptr_t) gscb, true, false, NULL, "NULL");
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0x5A, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) (gsepl + 1) |
+		 (sizeof(kernel_ulong_t) < sizeof(uint64_t) ?
+			0xc0debad000000000ULL : 0);
+	gs_set_cb((uintptr_t) gscb, true, false, NULL, NULL);
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0xA7, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) gsepl;
+	gs_set_cb((uintptr_t) gscb, true, true, NULL, NULL);
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0x55, 0xAA);
+	fill_memory_ex(gsepl, sizeof(*gsepl), 0x5A, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) gsepl;
+	gs_set_cb((uintptr_t) gscb, true, true, NULL, NULL);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_guarded_storage && HAVE_ASM_GUARDED_STORAGE_H")
+
+#endif
diff --git a/tests-mx32/s390_guarded_storage.gen.test b/tests-mx32/s390_guarded_storage.gen.test
new file mode 100755
index 0000000..28b5981
--- /dev/null
+++ b/tests-mx32/s390_guarded_storage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_guarded_storage -a32 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 
diff --git a/tests-mx32/s390_pci_mmio_read_write.c b/tests-mx32/s390_pci_mmio_read_write.c
new file mode 100644
index 0000000..b493948
--- /dev/null
+++ b/tests-mx32/s390_pci_mmio_read_write.c
@@ -0,0 +1,155 @@
+/*
+ * Check decoding of s390_pci_mmio_read and s390_pci_mmio_write syscalls.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_pci_mmio_read && defined __NR_s390_pci_mmio_write
+
+# include <errno.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static void
+do_call(bool wr, kernel_ulong_t mmio_addr, kernel_ulong_t buf,
+	kernel_ulong_t len, bool buf_valid, const char *buf_str)
+{
+	long saved_errno = 0;
+	long rc = 0;
+
+	printf("s390_pci_mmio_%s(%#llx, ", wr ? "write" : "read",
+	       (unsigned long long) mmio_addr);
+
+	if (!wr) {
+		rc = syscall(__NR_s390_pci_mmio_read, mmio_addr, buf, len);
+		saved_errno = errno;
+	}
+
+	if (buf_valid && !rc) {
+		char *buf_ptr = (char *) (uintptr_t) buf;
+
+		print_quoted_hex(buf_ptr,
+				 len > DEFAULT_STRLEN ? DEFAULT_STRLEN : len);
+
+		if (len > DEFAULT_STRLEN)
+			printf("...");
+	} else {
+		if (buf_str)
+			printf("%s", buf_str);
+		else
+			printf("%#llx", (unsigned long long) buf);
+	}
+
+	printf(", %llu) = ", (unsigned long long) len);
+
+	if (wr)
+		rc = syscall(__NR_s390_pci_mmio_write, mmio_addr, buf, len);
+	else
+		errno = saved_errno;
+
+	puts(sprintrc(rc));
+}
+
+int
+main(void)
+{
+	static const size_t buf_size = DEFAULT_STRLEN + 10;
+
+	char *buf = tail_alloc(buf_size);
+
+	bool bools[] = { true, false };
+
+	kernel_ulong_t addrs[] = {
+		0,
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL,
+	};
+
+	struct {
+		kernel_ulong_t buf;
+		const char *str;
+		size_t size;
+	} bufs[] = {
+		{ (kernel_ulong_t) ARG_STR(NULL),            0 },
+		{ (kernel_ulong_t) (buf + buf_size), NULL,   0 },
+		{ (kernel_ulong_t) (buf),            NULL,   buf_size },
+		{ (kernel_ulong_t) (buf + 9),        NULL,   buf_size - 9 },
+		{ (kernel_ulong_t) (buf + 10),       NULL,   buf_size - 10 },
+		{ (kernel_ulong_t) (buf + 16),       NULL,   buf_size - 16 },
+		{ (kernel_ulong_t) (buf + 26),       NULL,   buf_size - 26 },
+		{ (kernel_ulong_t) (buf + 28),       NULL,   buf_size - 28 },
+	};
+
+	kernel_ulong_t sizes[] = {
+		0,
+		DEFAULT_STRLEN / 2,
+		DEFAULT_STRLEN - 10,
+		DEFAULT_STRLEN,
+		DEFAULT_STRLEN + 1,
+		buf_size,
+		buf_size + 10,
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL,
+	};
+
+	unsigned int i, j, k, l;
+	unsigned int ctr = 0;
+
+	for (i = 0; i < ARRAY_SIZE(addrs); i++) {
+		for (j = 0; j < ARRAY_SIZE(bufs); j++) {
+			for (k = 0; k < ARRAY_SIZE(sizes); k++) {
+				for (l = 0; l < ARRAY_SIZE(bools); l++) {
+					bool valid = bufs[j].buf &&
+						bufs[j].size >=
+						MIN(sizes[k],
+						    DEFAULT_STRLEN + 1);
+
+					if (bufs[j].size && bools[l])
+						fill_memory_ex((char *) buf,
+							       bufs[j].size,
+							       0xC0 + ctr, 255);
+
+					do_call(bools[l], addrs[i], bufs[j].buf,
+						sizes[k], valid, bufs[j].str);
+
+					ctr++;
+				}
+			}
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_pci_mmio_read && __NR_s390_pci_mmio_write");
+
+#endif
diff --git a/tests-mx32/s390_pci_mmio_read_write.gen.test b/tests-mx32/s390_pci_mmio_read_write.gen.test
new file mode 100755
index 0000000..cf32e0b
--- /dev/null
+++ b/tests-mx32/s390_pci_mmio_read_write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_pci_mmio_read_write -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
diff --git a/tests-mx32/s390_runtime_instr.c b/tests-mx32/s390_runtime_instr.c
new file mode 100644
index 0000000..861bbd4
--- /dev/null
+++ b/tests-mx32/s390_runtime_instr.c
@@ -0,0 +1,99 @@
+/*
+ * Check decoding of s390_runtime_instr syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_runtime_instr
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	static struct {
+		kernel_ulong_t cmd;
+		const char * cmd_str;
+	} cmd_args[] = {
+		{ 0, "???" },
+		{ 4, "???" },
+		{ (kernel_ulong_t) 0xdeafbeefdeadc0deULL, "???" },
+		{ 2, "STOP",  },
+	};
+
+	static struct {
+		kernel_ulong_t sig;
+		const char * sig_str;
+	} start_sig_args[] = {
+		{ 0, "SIG_0" },
+		{ (kernel_ulong_t) 0xfacefeedac0ffeedULL, NULL },
+		{ ARG_STR(SIGALRM) },
+		{ 33, "SIGRT_1" },
+		{ 63, "SIGRT_31" },
+	};
+
+	unsigned int i;
+	long rc;
+
+	for (i = 0; i < ARRAY_SIZE(cmd_args); i++) {
+		rc = syscall(__NR_s390_runtime_instr, cmd_args[i].cmd, 0xdead);
+		printf("s390_runtime_instr(%d /* S390_RUNTIME_INSTR_%s */) = "
+		       "%s\n",
+		       (int) cmd_args[i].cmd, cmd_args[i].cmd_str,
+		       sprintrc(rc));
+	}
+
+	for (i = 0; i < ARRAY_SIZE(start_sig_args); i++) {
+		long saved_errno;
+
+		rc = syscall(__NR_s390_runtime_instr, 1, start_sig_args[i].sig);
+		saved_errno = errno;
+		printf("s390_runtime_instr(1 /* S390_RUNTIME_INSTR_START */, ");
+
+		if (start_sig_args[i].sig_str)
+			printf("%s", start_sig_args[i].sig_str);
+		else
+			printf("%d", (int) start_sig_args[i].sig);
+
+		errno = saved_errno;
+		printf(") = %s\n", sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_runtime_instr")
+
+#endif
diff --git a/tests-mx32/s390_runtime_instr.gen.test b/tests-mx32/s390_runtime_instr.gen.test
new file mode 100755
index 0000000..9197dc3
--- /dev/null
+++ b/tests-mx32/s390_runtime_instr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_runtime_instr -a50 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a50 
diff --git a/tests-mx32/s390_sthyi-v.c b/tests-mx32/s390_sthyi-v.c
new file mode 100644
index 0000000..8605520
--- /dev/null
+++ b/tests-mx32/s390_sthyi-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "s390_sthyi.c"
diff --git a/tests-mx32/s390_sthyi-v.gen.test b/tests-mx32/s390_sthyi-v.gen.test
new file mode 100755
index 0000000..27ab447
--- /dev/null
+++ b/tests-mx32/s390_sthyi-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_sthyi-v -e trace=s390_sthyi -a47 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_sthyi -a47 -v
diff --git a/tests-mx32/s390_sthyi.c b/tests-mx32/s390_sthyi.c
new file mode 100644
index 0000000..8b241dd
--- /dev/null
+++ b/tests-mx32/s390_sthyi.c
@@ -0,0 +1,786 @@
+/*
+ * Check decoding of s390_sthyi syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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 HAVE_ICONV_H && defined HAVE_ICONV_OPEN && defined __NR_s390_sthyi
+
+# include <errno.h>
+# include <iconv.h>
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <sys/user.h>
+
+# define EBCDIC_MAX_LEN 16
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
+static bool
+print_0x8(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	if (!zero && !buf[offs])
+		return false;
+
+	printf("%s=%#02hhx", prefix, buf[offs]);
+
+	return true;
+}
+
+static bool
+print_u8(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	if (!zero && !buf[offs])
+		return false;
+
+	printf("%s=%hhu", prefix, buf[offs]);
+
+	return true;
+}
+
+static bool
+print_u16(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	uint16_t val = *(uint16_t *) (buf + offs);
+
+	if (!zero && !val)
+		return false;
+
+	printf("%s=%" PRIu16, prefix, val);
+
+	return true;
+}
+
+static bool
+print_x32(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	uint32_t val = *(uint32_t *) (buf + offs);
+
+	if (!zero && !val)
+		return false;
+
+	printf("%s=%#" PRIx32, prefix, val);
+
+	return true;
+}
+
+static bool
+print_weight(const char *prefix, unsigned char *buf, unsigned int offs,
+	     bool zero)
+{
+	uint32_t val = *(uint32_t *) (buf + offs);
+
+	if (print_x32(prefix, buf, offs, zero)) {
+		if (val)
+			printf(" /* %u %u/65536 cores */",
+			       val >> 16, val & 0xFFFF);
+		else
+			printf(" /* unlimited */");
+
+		return true;
+	}
+
+	return false;
+}
+
+static char *
+ebcdic2ascii(unsigned char *ebcdic, size_t size)
+{
+	static char ascii_buf[EBCDIC_MAX_LEN];
+
+	char *ebcdic_pos = (char *) ebcdic;
+	char *ascii_pos = ascii_buf;
+	size_t ebcdic_left = size;
+	size_t ascii_left = size;
+	size_t ret;
+
+	iconv_t cd = iconv_open("ASCII", "EBCDICUS");
+
+	if (size > sizeof(ascii_buf))
+		error_msg_and_fail("ebcdic2ascii: EBCDIC string is too big: "
+				   "%zu (maximum is %zu)",
+				   size, sizeof(ascii_buf));
+	if (cd == (iconv_t) -1)
+		perror_msg_and_fail("ebcdic2ascii: unable to allocate a "
+				    "conversion descriptior for converting "
+				    "EBCDIC to ASCII");
+
+	while ((ret = iconv(cd, &ebcdic_pos, &ebcdic_left,
+	    &ascii_pos, &ascii_left)) == (size_t) -1) {
+		switch (errno) {
+		case EILSEQ:
+		case EINVAL: /* That one is quite unexpected, actually */
+			if (!ebcdic_left || !ascii_left)
+				goto ebcdic2ascii_end;
+
+			*ascii_pos++ = ' ';
+			ebcdic_pos++;
+			ebcdic_left--;
+
+			break;
+
+		case E2BIG:
+			perror_msg_and_fail("ebcdic2ascii: ran out of "
+					    "ASCII buffer unexpectedly");
+		default:
+			perror_msg_and_fail("ebcdic2ascii: unexpected error");
+		}
+	}
+
+ebcdic2ascii_end:
+	iconv_close(cd);
+
+	if (ebcdic_left != ascii_left)
+		error_msg_and_fail("ebcdic2ascii: ASCII string differs in size "
+				   "from EBCDIC");
+
+	return ascii_buf;
+}
+
+# if VERBOSE
+static bool
+is_empty(unsigned char *ptr, size_t size)
+{
+	size_t i;
+
+	for (i = 0; !*ptr && i < size; ptr++, i++)
+		;
+
+	return i == size;
+}
+# endif /* !VERBOSE */
+
+static bool
+print_ebcdic(const char *prefix, unsigned char *addr, unsigned int offs,
+	     size_t size, bool zero, bool blank)
+{
+	const char *ascii = ebcdic2ascii(addr + offs, size);
+
+	if (!zero) {
+		size_t i;
+
+		for (i = 0; (addr[offs + i] == (blank ? 64 : 0)) && (i < size);
+		    i++)
+			;
+
+		if (i == size)
+			return false;
+	}
+
+	printf("%s=", prefix);
+	print_quoted_hex((char *) (addr + offs), size);
+	printf(" /* ");
+	print_quoted_memory(ascii, size);
+	printf(" */");
+
+	return true;
+}
+
+static void
+print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
+			unsigned int len_pos, bool mt)
+{
+	uint16_t offs = *(uint16_t *) (buf + offs_pos);
+	uint16_t hdr_size = *(uint16_t *) (buf + len_pos);
+	unsigned char *cur;
+
+	if (!offs)
+		return;
+	if (hdr_size < 32)
+		error_msg_and_fail("sthyi: hypervisor %d section is too small "
+			           "(got %hu, 32 expected)", level, hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* hypervisor %d */ {infyflg1", level);
+	print_0x8("", cur, 0, true);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - guest CPU usage had limiting is using "
+			       "the consumption method");
+			printed = true;
+		}
+		if (cur[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - LIMITHARD caps use prorated core time "
+			       "for capping");
+			printed = true;
+		}
+		if (cur[0] & 0x3F) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x3F);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infyflg2", cur, 1, false);
+	print_0x8(", infyval1", cur, 2, false);
+	print_0x8(", infyval2", cur, 3, false);
+
+	print_u8(", infytype", cur, 4, true);
+	if (cur[4] == 1)
+		printf(" /* z/VM is the hypervisor */");
+	else
+		printf(" /* unknown hypervisor type */");
+
+	if (cur[5])
+		printf(", reserved_1__=\"\\x%#02hhx\"", cur[5]);
+
+	print_u8(", infycpt",  cur, 6, mt);
+	print_u8(", infyiflt", cur, 7, mt);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infysyid", cur, 8,  8, VERBOSE, true);
+	print_ebcdic(", infyclnm", cur, 16, 8, VERBOSE, true);
+
+	print_u16(", infyscps", cur, 24, VERBOSE);
+	print_u16(", infydcps", cur, 26, VERBOSE);
+	print_u16(", infysifl", cur, 28, VERBOSE);
+	print_u16(", infydifl", cur, 30, VERBOSE);
+
+# if VERBOSE
+	if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 32), hdr_size - 32);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+}
+
+static void
+print_guest_header(unsigned char *buf, int level, unsigned int offs_pos,
+		   unsigned int len_pos)
+{
+	uint16_t offs = *(uint16_t *) (buf + offs_pos);
+	uint16_t hdr_size = *(uint16_t *) (buf + len_pos);
+	unsigned char *cur;
+
+	if (!offs)
+		return;
+	if (hdr_size < 56)
+		error_msg_and_fail("sthyi: guest %d section is too small "
+			           "(got %hu, 56 expected)", level, hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* guest %d */ {infgflg1", level);
+	print_0x8("", cur, 0, true);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - guest is mobility enabled");
+			printed = true;
+		}
+		if (cur[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - guest has multiple virtual CPU types");
+			printed = true;
+		}
+		if (cur[0] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - guest CP dispatch type has LIMITHARD "
+			       "cap");
+			printed = true;
+		}
+		if (cur[0] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - guest IFL dispatch type has LIMITHARD "
+			       "cap");
+			printed = true;
+		}
+		if (cur[0] & 0x08) {
+			if (printed)
+				printf(", ");
+			printf("0x08 - virtual CPs are thread dispatched");
+			printed = true;
+		}
+		if (cur[0] & 0x04) {
+			if (printed)
+				printf(", ");
+			printf("0x04 - virtual IFLs are thread dispatched");
+			printed = true;
+		}
+		if (cur[0] & 0x3) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x3);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infgflg2", cur, 1, false);
+	print_0x8(", infgval1", cur, 2, false);
+	print_0x8(", infgval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infgusid", cur, 4, 8, true, false);
+
+	print_u16(", infgscps", cur, 12, VERBOSE);
+	print_u16(", infgdcps", cur, 14, VERBOSE);
+
+# if VERBOSE
+	print_u8(", infgcpdt", cur, 16, true);
+	if (cur[16] == 0)
+		printf(" /* General Purpose (CP) */");
+	else
+		printf(" /* unknown */");
+
+	if (cur[17] || cur[18] || cur[19])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[17], cur[18], cur[19]);
+# endif /* !VERBOSE */
+
+	print_weight(", infgcpcc", cur, 20, VERBOSE);
+
+	print_u16(", infgsifl", cur, 24, VERBOSE);
+	print_u16(", infgdifl", cur, 26, VERBOSE);
+
+# if VERBOSE
+	print_u8(", infgifdt", cur, 28, true);
+	if (cur[28] == 0)
+		printf(" /* General Purpose (CP) */");
+	else if (cur[28] == 3)
+		printf(" /* Integrated Facility for Linux (IFL) */");
+	else
+		printf(" /* unknown */");
+
+	if (cur[29] || cur[30] || cur[31])
+		printf(", reserved_2__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[29], cur[30], cur[31]);
+# endif /* !VERBOSE */
+
+	print_weight(", infgifcc", cur, 32, VERBOSE);
+
+	print_0x8(", infgpflg", cur, 36, true);
+# if VERBOSE
+	if (cur[36]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[36] & 0x80) {
+			printf("0x80 - CPU pool's CP virtual type has "
+			       "LIMITHARD cap");
+			printed = true;
+		}
+		if (cur[36] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - CPU pool's CP virtual type has "
+			       "CAPACITY cap");
+			printed = true;
+		}
+		if (cur[36] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - CPU pool's IFL virtual type has "
+			       "LIMITHARD cap");
+			printed = true;
+		}
+		if (cur[36] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - CPU pool's IFL virtual type has "
+			       "CAPACITY cap");
+			printed = true;
+		}
+		if (cur[36] & 0x08) {
+			if (printed)
+				printf(", ");
+			printf("0x08 - CPU pool uses prorated core time");
+			printed = true;
+		}
+		if (cur[36] & 0x7) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[36] & 0x7);
+		}
+		printf(" */");
+	}
+
+	if (cur[37] || cur[38] || cur[39])
+		printf(", reserved_3__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[37], cur[38], cur[39]);
+
+	print_ebcdic(", infgpnam", cur, 40, 8, false, true);
+
+	print_weight(", infgpccc", cur, 48, true);
+	print_weight(", infgpicc", cur, 52, true);
+
+	if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 56), hdr_size - 56);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+}
+
+static void
+print_sthyi(unsigned char *buf)
+{
+	unsigned char *cur;
+	uint16_t hdr_size;
+	uint16_t offs;
+	bool mt = false;
+
+	hdr_size = *(uint16_t *) (buf + 10);
+	if (hdr_size < 44)
+		error_msg_and_fail("sthyi: header section is too small "
+			           "(got %hu, 44 expected)", hdr_size);
+
+	/* INFHFLG1 */
+	print_0x8("{/* header */ {infhflg1", buf, 0, true);
+# if VERBOSE
+	if (buf[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (buf[0] & 0x80) {
+			printf("0x80 - Global Performance Data unavailable");
+			printed = true;
+		}
+		if (buf[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - One or more hypervisor levels below "
+			       "this level does not support the STHYI "
+			       "instruction");
+			printed = true;
+		}
+		if (buf[0] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - Virtualization stack is incomplete");
+			printed = true;
+		}
+		if (buf[0] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - Execution environment is not within a "
+			       "logical partition");
+			printed = true;
+		}
+		if (buf[0] & 0xF) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", buf[0] & 0xF);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infhflg2", buf, 1, false);
+	print_0x8(", infhval1", buf, 2, false);
+	print_0x8(", infhval2", buf, 3, false);
+
+	/* Reserved */
+	if (buf[4] || buf[5] || buf[6])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       buf[4], buf[5], buf[6]);
+
+	print_u8(", infhygct", buf, 7, true);
+	print_u16(", infhtotl", buf, 8, true);
+	print_u16(", infhdln", buf, 10, true);
+	print_u16(", infmoff", buf, 12, true);
+	print_u16(", infmlen", buf, 14, true);
+	print_u16(", infpoff", buf, 16, true);
+	print_u16(", infplen", buf, 18, true);
+	print_u16(", infhoff1", buf, 20, true);
+	print_u16(", infhlen1", buf, 22, true);
+	print_u16(", infgoff1", buf, 24, true);
+	print_u16(", infglen1", buf, 26, true);
+	print_u16(", infhoff2", buf, 28, true);
+	print_u16(", infhlen2", buf, 30, true);
+	print_u16(", infgoff2", buf, 32, true);
+	print_u16(", infglen2", buf, 34, true);
+	print_u16(", infhoff3", buf, 36, true);
+	print_u16(", infhlen3", buf, 38, true);
+	print_u16(", infgoff3", buf, 40, true);
+	print_u16(", infglen3", buf, 42, true);
+
+	if (hdr_size > 44 && !is_empty(buf + 44, hdr_size - 44)) {
+		printf(", ");
+		print_quoted_hex((char *) (buf + 44), hdr_size - 44);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+	/* Machine header */
+	offs = *(uint16_t *) (buf + 12);
+	if (!offs)
+		goto partition_hdr;
+
+	hdr_size = *(uint16_t *) (buf + 14);
+	if (hdr_size < 60)
+		error_msg_and_fail("sthyi: machine section is too small "
+			           "(got %hu, 60 expected)", hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* machine */ {");
+
+# if VERBOSE
+	print_0x8("infmflg1", cur, 0, false);
+	if (cur[0])
+		printf(", ");
+	print_0x8("infmflg2", cur, 1, false);
+	if (cur[1])
+		printf(", ");
+# endif /* !VERBOSE */
+	print_0x8("infmval1", cur, 2, true);
+
+	bool cnt_valid = cur[2] & 0x80;
+# if VERBOSE
+	bool id_valid = cur[2] & 0x40;
+	bool name_valid = cur[2] & 0x20;
+
+	printf(" /* processor count validity: %d, machine ID validity: %d, "
+	       "machine name validity: %d",
+	       !!cnt_valid, !!id_valid, !!name_valid);
+	if (cur[2] & 0x1F)
+		printf(", %#hhx - ???", cur[2] & 0x1F);
+	printf(" */");
+	print_0x8(", infmval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_u16(", infmscps", cur, 4,  cnt_valid);
+	print_u16(", infmdcps", cur, 6,  cnt_valid);
+	print_u16(", infmsifl", cur, 8,  cnt_valid);
+	print_u16(", infmdifl", cur, 10, cnt_valid);
+
+# if VERBOSE
+	print_ebcdic(", infmname", cur, 12, 8, name_valid, false);
+
+	print_ebcdic(", infmtype", cur, 20, 4,  id_valid, false);
+	print_ebcdic(", infmmanu", cur, 24, 16, id_valid, false);
+	print_ebcdic(", infmseq",  cur, 40, 16, id_valid, false);
+	print_ebcdic(", infmpman", cur, 56, 4,  id_valid, false);
+
+	if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 60), hdr_size - 60);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+partition_hdr:
+	/* Partition header */
+	offs = *(uint16_t *) (buf + 16);
+	if (!offs)
+		goto hv_hdr;
+
+	hdr_size = *(uint16_t *) (buf + 18);
+	if (hdr_size < 56)
+		error_msg_and_fail("sthyi: partition section is too small "
+			           "(got %hu, 56 expected)", hdr_size);
+
+	cur = buf + offs;
+
+	print_0x8(", /* partition */ {infpflg1", cur, 0, true);
+	mt = !!(cur[0] & 0x80);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - multithreading is enabled");
+			printed = true;
+		}
+		if (cur[0] & 0x7F) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x7F);
+		}
+		printf(" */");
+	}
+	print_0x8(", infpflg2", cur, 1, false);
+# endif /* !VERBOSE */
+	print_0x8(", infpval1", cur, 2, true);
+
+	bool pcnt_valid  = cur[2] & 0x80;
+	bool pid_valid   = cur[2] & 0x10;
+# if VERBOSE
+	bool pwcap_valid = cur[2] & 0x40;
+	bool pacap_valid = cur[2] & 0x20;
+	bool lpar_valid  = cur[2] & 0x08;
+# endif /* !VERBOSE */
+
+# if VERBOSE
+	printf(" /* processor count validity: %d, partition weight-based "
+	       "capacity validity: %d, partition absolute capacity validity: "
+	       "%d, partition ID validity: %d, LPAR group absolute capacity "
+	       "capping information validity: %d",
+	       !!pcnt_valid, !!pwcap_valid, !!pacap_valid, !!pid_valid,
+	       !!lpar_valid);
+	if (cur[2] & 0x7)
+		printf(", %#hhx - ???", cur[2] & 0x7);
+	printf(" */");
+
+	print_0x8(", infpval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_u16(", infppnum", cur, 4, pid_valid);
+
+	print_u16(", infpscps", cur, 6,  pcnt_valid);
+	print_u16(", infpdcps", cur, 8,  pcnt_valid);
+	print_u16(", infpsifl", cur, 10, pcnt_valid);
+	print_u16(", infpdifl", cur, 12, pcnt_valid);
+
+# if VERBOSE
+	if (cur[14] || cur[15])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\"",
+		       cur[14], cur[15]);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infppnam", cur, 16, 8, pid_valid, false);
+
+# if VERBOSE
+	print_weight(", infpwbcp", cur, 24, pwcap_valid);
+	print_weight(", infpabcp", cur, 28, pacap_valid);
+	print_weight(", infpwbif", cur, 32, pwcap_valid);
+	print_weight(", infpabif", cur, 36, pacap_valid);
+
+	if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
+
+		print_weight(", infplgcp", cur, 48, false);
+		print_weight(", infplgif", cur, 52, false);
+	} else {
+		if (lpar_valid) {
+			printf(", infplgnm=");
+			print_quoted_hex((char *) (cur + 40), 8);
+		}
+
+		print_x32(", infplgcp", cur, 48, false);
+		print_x32(", infplgif", cur, 52, false);
+	}
+
+	if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 56), hdr_size - 56);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+hv_hdr:
+	/* Hypervisor/guest headers */
+	print_hypervisor_header(buf, 1, 20, 22, mt);
+	print_guest_header(buf, 1, 24, 26);
+	print_hypervisor_header(buf, 2, 28, 30, mt);
+	print_guest_header(buf, 2, 32, 34);
+	print_hypervisor_header(buf, 3, 36, 38, mt);
+	print_guest_header(buf, 3, 40, 42);
+
+	printf("}");
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_func =
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL;
+	static const kernel_ulong_t bogus_resp_buf =
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL;
+	static const kernel_ulong_t bogus_ret_code =
+		(kernel_ulong_t) 0xf00dfa57decaffedULL;
+	static const kernel_ulong_t bogus_flags =
+		(kernel_ulong_t) 0xfee1deadfa57beefULL;
+
+	unsigned char *buf = tail_alloc(PAGE_SIZE);
+	uint64_t *ret = tail_alloc(sizeof(*ret));
+
+	long rc;
+
+	rc = syscall(__NR_s390_sthyi, 0, 0, 0, 0);
+	printf("s390_sthyi(STHYI_FC_CP_IFL_CAP, NULL, NULL, 0) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, bogus_func, bogus_resp_buf,
+		     bogus_ret_code, bogus_flags);
+	printf("s390_sthyi(%#llx /* STHYI_FC_??? */, %#llx, %#llx, %#llx) = "
+	       "%s\n",
+	       (unsigned long long) bogus_func,
+	       (unsigned long long) bogus_resp_buf,
+	       (unsigned long long) bogus_ret_code,
+	       (unsigned long long) bogus_flags,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, bogus_func, buf, ret, 0);
+	printf("s390_sthyi(%#llx /* STHYI_FC_??? */, %p, %p, 0) = %s\n",
+	       (unsigned long long) bogus_func, buf, ret, sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, 0, buf, ret, 0);
+	if (rc)
+		error_msg_and_fail("syscall(__NR_s390_sthyi, 0, buf, ret, 0) "
+				   "returned unexpected value of %ld", rc);
+
+	printf("s390_sthyi(STHYI_FC_CP_IFL_CAP, ");
+	print_sthyi(buf);
+	printf(", [0], 0) = 0\n");
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_ICONV_H && HAVE_ICONV_OPEN && __NR_s390_sthyi")
+
+#endif
diff --git a/tests-mx32/s390_sthyi.gen.test b/tests-mx32/s390_sthyi.gen.test
new file mode 100755
index 0000000..cf27137
--- /dev/null
+++ b/tests-mx32/s390_sthyi.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_sthyi -a47 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a47 
diff --git a/tests-mx32/sched_rr_get_interval.gen.test b/tests-mx32/sched_rr_get_interval.gen.test
index 493de64..02aad00 100755
--- a/tests-mx32/sched_rr_get_interval.gen.test
+++ b/tests-mx32/sched_rr_get_interval.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests-mx32/sched_yield.gen.test b/tests-mx32/sched_yield.gen.test
index 3f4542f..4b035fd 100755
--- a/tests-mx32/sched_yield.gen.test
+++ b/tests-mx32/sched_yield.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-mx32/select-P.c b/tests-mx32/select-P.c
new file mode 100644
index 0000000..868deed
--- /dev/null
+++ b/tests-mx32/select-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "select.c"
diff --git a/tests-mx32/select-P.gen.test b/tests-mx32/select-P.gen.test
new file mode 100755
index 0000000..2f6fc7b
--- /dev/null
+++ b/tests-mx32/select-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select-P -a36 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/select.gen.test b/tests-mx32/select.gen.test
index cb3b8f1..2383614 100755
--- a/tests-mx32/select.gen.test
+++ b/tests-mx32/select.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-mx32/sendfile.gen.test b/tests-mx32/sendfile.gen.test
index 433878f..d32ef3a 100755
--- a/tests-mx32/sendfile.gen.test
+++ b/tests-mx32/sendfile.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/sendfile64.gen.test b/tests-mx32/sendfile64.gen.test
index 1655dd3..24f0746 100755
--- a/tests-mx32/sendfile64.gen.test
+++ b/tests-mx32/sendfile64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
+run_strace_match_diff -a29 
diff --git a/tests-mx32/set_ptracer_any.c b/tests-mx32/set_ptracer_any.c
index 3b4ea2c..3c11296 100644
--- a/tests-mx32/set_ptracer_any.c
+++ b/tests-mx32/set_ptracer_any.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,10 +37,16 @@
 {
 	if (argc < 2)
 		return 99;
-#if defined HAVE_PRCTL && defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY
-	/* Turn off restrictions on tracing if applicable.  If the options
+#ifdef HAVE_PRCTL
+	/* Turn off restrictions on tracing if applicable.  If the command
 	 * aren't available on this system, that's OK too.  */
-	(void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
+# ifndef PR_SET_PTRACER
+#  define PR_SET_PTRACER 0x59616d61
+# endif
+# ifndef PR_SET_PTRACER_ANY
+#  define PR_SET_PTRACER_ANY -1UL
+# endif
+	(void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
 #endif
 	if (write(1, "\n", 1) != 1) {
 		perror("write");
diff --git a/tests-mx32/setdomainname.gen.test b/tests-mx32/setdomainname.gen.test
index 2b12e08..1f29563 100755
--- a/tests-mx32/setdomainname.gen.test
+++ b/tests-mx32/setdomainname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/setfsgid.gen.test b/tests-mx32/setfsgid.gen.test
index caff401..bbb30cc 100755
--- a/tests-mx32/setfsgid.gen.test
+++ b/tests-mx32/setfsgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-mx32/setfsgid32.gen.test b/tests-mx32/setfsgid32.gen.test
index fae29e0..63b3eca 100755
--- a/tests-mx32/setfsgid32.gen.test
+++ b/tests-mx32/setfsgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-mx32/setfsuid.gen.test b/tests-mx32/setfsuid.gen.test
index e4c4d20..5896b30 100755
--- a/tests-mx32/setfsuid.gen.test
+++ b/tests-mx32/setfsuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-mx32/setfsuid32.gen.test b/tests-mx32/setfsuid32.gen.test
index b6cd67d..52d0820 100755
--- a/tests-mx32/setfsuid32.gen.test
+++ b/tests-mx32/setfsuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-mx32/setgid.gen.test b/tests-mx32/setgid.gen.test
index f10add6..be188d1 100755
--- a/tests-mx32/setgid.gen.test
+++ b/tests-mx32/setgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/setgid32.gen.test b/tests-mx32/setgid32.gen.test
index 26f194e..9020b80 100755
--- a/tests-mx32/setgid32.gen.test
+++ b/tests-mx32/setgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-mx32/sethostname.gen.test b/tests-mx32/sethostname.gen.test
index 2827b1d..d68ed18 100755
--- a/tests-mx32/sethostname.gen.test
+++ b/tests-mx32/sethostname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests-mx32/setns.gen.test b/tests-mx32/setns.gen.test
index 45fcc60..e25738b 100755
--- a/tests-mx32/setns.gen.test
+++ b/tests-mx32/setns.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-mx32/setregid.gen.test b/tests-mx32/setregid.gen.test
index 0125d7a..f84b1ac 100755
--- a/tests-mx32/setregid.gen.test
+++ b/tests-mx32/setregid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-mx32/setregid32.gen.test b/tests-mx32/setregid32.gen.test
index 24f1505..7320c8c 100755
--- a/tests-mx32/setregid32.gen.test
+++ b/tests-mx32/setregid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/setresgid.gen.test b/tests-mx32/setresgid.gen.test
index ca5bc6b..792313c 100755
--- a/tests-mx32/setresgid.gen.test
+++ b/tests-mx32/setresgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-mx32/setresgid32.gen.test b/tests-mx32/setresgid32.gen.test
index a5edb90..6ecf936 100755
--- a/tests-mx32/setresgid32.gen.test
+++ b/tests-mx32/setresgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-mx32/setresuid.gen.test b/tests-mx32/setresuid.gen.test
index a6e0664..a0dcb4b 100755
--- a/tests-mx32/setresuid.gen.test
+++ b/tests-mx32/setresuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests-mx32/setresuid32.gen.test b/tests-mx32/setresuid32.gen.test
index 3fbf36b..a9f4396 100755
--- a/tests-mx32/setresuid32.gen.test
+++ b/tests-mx32/setresuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests-mx32/setreuid.gen.test b/tests-mx32/setreuid.gen.test
index 4c3dc93..0ecaef0 100755
--- a/tests-mx32/setreuid.gen.test
+++ b/tests-mx32/setreuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-mx32/setreuid32.gen.test b/tests-mx32/setreuid32.gen.test
index d179053..3eb0e95 100755
--- a/tests-mx32/setreuid32.gen.test
+++ b/tests-mx32/setreuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/setrlimit.gen.test b/tests-mx32/setrlimit.gen.test
index dfe2da3..0d1508d 100755
--- a/tests-mx32/setrlimit.gen.test
+++ b/tests-mx32/setrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests-mx32/setugid.c b/tests-mx32/setugid.c
index aba277c..6ceec7f 100644
--- a/tests-mx32/setugid.c
+++ b/tests-mx32/setugid.c
@@ -2,6 +2,7 @@
  * Check decoding of setuid/setgid/setuid32/setgid32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -61,6 +62,8 @@
 		const unsigned int num = (unsigned UGID_TYPE) tests[i];
 		long expected;
 
+		errno = 0;
+
 		if (num == ugid)
 			expected = 0;
 		else if ((UGID_TYPE) num == (UGID_TYPE) -1U)
@@ -77,8 +80,9 @@
 				       SYSCALL_NAME, ugid, errstr);
 				break;
 			}
-			perror_msg_and_fail("%s(%#lx) != %ld",
-					    SYSCALL_NAME, tests[i], expected);
+			perror_msg_and_fail("%s(%#lx) = %ld != %ld",
+					    SYSCALL_NAME, tests[i],
+					    rc, expected);
 		}
 
 		printf("%s(", SYSCALL_NAME);
diff --git a/tests-mx32/setuid.gen.test b/tests-mx32/setuid.gen.test
index 98d470f..00aeb7a 100755
--- a/tests-mx32/setuid.gen.test
+++ b/tests-mx32/setuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/setuid32.gen.test b/tests-mx32/setuid32.gen.test
index 7d15495..ac8df8f 100755
--- a/tests-mx32/setuid32.gen.test
+++ b/tests-mx32/setuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests-mx32/shmxt.c b/tests-mx32/shmxt.c
index 23cc7cc..398667c 100644
--- a/tests-mx32/shmxt.c
+++ b/tests-mx32/shmxt.c
@@ -18,6 +18,10 @@
 # define SHMAT "shmat"
 #endif
 
+#ifndef SHM_EXEC
+# define SHM_EXEC 0100000
+#endif
+
 int
 main(void)
 {
@@ -34,8 +38,8 @@
 	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,
+	printf("%s(%d, %p, SHM_RDONLY|SHM_RND|SHM_REMAP|SHM_EXEC|%#x) = %s\n",
+	       SHMAT, bogus_shmid, bogus_shmaddr, bogus_shmflg & ~0xf000,
 	       sprintrc(rc));
 
 	shmat(id, NULL, SHM_REMAP);
@@ -50,18 +54,31 @@
 	rc = shmdt(NULL);
 	printf("shmdt(NULL) = %s\n", sprintrc(rc));
 
-	if (shmdt(shmaddr))
-		perror_msg_and_skip("shmdt");
-	printf("shmdt(%p) = 0\n", shmaddr);
+	rc = shmdt(shmaddr);
+	printf("shmdt(%p) = %s\n", shmaddr, sprintrc(rc));
 
 	++shmaddr;
 	void *shmaddr2 = shmat(id, shmaddr, SHM_RND);
 	if (shmaddr2 == (void *)(-1))
 		printf("%s(%d, %p, SHM_RND) = -1 %s (%m)\n",
 		       SHMAT, id, shmaddr, errno2name());
-	else
+	else {
 		printf("%s(%d, %p, SHM_RND) = %p\n",
 		       SHMAT, id, shmaddr, shmaddr2);
+		rc = shmdt(shmaddr2);
+		printf("shmdt(%p) = %s\n", shmaddr2, sprintrc(rc));
+	}
+
+	shmaddr = shmat(id, NULL, SHM_RDONLY|SHM_EXEC);
+	if (shmaddr == (void *)(-1))
+		printf("%s(%d, NULL, SHM_RDONLY|SHM_EXEC) = %s\n",
+		       SHMAT, id, sprintrc(-1));
+	else {
+		printf("%s(%d, NULL, SHM_RDONLY|SHM_EXEC) = %p\n",
+		       SHMAT, id, shmaddr);
+		rc = shmdt(shmaddr);
+		printf("shmdt(%p) = %s\n", shmaddr, sprintrc(rc));
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/shutdown.gen.test b/tests-mx32/shutdown.gen.test
index 3412513..7fde46e 100755
--- a/tests-mx32/shutdown.gen.test
+++ b/tests-mx32/shutdown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/sigaction.gen.test b/tests-mx32/sigaction.gen.test
index dee340e..1db6b3a 100755
--- a/tests-mx32/sigaction.gen.test
+++ b/tests-mx32/sigaction.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigaction -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigaction -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests-mx32/signalfd4.gen.test b/tests-mx32/signalfd4.gen.test
index e91a9fe..dee4274 100755
--- a/tests-mx32/signalfd4.gen.test
+++ b/tests-mx32/signalfd4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/sigpending.gen.test b/tests-mx32/sigpending.gen.test
index 0f4259a..c061868 100755
--- a/tests-mx32/sigpending.gen.test
+++ b/tests-mx32/sigpending.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigpending -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigpending -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests-mx32/sigprocmask.gen.test b/tests-mx32/sigprocmask.gen.test
index 44a508c..065b74d 100755
--- a/tests-mx32/sigprocmask.gen.test
+++ b/tests-mx32/sigprocmask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigprocmask -a34); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigprocmask -a34 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+run_strace_match_diff -a34 
diff --git a/tests-mx32/sigreturn.gen.test b/tests-mx32/sigreturn.gen.test
index f317e89..3b67c9d 100755
--- a/tests-mx32/sigreturn.gen.test
+++ b/tests-mx32/sigreturn.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1'); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1' ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal='!USR1'
+run_strace_match_diff -esignal='!USR1' 
diff --git a/tests-mx32/socketcall.gen.test b/tests-mx32/socketcall.gen.test
index 95c45fd..d18b036 100755
--- a/tests-mx32/socketcall.gen.test
+++ b/tests-mx32/socketcall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests-mx32/sockname.c b/tests-mx32/sockname.c
index 5872671..bba9a89 100644
--- a/tests-mx32/sockname.c
+++ b/tests-mx32/sockname.c
@@ -2,7 +2,7 @@
  * Check decoding of sockname family syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,7 +42,9 @@
 # error TEST_SYSCALL_NAME must be defined
 #endif
 
-#define TEST_SYSCALL_STR STRINGIFY_VAL(TEST_SYSCALL_NAME)
+#ifndef TEST_SYSCALL_STR
+# define TEST_SYSCALL_STR STRINGIFY_VAL(TEST_SYSCALL_NAME)
+#endif
 #define TEST_SOCKET TEST_SYSCALL_STR ".socket"
 
 #ifdef TEST_SYSCALL_PREPARE
diff --git a/tests-mx32/sockopt-sol_netlink.c b/tests-mx32/sockopt-sol_netlink.c
new file mode 100644
index 0000000..066920c
--- /dev/null
+++ b/tests-mx32/sockopt-sol_netlink.c
@@ -0,0 +1,213 @@
+/*
+ * Check decoding of getsockopt and setsockopt for SOL_NETLINK level.
+ *
+ * Copyright (c) 2017 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 "netlink.h"
+#include <stdio.h>
+
+#ifndef SOL_NETLINK
+# define SOL_NETLINK 270
+#endif
+
+static int rc;
+static const char *errstr;
+
+static int
+get_sockopt(int fd, int name, void *val, socklen_t *len)
+{
+	rc = getsockopt(fd, SOL_NETLINK, name, val, len);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+static int
+set_sockopt(int fd, int name, void *val, socklen_t len)
+{
+	rc = setsockopt(fd, SOL_NETLINK, name, val, len);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	static const struct {
+		int val;
+		const char *str;
+	} names[] = {
+#ifdef NETLINK_ADD_MEMBERSHIP
+		{ ARG_STR(NETLINK_ADD_MEMBERSHIP) },
+#endif
+#ifdef NETLINK_DROP_MEMBERSHIP
+		{ ARG_STR(NETLINK_DROP_MEMBERSHIP) },
+#endif
+#ifdef NETLINK_PKTINFO
+		{ ARG_STR(NETLINK_PKTINFO) },
+#endif
+#ifdef NETLINK_BROADCAST_ERROR
+		{ ARG_STR(NETLINK_BROADCAST_ERROR) },
+#endif
+#ifdef NETLINK_NO_ENOBUFS
+		{ ARG_STR(NETLINK_NO_ENOBUFS) },
+#endif
+#ifdef NETLINK_RX_RING
+		{ ARG_STR(NETLINK_RX_RING) },
+#endif
+#ifdef NETLINK_TX_RING
+		{ ARG_STR(NETLINK_TX_RING) },
+#endif
+#ifdef NETLINK_LISTEN_ALL_NSID
+		{ ARG_STR(NETLINK_LISTEN_ALL_NSID) },
+#endif
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		{ ARG_STR(NETLINK_LIST_MEMBERSHIPS) },
+#endif
+#ifdef NETLINK_CAP_ACK
+		{ ARG_STR(NETLINK_CAP_ACK) },
+#endif
+#ifdef NETLINK_EXT_ACK
+		{ ARG_STR(NETLINK_EXT_ACK) },
+#endif
+	};
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val);
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	void *const efault = val + 1;
+        int fd = socket(AF_NETLINK, SOCK_RAW, 0);
+        if (fd < 0)
+                perror_msg_and_skip("socket AF_NETLINK SOCK_RAW");
+	unsigned int i;
+
+	for (i = 0; i < ARRAY_SIZE(names); ++i) {
+		/* getsockopt */
+
+		/* classic */
+		*len = sizeof(*val);
+		get_sockopt(fd, names[i].val, val, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, ", fd, names[i].str);
+		if (rc)
+			printf("%p", val);
+		else
+			printf("[%d]", *val);
+		printf(", [%d]) = %s\n", *len, errstr);
+
+		/* optlen larger than necessary - shortened */
+		*len = sizeof(*val) + 1;
+		get_sockopt(fd, names[i].val, val, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, ", fd, names[i].str);
+		if (rc)
+			printf("%p", val);
+		else
+			printf("[%d]", *val);
+		printf(", [%d", (int) sizeof(*val) + 1);
+		if ((int) sizeof(*val) + 1 != *len)
+			printf("->%d", *len);
+		printf("]) = %s\n", errstr);
+
+		/* zero optlen - print returned optlen */
+		*len = 0;
+		get_sockopt(fd, names[i].val, NULL, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, NULL, [0",
+		       fd, names[i].str);
+		if (*len)
+			printf("->%d", *len);
+		printf("]) = %s\n", errstr);
+
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		if (names[i].val != NETLINK_LIST_MEMBERSHIPS) {
+#endif
+			/* optlen shorter than necessary - print address */
+			*len = sizeof(*val) - 1;
+			get_sockopt(fd, names[i].val, val, len);
+			printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d",
+			       fd, names[i].str, val, (int) sizeof(*val) - 1);
+			if ((int) sizeof(*val) - 1 != *len)
+				printf("->%d", *len);
+			printf("]) = %s\n", errstr);
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		} else {
+			/* optlen shorter than required for the first element */
+			*len = sizeof(*val) - 1;
+			get_sockopt(fd, names[i].val, efault, len);
+			printf("getsockopt(%d, SOL_NETLINK, %s, ",
+			       fd, names[i].str);
+			if (rc)
+				printf("%p", efault);
+			else
+				printf("[]");
+			printf(", [%d", (int) sizeof(*val) - 1);
+			if ((int) sizeof(*val) - 1 != *len)
+				printf("->%d", *len);
+			printf("]) = %s\n", errstr);
+		}
+#endif
+
+		/* optval EFAULT - print address */
+		*len = sizeof(*val);
+		get_sockopt(fd, names[i].val, efault, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d]) = %s\n",
+		       fd, names[i].str, efault, *len, errstr);
+
+		/* optlen EFAULT - print address */
+		get_sockopt(fd, names[i].val, val, len + 1);
+		printf("getsockopt(%d, SOL_NETLINK, %s, %p, %p) = %s\n",
+		       fd, names[i].str, val, len + 1, errstr);
+
+		/* setsockopt */
+
+		/* classic */
+		*val = 0xdefaced;
+		set_sockopt(fd, names[i].val, val, sizeof(*val));
+		printf("setsockopt(%d, SOL_NETLINK, %s, [%d], %d) = %s\n",
+		       fd, names[i].str, *val, (int) sizeof(*val), errstr);
+
+		/* optlen larger than necessary - shortened */
+		set_sockopt(fd, names[i].val, val, sizeof(*val) + 1);
+		printf("setsockopt(%d, SOL_NETLINK, %s, [%d], %d) = %s\n",
+		       fd, names[i].str, *val, (int) sizeof(*val) + 1, errstr);
+
+		/* optlen < 0 - print address */
+		set_sockopt(fd, names[i].val, val, -1U);
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, -1) = %s\n",
+		       fd, names[i].str, val, errstr);
+
+		/* optlen smaller than necessary - print address */
+		set_sockopt(fd, names[i].val, val, sizeof(*val) - 1);
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, %d) = %s\n",
+		       fd, names[i].str, val, (int) sizeof(*val) - 1, errstr);
+
+		/* optval EFAULT - print address */
+		set_sockopt(fd, names[i].val, efault, sizeof(*val));
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, %d) = %s\n",
+		       fd, names[i].str, efault, (int) sizeof(*val), errstr);
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-mx32/sockopt-sol_netlink.gen.test b/tests-mx32/sockopt-sol_netlink.gen.test
new file mode 100755
index 0000000..a2ba06d
--- /dev/null
+++ b/tests-mx32/sockopt-sol_netlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sockopt-sol_netlink -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests-mx32/splice.gen.test b/tests-mx32/splice.gen.test
index 83c8406..7566080 100755
--- a/tests-mx32/splice.gen.test
+++ b/tests-mx32/splice.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/stack-fcall-0.c b/tests-mx32/stack-fcall-0.c
index 12a260d..edd6d32 100644
--- a/tests-mx32/stack-fcall-0.c
+++ b/tests-mx32/stack-fcall-0.c
@@ -1,4 +1,4 @@
-int f1(int i);
+#include "stack-fcall.h"
 
 int f0(int i)
 {
diff --git a/tests-mx32/stack-fcall-1.c b/tests-mx32/stack-fcall-1.c
index 8716702..5d0bf0e 100644
--- a/tests-mx32/stack-fcall-1.c
+++ b/tests-mx32/stack-fcall-1.c
@@ -1,4 +1,4 @@
-int f2(int i);
+#include "stack-fcall.h"
 
 int f1(int i)
 {
diff --git a/tests-mx32/stack-fcall-2.c b/tests-mx32/stack-fcall-2.c
index 19f8cf8..e164320 100644
--- a/tests-mx32/stack-fcall-2.c
+++ b/tests-mx32/stack-fcall-2.c
@@ -1,4 +1,4 @@
-int f3(int i);
+#include "stack-fcall.h"
 
 int f2(int i)
 {
diff --git a/tests-mx32/stack-fcall-3.c b/tests-mx32/stack-fcall-3.c
index 3af1667..98726d8 100644
--- a/tests-mx32/stack-fcall-3.c
+++ b/tests-mx32/stack-fcall-3.c
@@ -1,4 +1,5 @@
 #include <unistd.h>
+#include "stack-fcall.h"
 
 int f3(int i)
 {
diff --git a/tests-mx32/stack-fcall-mangled-0.c b/tests-mx32/stack-fcall-mangled-0.c
new file mode 100644
index 0000000..4754940
--- /dev/null
+++ b/tests-mx32/stack-fcall-mangled-0.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-0.c"
diff --git a/tests-mx32/stack-fcall-mangled-1.c b/tests-mx32/stack-fcall-mangled-1.c
new file mode 100644
index 0000000..492c562
--- /dev/null
+++ b/tests-mx32/stack-fcall-mangled-1.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-1.c"
diff --git a/tests-mx32/stack-fcall-mangled-2.c b/tests-mx32/stack-fcall-mangled-2.c
new file mode 100644
index 0000000..eb7c362
--- /dev/null
+++ b/tests-mx32/stack-fcall-mangled-2.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-2.c"
diff --git a/tests-mx32/stack-fcall-mangled-3.c b/tests-mx32/stack-fcall-mangled-3.c
new file mode 100644
index 0000000..98f738b
--- /dev/null
+++ b/tests-mx32/stack-fcall-mangled-3.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-3.c"
diff --git a/tests-mx32/stack-fcall-mangled.c b/tests-mx32/stack-fcall-mangled.c
new file mode 100644
index 0000000..6786205
--- /dev/null
+++ b/tests-mx32/stack-fcall-mangled.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall.c"
diff --git a/tests-mx32/stack-fcall.c b/tests-mx32/stack-fcall.c
index fc9ee5f..e0ec3b1 100644
--- a/tests-mx32/stack-fcall.c
+++ b/tests-mx32/stack-fcall.c
@@ -1,4 +1,4 @@
-int f0(int i);
+#include "stack-fcall.h"
 
 int main(int argc, char **argv)
 {
diff --git a/tests-mx32/stack-fcall.h b/tests-mx32/stack-fcall.h
new file mode 100644
index 0000000..1a83bad
--- /dev/null
+++ b/tests-mx32/stack-fcall.h
@@ -0,0 +1,13 @@
+#ifdef MANGLE
+
+#define f0 _ZN2ns2f0Ei
+#define f1 _ZN2ns2f1Ei
+#define f2 _ZN2ns2f2Ei
+#define f3 _ZN2ns2f3Ei
+
+#endif
+
+int f0(int i);
+int f1(int i);
+int f2(int i);
+int f3(int i);
diff --git a/tests-mx32/statfs.gen.test b/tests-mx32/statfs.gen.test
index 19b26dd..32204a1 100755
--- a/tests-mx32/statfs.gen.test
+++ b/tests-mx32/statfs.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/statfs64.gen.test b/tests-mx32/statfs64.gen.test
index 66409f9..8f6f06f 100755
--- a/tests-mx32/statfs64.gen.test
+++ b/tests-mx32/statfs64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
+run_strace_match_diff -a23 
diff --git a/tests-mx32/strace-V.test b/tests-mx32/strace-V.test
index ec1ca05..eb05e86 100755
--- a/tests-mx32/strace-V.test
+++ b/tests-mx32/strace-V.test
@@ -39,8 +39,21 @@
 }
 
 option_unwind=$(getoption USE_LIBUNWIND " stack-unwind")
+option_demangle=$(getoption USE_DEMANGLE " stack-demangle")
 
-features="${option_unwind}"
+option_m32=
+option_mx32=
+case "$STRACE_NATIVE_ARCH" in
+x86_64)
+	option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+	option_mx32=$(getoption HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
+	;;
+aarch64|powerpc64|riscv|s390x|sparc64|tile|x32)
+	option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+	;;
+esac
+
+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
 [ -n "$features" ] || features=" (none)"
 
 cat > "$EXP" << __EOF__
diff --git a/tests-mx32/strace-k-demangle.test b/tests-mx32/strace-k-demangle.test
new file mode 100755
index 0000000..1616449
--- /dev/null
+++ b/tests-mx32/strace-k-demangle.test
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Check strace -k symbol names demangling.
+
+test_prog=../stack-fcall-mangled
+expected='getpid ns::f3(int) ns::f2(int) ns::f1(int) ns::f0(int) main '
+
+. "${srcdir=.}"/strace-k.test
diff --git a/tests-mx32/strace-k.test b/tests-mx32/strace-k.test
index e68951e..2a21a9d 100755
--- a/tests-mx32/strace-k.test
+++ b/tests-mx32/strace-k.test
@@ -38,11 +38,13 @@
 check_prog sed
 check_prog tr
 
-run_prog ../stack-fcall
+: ${test_prog=../stack-fcall}
+: ${expected='getpid f3 f2 f1 f0 main '}
+
+run_prog "$test_prog"
 run_strace -e getpid -k $args
 
-expected='getpid f3 f2 f1 f0 main '
-result=$(sed -r -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" || {
@@ -50,5 +52,3 @@
 	echo "result: \"$result\""
 	dump_log_and_fail_with "$STRACE $args output mismatch"
 }
-
-exit 0
diff --git a/tests-mx32/symlink.gen.test b/tests-mx32/symlink.gen.test
index f41668c..8cedfbf 100755
--- a/tests-mx32/symlink.gen.test
+++ b/tests-mx32/symlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+run_strace_match_diff -a34 
diff --git a/tests-mx32/symlinkat.gen.test b/tests-mx32/symlinkat.gen.test
index 39e624a..12455dd 100755
--- a/tests-mx32/symlinkat.gen.test
+++ b/tests-mx32/symlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/sync.gen.test b/tests-mx32/sync.gen.test
index 4aaf8c7..8436a1f 100755
--- a/tests-mx32/sync.gen.test
+++ b/tests-mx32/sync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
+run_strace_match_diff -a7 
diff --git a/tests-mx32/sync_file_range.gen.test b/tests-mx32/sync_file_range.gen.test
index 0693c12..2f41c7d 100755
--- a/tests-mx32/sync_file_range.gen.test
+++ b/tests-mx32/sync_file_range.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/sync_file_range2.gen.test b/tests-mx32/sync_file_range2.gen.test
index 23046b6..d432647 100755
--- a/tests-mx32/sync_file_range2.gen.test
+++ b/tests-mx32/sync_file_range2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/syntax.sh b/tests-mx32/syntax.sh
index 0a0d2a5..b1c8fdc 100644
--- a/tests-mx32/syntax.sh
+++ b/tests-mx32/syntax.sh
@@ -50,13 +50,11 @@
 			"strace $* failed to print expected diagnostics"
 }
 
-strace_exp="${STRACE##* }"
-
 check_e()
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
+$STRACE_EXE: $pattern
 __EOF__
 	check_exit_status_and_stderr "$@"
 }
@@ -65,7 +63,7 @@
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
+$STRACE_EXE: $pattern
 __EOF__
 	check_exit_status_and_stderr_using_grep "$@"
 }
@@ -74,8 +72,8 @@
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
-Try '$strace_exp -h' for more information.
+$STRACE_EXE: $pattern
+Try '$STRACE_EXE -h' for more information.
 __EOF__
 	check_exit_status_and_stderr "$@"
 }
diff --git a/tests-mx32/sysinfo.gen.test b/tests-mx32/sysinfo.gen.test
index e6469d5..fa46237 100755
--- a/tests-mx32/sysinfo.gen.test
+++ b/tests-mx32/sysinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests-mx32/syslog.gen.test b/tests-mx32/syslog.gen.test
index 5423d5b..5707a3e 100755
--- a/tests-mx32/syslog.gen.test
+++ b/tests-mx32/syslog.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests-mx32/tee.gen.test b/tests-mx32/tee.gen.test
index 2a87fae..b5fbfc0 100755
--- a/tests-mx32/tee.gen.test
+++ b/tests-mx32/tee.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/test_printpath.c b/tests-mx32/test_printpath.c
index 5f482f2..c485a26 100644
--- a/tests-mx32/test_printpath.c
+++ b/tests-mx32/test_printpath.c
@@ -2,6 +2,7 @@
  * Test printpath/umovestr.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,10 +30,10 @@
 
 #include "tests.h"
 
+#include <limits.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 #include "test_ucopy.h"
 
diff --git a/tests-mx32/test_ucopy.c b/tests-mx32/test_ucopy.c
index 9ddffbc..09f809a 100644
--- a/tests-mx32/test_ucopy.c
+++ b/tests-mx32/test_ucopy.c
@@ -2,6 +2,7 @@
  * Test whether process_vm_readv and PTRACE_PEEKDATA work.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,10 +31,10 @@
 #include "tests.h"
 
 #include <errno.h>
+#include <sys/ptrace.h>
 #include <signal.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <sys/ptrace.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
 
diff --git a/tests-mx32/tests.h b/tests-mx32/tests.h
index d453e3e..1c66c26 100644
--- a/tests-mx32/tests.h
+++ b/tests-mx32/tests.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -75,6 +75,15 @@
 void perror_msg_and_skip(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+#ifndef perror_msg_and_fail
+# define perror_msg_and_fail(fmt_, ...) \
+	perror_msg_and_fail("%s:%d: " fmt_, __FILE__, __LINE__, ##__VA_ARGS__)
+#endif
+#ifndef perror_msg_and_fail
+# define error_msg_and_fail(fmt_, ...) \
+	error_msg_and_fail("%s:%d: " fmt_, __FILE__, __LINE__, ##__VA_ARGS__)
+#endif
+
 /* Stat the specified file and skip the test if the stat call failed. */
 void skip_if_unavailable(const char *);
 
diff --git a/tests-mx32/time.gen.test b/tests-mx32/time.gen.test
index ed7ec69..3269b16 100755
--- a/tests-mx32/time.gen.test
+++ b/tests-mx32/time.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/timer_create.gen.test b/tests-mx32/timer_create.gen.test
index 6b4c543..bf65261 100755
--- a/tests-mx32/timer_create.gen.test
+++ b/tests-mx32/timer_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/times.gen.test b/tests-mx32/times.gen.test
index ca4ebbe..06b036f 100755
--- a/tests-mx32/times.gen.test
+++ b/tests-mx32/times.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-mx32/truncate.gen.test b/tests-mx32/truncate.gen.test
index 0410e73..7a631ef 100755
--- a/tests-mx32/truncate.gen.test
+++ b/tests-mx32/truncate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/truncate64.gen.test b/tests-mx32/truncate64.gen.test
index dae0fe6..2b368f4 100755
--- a/tests-mx32/truncate64.gen.test
+++ b/tests-mx32/truncate64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests-mx32/ugetrlimit.gen.test b/tests-mx32/ugetrlimit.gen.test
index ff27134..a412fe6 100755
--- a/tests-mx32/ugetrlimit.gen.test
+++ b/tests-mx32/ugetrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/umask.gen.test b/tests-mx32/umask.gen.test
index 60af5e9..5d6c318 100755
--- a/tests-mx32/umask.gen.test
+++ b/tests-mx32/umask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests-mx32/umovestr3.c b/tests-mx32/umovestr3.c
index cf2fa7d..74f0e93 100644
--- a/tests-mx32/umovestr3.c
+++ b/tests-mx32/umovestr3.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,9 +27,9 @@
  */
 
 #include "tests.h"
+#include <limits.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 int
 main(void)
diff --git a/tests-mx32/unlink.gen.test b/tests-mx32/unlink.gen.test
index 7b8522b..63bc0c4 100755
--- a/tests-mx32/unlink.gen.test
+++ b/tests-mx32/unlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests-mx32/unlinkat.gen.test b/tests-mx32/unlinkat.gen.test
index 5a77c6a..5de7908 100755
--- a/tests-mx32/unlinkat.gen.test
+++ b/tests-mx32/unlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests-mx32/unshare.gen.test b/tests-mx32/unshare.gen.test
index 077a458..782ce47 100755
--- a/tests-mx32/unshare.gen.test
+++ b/tests-mx32/unshare.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests-mx32/userfaultfd.gen.test b/tests-mx32/userfaultfd.gen.test
index 4735146..61b6988 100755
--- a/tests-mx32/userfaultfd.gen.test
+++ b/tests-mx32/userfaultfd.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
+run_strace_match_diff -a38 
diff --git a/tests-mx32/ustat.gen.test b/tests-mx32/ustat.gen.test
index f64b28d..2b09f7e 100755
--- a/tests-mx32/ustat.gen.test
+++ b/tests-mx32/ustat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-mx32/utime.gen.test b/tests-mx32/utime.gen.test
index 7270556..58ebc5a 100755
--- a/tests-mx32/utime.gen.test
+++ b/tests-mx32/utime.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests-mx32/utimensat.gen.test b/tests-mx32/utimensat.gen.test
index a4d6656..07dffa3 100755
--- a/tests-mx32/utimensat.gen.test
+++ b/tests-mx32/utimensat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests-mx32/utimes.gen.test b/tests-mx32/utimes.gen.test
index 37ed29c..559243e 100755
--- a/tests-mx32/utimes.gen.test
+++ b/tests-mx32/utimes.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests-mx32/vhangup.gen.test b/tests-mx32/vhangup.gen.test
index 7ac84e5..da19216 100755
--- a/tests-mx32/vhangup.gen.test
+++ b/tests-mx32/vhangup.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests-mx32/vmsplice.gen.test b/tests-mx32/vmsplice.gen.test
index fe6a07d..0dc18b6 100755
--- a/tests-mx32/vmsplice.gen.test
+++ b/tests-mx32/vmsplice.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
+run_strace_match_diff -ewrite=1 
diff --git a/tests-mx32/wait4.gen.test b/tests-mx32/wait4.gen.test
index ae04915..22a982f 100755
--- a/tests-mx32/wait4.gen.test
+++ b/tests-mx32/wait4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-mx32/waitid.gen.test b/tests-mx32/waitid.gen.test
index 59f4022..22edd67 100755
--- a/tests-mx32/waitid.gen.test
+++ b/tests-mx32/waitid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests-mx32/waitpid.gen.test b/tests-mx32/waitpid.gen.test
index d91e298..a5678a1 100755
--- a/tests-mx32/waitpid.gen.test
+++ b/tests-mx32/waitpid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests-mx32/xet_thread_area_x86.c b/tests-mx32/xet_thread_area_x86.c
new file mode 100644
index 0000000..68f495c
--- /dev/null
+++ b/tests-mx32/xet_thread_area_x86.c
@@ -0,0 +1,227 @@
+/*
+ * Check decoding of set_thread_area and get_thread_area syscalls on x86
+ * architecture.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_get_thread_area && defined __NR_set_thread_area \
+ && defined HAVE_STRUCT_USER_DESC
+
+# include <assert.h>
+# include <errno.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# include "print_user_desc.c"
+
+long errnum;
+
+static void
+printptr(kernel_ulong_t ptr, const char *ptr_str)
+{
+	if (ptr_str)
+		printf("%s", ptr_str);
+	else
+		printf("%#llx", zero_extend_signed_to_ull(ptr));
+}
+
+/**
+ * Perform set_thread_area call along with printing the expected output.
+ *
+ * @param ptr_val Pointer to thread area argument.
+ * @param ptr_str Explicit string representation of the argument.
+ * @param valid   Whether argument points to the valid memory and its contents
+ *                should be decoded.
+ * @param entry_number_str explicit decoding of the entry_number field.
+ */
+static long
+set_thread_area(kernel_ulong_t ptr_val, const char *ptr_str, bool valid,
+		const char *entry_number_str)
+{
+	struct user_desc *ptr = (struct user_desc *) (uintptr_t) ptr_val;
+	long rc = -1;
+	int saved_errno;
+
+	rc = syscall(__NR_set_thread_area, ptr_val);
+	saved_errno = errno;
+	printf("set_thread_area(");
+
+	if (valid)
+		print_user_desc(ptr, entry_number_str);
+	else
+		printptr(ptr_val, ptr_str);
+
+	errno = saved_errno;
+	printf(") = %s", sprintrc(rc));
+	if (!rc)
+		printf(" (entry_number=%u)", ptr->entry_number);
+
+	puts("");
+
+	return rc;
+}
+
+/**
+ * Perform get_thread_are call along with printing the expected output and
+ * checking the result against the argument of the previous set_thread_area
+ * call, if it had place.
+ *
+ * @param ptr_val  Pointer to thread area argument.
+ * @param ptr_str  Explicit string representation of the argument.
+ * @param valid    Whether argument points to the valid memory and its contents
+ *                 should be decoded.
+ * @param set_rc   Return code of the previous set_thread_area call.
+ * @param expected The value of the argument passed to the previous
+ *                 set_thread_area call.
+ */
+static void
+get_thread_area(kernel_ulong_t ptr_val, const char *ptr_str, bool valid,
+		long set_rc, kernel_ulong_t expected)
+{
+	struct user_desc *ptr = (struct user_desc *) (uintptr_t) ptr_val;
+	struct user_desc *expected_ptr =
+		(struct user_desc *) (uintptr_t) expected;
+	int saved_errno;
+	long rc;
+
+	rc = syscall(__NR_get_thread_area, ptr_val);
+	saved_errno = errno;
+
+	printf("get_thread_area(");
+
+	if (valid && !rc) {
+		if (!set_rc) {
+			assert(ptr->entry_number == expected_ptr->entry_number);
+			assert(ptr->base_addr    == expected_ptr->base_addr);
+			assert(ptr->limit        == expected_ptr->limit);
+			assert(ptr->seg_32bit    == expected_ptr->seg_32bit);
+			assert(ptr->contents     == expected_ptr->contents);
+			assert(ptr->read_exec_only ==
+			       expected_ptr->read_exec_only);
+			assert(ptr->limit_in_pages ==
+			       expected_ptr->limit_in_pages);
+			assert(ptr->seg_not_present ==
+			       expected_ptr->seg_not_present);
+			assert(ptr->useable      == expected_ptr->useable);
+			/*
+			 * We do not check lm as 32-bit processes ignore it, and
+			 * only 32-bit processes can successfully execute
+			 * get_thread_area.
+			 */
+		}
+
+		print_user_desc(ptr,
+				(int) ptr->entry_number == -1 ? "-1" : NULL);
+	} else {
+		printptr(ptr_val, ptr_str);
+	}
+
+	errno = saved_errno;
+	printf(") = %s\n", sprintrc(rc));
+}
+
+int main(void)
+{
+	struct user_desc *ta1 = tail_alloc(sizeof(*ta1));
+	struct user_desc *ta2 = tail_alloc(sizeof(*ta2));
+	unsigned *bogus_entry_number = tail_alloc(sizeof(*bogus_entry_number));
+
+	long set_rc = -1;
+
+	/*
+	 * Let's do some weird syscall, it will mark the beginning of our
+	 * expected output.
+	 */
+	syscall(__NR_reboot, 0, 0, 0, 0);
+
+	set_rc = set_thread_area((uintptr_t) ARG_STR(NULL), false, NULL);
+	get_thread_area((uintptr_t) ARG_STR(NULL), false, set_rc,
+			(uintptr_t) NULL);
+
+	set_rc = set_thread_area(-1, NULL, false, NULL);
+	get_thread_area(-1, NULL, false, set_rc, -1);
+
+	fill_memory(ta1, sizeof(*ta1));
+	fill_memory_ex(ta2, sizeof(*ta2), 0xA5, 0x5A);
+
+	set_thread_area((uintptr_t) (ta1 + 1), NULL, false, NULL);
+
+	set_thread_area((uintptr_t) bogus_entry_number, NULL, false, NULL);
+
+	set_thread_area((uintptr_t) ta1, NULL, true, NULL);
+
+	ta1->entry_number = -1;
+	ta1->base_addr = 0;
+	ta1->limit = 0;
+	ta1->contents = 1;
+	ta1->seg_32bit = 1;
+	ta1->seg_not_present = 0;
+
+	set_rc = set_thread_area((uintptr_t) ta1, NULL, true, "-1");
+
+	*bogus_entry_number = 2718281828U;
+	get_thread_area((uintptr_t) bogus_entry_number,
+			"{entry_number=2718281828, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	/* That one should return -EFAULT on i386 */
+	*bogus_entry_number = 12;
+	get_thread_area((uintptr_t) bogus_entry_number,
+			"{entry_number=12, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = 3141592653U;
+	get_thread_area((uintptr_t) ta2, "{entry_number=3141592653, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = -1;
+	get_thread_area((uintptr_t) ta2, "{entry_number=-1, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = ta1->entry_number;
+	assert(set_rc == 0 || (int) ta2->entry_number == -1);
+	get_thread_area((uintptr_t) ta2, "{entry_number=-1, ...}",
+			true, set_rc, (uintptr_t) ta1);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_get_thread_area && __NR_set_thread_area"
+		    " && HAVE_STRUCT_USER_DESC");
+
+#endif
diff --git a/tests-mx32/xet_thread_area_x86.test b/tests-mx32/xet_thread_area_x86.test
new file mode 100755
index 0000000..863f7e2
--- /dev/null
+++ b/tests-mx32/xet_thread_area_x86.test
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Check decoding of set_thread_area and get_thread_area syscalls on x86.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog > /dev/null
+run_strace -a22 -e trace=reboot,/[gs]et_thread_area $args > "$EXP"
+sed '0,/^reboot/d' "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/xselect.c b/tests-mx32/xselect.c
index a25ebcc..b1e3766 100644
--- a/tests-mx32/xselect.c
+++ b/tests-mx32/xselect.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of select/_newselect syscalls.
+ *
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
@@ -30,127 +32,442 @@
  * Based on test by Dr. David Alan Gilbert <dave@treblig.org>
  */
 
-#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
-static fd_set set[0x1000000 / sizeof(fd_set)];
+static const char *errstr;
 
-int main(void)
+static long
+xselect(const kernel_ulong_t nfds,
+	const kernel_ulong_t rs,
+	const kernel_ulong_t ws,
+	const kernel_ulong_t es,
+	const kernel_ulong_t tv)
+#ifndef xselect
 {
-	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
-	struct timeval tv_in;
-	int fds[2];
-	long rc;
+	long rc = syscall(TEST_SYSCALL_NR,
+			  F8ILL_KULONG_MASK | nfds, rs, ws, es, tv);
+	errstr = sprintrc(rc);
+	return rc;
+}
+#else
+	;
+#endif
 
+#define XSELECT(expected_, ...)						\
+	do {								\
+		long rc = xselect(__VA_ARGS__);				\
+		if (rc != (expected_))					\
+			perror_msg_and_fail(TEST_SYSCALL_STR		\
+					    ": expected %d"		\
+					    ", returned %ld",		\
+					    (expected_), rc);		\
+	} while (0)							\
+/* End of XSELECT definition. */
+
+int
+main(void)
+{
+#ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+#endif
+
+	for (int i = 3; i < FD_SETSIZE; ++i) {
+#ifdef PATH_TRACING_FD
+		if (i == PATH_TRACING_FD)
+			continue;
+#endif
+		(void) close(i);
+	}
+
+	int fds[2];
 	if (pipe(fds))
 		perror_msg_and_fail("pipe");
 
+	static const int smallset_size = sizeof(kernel_ulong_t) * 8;
+	const int nfds = fds[1] + 1;
+	if (nfds > smallset_size)
+		error_msg_and_fail("nfds[%d] > smallset_size[%d]\n",
+				   nfds, smallset_size);
+
+	struct timeval tv_in = { 0, 123 };
+	struct timeval *const tv = tail_memdup(&tv_in, sizeof(tv_in));
+	const uintptr_t a_tv = (uintptr_t) tv;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_rs);
+	fd_set *const rs = (void *) l_rs;
+	const uintptr_t a_rs = (uintptr_t) rs;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_ws);
+	fd_set *const ws = (void *) l_ws;
+	const uintptr_t a_ws = (uintptr_t) ws;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_es);
+	fd_set *const es = (void *) l_es;
+	const uintptr_t a_es = (uintptr_t) es;
+
+	long rc;
+
 	/*
-	 * Start with a nice simple select.
+	 * An equivalent of nanosleep.
 	 */
-	FD_ZERO(set);
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
-	if (rc < 0)
-		perror_msg_and_skip(TEST_SYSCALL_STR);
-	assert(rc == 1);
-	printf("%s(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
-	       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-	       fds[0], fds[1], fds[0], fds[1]);
+	if (xselect(0, 0, 0, 0, a_tv)) {
+		if (errno == ENOSYS)
+			perror_msg_and_skip(TEST_SYSCALL_STR);
+		else
+			perror_msg_and_fail(TEST_SYSCALL_STR);
+	}
+#ifndef PATH_TRACING_FD
+	printf("%s(0, NULL, NULL, NULL, {tv_sec=%lld, tv_usec=%llu})"
+	       " = 0 (Timeout)\n",
+	       TEST_SYSCALL_STR, (long long) tv_in.tv_sec,
+	       zero_extend_signed_to_ull(tv_in.tv_usec));
+#endif
+
+	/* EFAULT on tv argument */
+	XSELECT(-1, 0, 0, 0, 0, a_tv + 1);
+#ifndef PATH_TRACING_FD
+	printf("%s(0, NULL, NULL, NULL, %#lx) = %s\n",
+	       TEST_SYSCALL_STR, (unsigned long) a_tv + 1, errstr);
+#endif
+
+	/*
+	 * Start with a nice simple select with the same set.
+	 */
+	for (int i = nfds; i <= smallset_size; ++i) {
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		XSELECT(1, i, a_rs, a_rs, a_rs, 0);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
+		       TEST_SYSCALL_STR, i, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1]);
+#else
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		XSELECT(i > PATH_TRACING_FD ? 3 : 1, i, a_rs, a_rs, a_rs, 0);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d %d], [%d %d %d], [%d %d %d]"
+			       ", NULL) = 3 ()\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       fds[0], fds[1], PATH_TRACING_FD);
+		}
+#endif
+	}
 
 	/*
 	 * Odd timeout.
 	 */
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = 0xdeadbeefU;
-	tv->tv_usec = 0xfacefeedU;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+	tv_in.tv_sec = 0xdeadbeefU;
+	tv_in.tv_usec = 0xfacefeedU;
+	memcpy(tv, &tv_in, sizeof(tv_in));
+	rc = xselect(nfds, a_rs, a_rs, a_rs, a_tv);
 	if (rc < 0) {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
-		       zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       errstr);
+#endif /* !PATH_TRACING_FD */
 	} else {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
 		       " (left {tv_sec=%lld, tv_usec=%llu})\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
 		       zero_extend_signed_to_ull(tv_in.tv_usec),
 		       rc, (long long) tv->tv_sec,
 		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* !PATH_TRACING_FD */
 	}
 
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-	tv->tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	/*
+	 * Very odd timeout.
+	 */
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+	tv_in.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv_in.tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
+	memcpy(tv, &tv_in, sizeof(tv_in));
+	rc = xselect(nfds, a_rs, a_rs, a_rs, a_tv);
 	if (rc < 0) {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
-		       zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       errstr);
+#endif /* PATH_TRACING_FD */
 	} else {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
 		       " (left {tv_sec=%lld, tv_usec=%llu})\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
 		       zero_extend_signed_to_ull(tv_in.tv_usec),
 		       rc, (long long) tv->tv_sec,
 		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
 	}
 
 	/*
 	 * Another simple one, with a timeout.
 	 */
-	FD_SET(1, set);
-	FD_SET(2, set);
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = 0xc0de1;
-	tv->tv_usec = 0xc0de2;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, tv) == 3);
-	printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%llu})"
-	       " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%llu})\n",
-	       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-	       (long long) tv_in.tv_sec,
-	       zero_extend_signed_to_ull(tv_in.tv_usec),
-	       fds[1],
-	       (long long) tv->tv_sec,
-	       zero_extend_signed_to_ull(tv->tv_usec));
+	for (int i = nfds; i <= smallset_size; ++i) {
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		*l_es = 0;
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3, i, a_rs, a_ws, a_es, a_tv);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d %d], [%d %d %d %d], []"
+		       ", {tv_sec=%lld, tv_usec=%llu}) = 3 (out [1 2 %d]"
+		       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i, fds[0], fds[1],
+		       1, 2, fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       fds[1],
+		       (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+#else
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3 + (i > PATH_TRACING_FD), i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d %d], [%d %d %d %d], []"
+			       ", {tv_sec=%lld, tv_usec=%llu})"
+			       " = 4 (in [%d], out [1 2 %d]"
+			       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       1, 2, fds[0], fds[1],
+			       (long long) tv_in.tv_sec,
+			       zero_extend_signed_to_ull(tv_in.tv_usec),
+			       PATH_TRACING_FD, fds[1],
+			       (long long) tv->tv_sec,
+			       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3 + (i > PATH_TRACING_FD), i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d], [%d %d %d %d %d], []"
+			       ", {tv_sec=%lld, tv_usec=%llu})"
+			       " = 4 (out [1 2 %d %d]"
+			       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1],
+			       1, 2, fds[0], fds[1], PATH_TRACING_FD,
+			       (long long) tv_in.tv_sec,
+			       zero_extend_signed_to_ull(tv_in.tv_usec),
+			       fds[1], PATH_TRACING_FD,
+			       (long long) tv->tv_sec,
+			       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		*l_es = (1UL << PATH_TRACING_FD);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3, i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+		printf("%s(%d, [%d %d], [%d %d %d %d], [%d]"
+		       ", {tv_sec=%lld, tv_usec=%llu}) = 3 (out [1 2 %d]"
+		       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i,
+		       fds[0], fds[1],
+		       1, 2, fds[0], fds[1], PATH_TRACING_FD,
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       fds[1],
+		       (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+#endif /* PATH_TRACING_FD */
+	}
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
 	 * but with a pointer to a large chunk of valid memory.
 	 */
-	FD_ZERO(set);
+	static fd_set set[0x1000000 / sizeof(fd_set)];
 	FD_SET(fds[1], set);
-	assert(syscall(TEST_SYSCALL_NR, -1, NULL, set, NULL, NULL) == -1);
-	printf("%s(-1, NULL, %p, NULL, NULL) = -1 EINVAL (%m)\n",
-	       TEST_SYSCALL_STR, set);
+	XSELECT(-1, -1U, 0, (uintptr_t) set, 0, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(-1, NULL, %p, NULL, NULL) = %s\n",
+	       TEST_SYSCALL_STR, set, errstr);
+#endif
 
 	/*
-	 * Another variant, with nfds exceeding FD_SETSIZE limit.
+	 * Big sets, nfds exceeds FD_SETSIZE limit.
 	 */
-	FD_ZERO(set);
+	const size_t big_size = sizeof(fd_set) + sizeof(long);
+	fd_set *const big_rs = tail_alloc(big_size);
+	const uintptr_t a_big_rs = (uintptr_t) big_rs;
+
+	fd_set *const big_ws = tail_alloc(big_size);
+	const uintptr_t a_big_ws = (uintptr_t) big_ws;
+
+	for (unsigned int i = FD_SETSIZE; i <= big_size * 8; ++i) {
+		memset(big_rs, 0, big_size);
+		memset(big_ws, 0, big_size);
+		FD_SET(fds[0], big_rs);
+		tv->tv_sec = 0;
+		tv->tv_usec = 10 + (i - FD_SETSIZE);
+		XSELECT(0, i, a_big_rs, a_big_ws, 0, a_tv);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=%d})"
+		       " = 0 (Timeout)\n",
+		       TEST_SYSCALL_STR, i, fds[0], 10 + (i - FD_SETSIZE));
+#else
+		FD_SET(fds[0], big_rs);
+		FD_SET(PATH_TRACING_FD, big_rs);
+		tv->tv_sec = 0;
+		tv->tv_usec = 10 + (i - FD_SETSIZE);
+		XSELECT(1, i, a_big_rs, a_big_ws, 0, a_tv);
+		printf("%s(%d, [%d %d], [], NULL, {tv_sec=0, tv_usec=%d})"
+		       " = 1 (in [%d], left {tv_sec=0, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i, fds[0], PATH_TRACING_FD,
+		       10 + (i - FD_SETSIZE), PATH_TRACING_FD,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
+	}
+
+	/*
+	 * Huge sets, nfds equals to INT_MAX.
+	 */
 	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
 	tv->tv_sec = 0;
 	tv->tv_usec = 123;
-	assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, tv) == 0);
-	printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=123}) = 0 (Timeout)\n",
-	       TEST_SYSCALL_STR, FD_SETSIZE + 1, fds[0]);
+	XSELECT(0, INT_MAX, (uintptr_t) set, (uintptr_t) &set[1],
+		(uintptr_t) &set[2], a_tv);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, [%d %d], [], [], {tv_sec=0, tv_usec=123})"
+	       " = 0 (Timeout)\n",
+	       TEST_SYSCALL_STR, INT_MAX, fds[0], fds[1]);
+#else
+	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
+	FD_SET(PATH_TRACING_FD, set);
+	tv->tv_sec = 0;
+	tv->tv_usec = 123;
+	XSELECT(1, INT_MAX, (uintptr_t) set, (uintptr_t) &set[1],
+		(uintptr_t) &set[2], a_tv);
+	printf("%s(%d, [%d %d %d], [], [], {tv_sec=0, tv_usec=123})"
+	       " = 1 (in [%d], left {tv_sec=0, tv_usec=%llu})\n",
+	       TEST_SYSCALL_STR, INT_MAX, fds[0], fds[1], PATH_TRACING_FD,
+	       PATH_TRACING_FD, zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
+
+	/*
+	 * Small sets, nfds exceeds FD_SETSIZE limit.
+	 * The kernel seems to be fine with it but strace cannot follow.
+	 */
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1])
+#ifdef PATH_TRACING_FD
+		| (1UL << PATH_TRACING_FD)
+#endif
+		;
+	*l_ws = (1UL << fds[0]);
+	*l_es = (1UL << fds[0]) | (1UL << fds[1])
+#ifdef PATH_TRACING_FD
+		| (1UL << PATH_TRACING_FD)
+#endif
+		;
+	tv->tv_sec = 0;
+	tv->tv_usec = 123;
+	rc = xselect(FD_SETSIZE + 1, a_rs, a_ws, a_es, a_tv);
+	if (rc < 0) {
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, %p, %p, %p, {tv_sec=0, tv_usec=123}) = %s\n",
+		       TEST_SYSCALL_STR, FD_SETSIZE + 1, rs, ws, es, errstr);
+#endif
+	} else {
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, %p, %p, %p, {tv_sec=0, tv_usec=123})"
+		       " = 0 (Timeout)\n",
+		       TEST_SYSCALL_STR, FD_SETSIZE + 1, rs, ws, es);
+#endif
+	}
+
+	/*
+	 * Small sets, one of allocated descriptors exceeds smallset_size.
+	 */
+	if (dup2(fds[1], smallset_size) != smallset_size)
+		perror_msg_and_fail("dup2");
+#ifdef PATH_TRACING_FD
+	FD_SET(PATH_TRACING_FD, rs);
+	FD_SET(PATH_TRACING_FD, ws);
+	FD_SET(PATH_TRACING_FD, es);
+#endif
+	XSELECT(-1, smallset_size + 1, a_rs, a_ws, a_es, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, %p, %p, %p, NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1, rs, ws, es, errstr);
+#endif
+
+	/*
+	 * Small and big sets,
+	 * one of allocated descriptors exceeds smallset_size.
+	 */
+	memset(big_rs, 0, big_size);
+	FD_SET(fds[0], big_rs);
+	FD_SET(smallset_size, big_rs);
+	memset(big_ws, 0, big_size);
+	FD_SET(fds[1], big_ws);
+	FD_SET(smallset_size, big_ws);
+	XSELECT(-1, smallset_size + 1, a_big_rs, a_big_ws, a_es, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, [%d %d], [%d %d], %p, NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1,
+	       fds[0], smallset_size,
+	       fds[1], smallset_size,
+	       es, errstr);
+#endif /* !PATH_TRACING_FD */
+	XSELECT(-1, smallset_size + 1, a_es, a_big_ws, a_big_rs, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, %p, [%d %d], [%d %d], NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1,
+	       es,
+	       fds[1], smallset_size,
+	       fds[0], smallset_size,
+	       errstr);
+#endif /* !PATH_TRACING_FD */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f2109fd..493a7f9 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,7 +1,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2017 The strace developers.
+# Copyright (c) 2011-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -28,7 +28,11 @@
 
 OS = linux
 ARCH = @arch@
+NATIVE_ARCH = @arch_native@
+SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
+SIZEOF_LONG = @SIZEOF_LONG@
 MPERS_NAME =
+MPERS_CC_FLAGS =
 ARCH_MFLAGS =
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
@@ -80,6 +84,7 @@
 include pure_executables.am
 
 check_PROGRAMS = $(PURE_EXECUTABLES) \
+	_newselect-P \
 	answer \
 	attach-f-p \
 	attach-f-p-cmd \
@@ -117,6 +122,9 @@
 	netlink_netlink_diag \
 	netlink_unix_diag \
 	nsyscalls \
+	nsyscalls-d \
+	oldselect-P \
+	oldselect-efault-P \
 	pc \
 	perf_event_open_nonverbose \
 	perf_event_open_unabbrev \
@@ -137,12 +145,14 @@
 	scm_rights \
 	seccomp-filter-v \
 	seccomp-strict \
+	select-P \
 	set_ptracer_any \
 	set_sigblock \
 	set_sigign \
 	signal_receive \
 	sleep \
 	stack-fcall \
+	stack-fcall-mangled \
 	threads-execve \
 	unblock_reset_raise \
 	unix-pair-send-recv \
@@ -182,10 +192,17 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
+	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
+	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
+
 include gen_tests.am
 
 if USE_LIBUNWIND
 LIBUNWIND_TESTS = strace-k.test
+if USE_DEMANGLE
+LIBUNWIND_TESTS += strace-k-demangle.test
+endif
 else
 LIBUNWIND_TESTS =
 endif
@@ -204,11 +221,6 @@
 	futex.test \
 	getuid.test \
 	ioctl.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_loop-nv.test \
-	ioctl_nsfs.test \
-	ioctl_sock_gifconf.test \
 	ipc_msgbuf.test \
 	llseek.test \
 	lseek.test \
@@ -220,9 +232,11 @@
 	net.test \
 	netlink_sock_diag.test \
 	nsyscalls.test \
-	oldselect.test \
+	nsyscalls-d.test \
+	nsyscalls-nd.test \
 	personality.test \
 	pipe.test \
+	poll-P.test \
 	poll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
@@ -241,6 +255,7 @@
 	seccomp-strict.test \
 	sigaltstack.test \
 	sun_path.test \
+	xet_thread_area_x86.test \
 	uio.test \
 	umount.test \
 	umount2.test \
@@ -263,6 +278,8 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
+	filtering_fd-syntax.test \
+	filtering_syscall-syntax.test \
 	fflush.test \
 	get_regs.test \
 	interactive_block.test \
@@ -309,13 +326,18 @@
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
 
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) STRACE_NATIVE_ARCH=$(NATIVE_ARCH) \
+			SIZEOF_KERNEL_LONG_T=$(SIZEOF_KERNEL_LONG_T) \
+			SIZEOF_LONG=$(SIZEOF_LONG) \
+			MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
 
 @VALGRIND_CHECK_RULES@
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/strace.supp
 
 EXTRA_DIST = \
+	accept_compat.h \
+	attach-p-cmd.h \
 	caps-abbrev.awk \
 	caps.awk \
 	clock.in \
@@ -331,7 +353,6 @@
 	getresugid.c \
 	init.sh \
 	init_delete_module.h \
-	ioctl-v.sh \
 	ipc.sh \
 	ipc_msgbuf.expected \
 	ksysent.sed \
@@ -339,8 +360,8 @@
 	match.awk \
 	net.expected \
 	netlink_sock_diag-v.sh \
-	oldselect.expected \
 	pipe.expected \
+	print_user_desc.c \
 	process_vm_readv_writev.c \
 	pure_executables.list \
 	qual_fault-exit_group.expected \
@@ -358,10 +379,12 @@
 	setugid.c \
 	sigaltstack.expected \
 	sockname.c \
+	stack-fcall.h \
 	strace-C.expected \
 	strace-E.expected \
 	strace-T.expected \
 	strace-ff.expected \
+	strace-k-demangle.test \
 	strace-k.test \
 	strace-r.expected \
 	strace.supp \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 1e8085a..5205510 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -17,7 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2017 The strace developers.
+# Copyright (c) 2011-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -136,23 +136,25 @@
 	$(srcdir)/../scno.am $(srcdir)/Makefile.in \
 	$(srcdir)/Makefile.am $(top_srcdir)/depcomp \
 	$(top_srcdir)/test-driver
-check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
-	attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
-	attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \
-	caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
-	check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
-	clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \
-	execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \
-	fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
-	gettid$(EXEEXT) int_0x80$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
+check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
+	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
+	block_reset_raise_run$(EXEEXT) caps-abbrev$(EXEEXT) \
+	check_sigblock$(EXEEXT) check_sigign$(EXEEXT) \
+	clone_parent$(EXEEXT) clone_ptrace$(EXEEXT) count-f$(EXEEXT) \
+	execve-v$(EXEEXT) execveat-v$(EXEEXT) \
+	filter-unavailable$(EXEEXT) fork-f$(EXEEXT) getpid$(EXEEXT) \
+	getppid$(EXEEXT) gettid$(EXEEXT) int_0x80$(EXEEXT) \
+	ioctl_dm-v$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+	ioctl_loop-nv$(EXEEXT) ioctl_loop-v$(EXEEXT) \
+	ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
 	is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \
 	list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \
 	mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \
 	net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \
 	netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	nsyscalls$(EXEEXT) pc$(EXEEXT) \
+	nsyscalls$(EXEEXT) nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
+	oldselect-efault-P$(EXEEXT) pc$(EXEEXT) \
 	perf_event_open_nonverbose$(EXEEXT) \
 	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
 	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
@@ -163,19 +165,21 @@
 	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
 	run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \
 	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
-	set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
-	stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
+	select-P$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	set_sigblock$(EXEEXT) set_sigign$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	stack-fcall-mangled$(EXEEXT) threads-execve$(EXEEXT) \
 	unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
 	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
 	wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
+@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_1 = strace-k-demangle.test
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
 subdir = tests
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
 	$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
 	$(top_srcdir)/m4/ax_valgrind_check.m4 \
-	$(top_srcdir)/m4/mpers.m4 $(top_srcdir)/m4/st_bpf.m4 \
+	$(top_srcdir)/m4/mpers.m4 \
 	$(top_srcdir)/m4/st_save_restore_var.m4 \
 	$(top_srcdir)/m4/st_warn_cflags.m4 \
 	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -250,8 +254,9 @@
 	getxxid$(EXEEXT) group_req$(EXEEXT) inet-cmsg$(EXEEXT) \
 	init_module$(EXEEXT) inotify$(EXEEXT) inotify_init1$(EXEEXT) \
 	ioctl$(EXEEXT) ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_loop$(EXEEXT) ioctl_mtd$(EXEEXT) \
-	ioctl_rtc$(EXEEXT) ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
+	ioctl_evdev$(EXEEXT) ioctl_kvm_run$(EXEEXT) \
+	ioctl_loop$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
+	ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
 	ioctl_sg_io_v4$(EXEEXT) ioctl_sock_gifconf$(EXEEXT) \
 	ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
 	iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
@@ -266,12 +271,12 @@
 	mkdir$(EXEEXT) mkdirat$(EXEEXT) mknod$(EXEEXT) \
 	mknodat$(EXEEXT) mlock$(EXEEXT) mlock2$(EXEEXT) \
 	mlockall$(EXEEXT) mmap$(EXEEXT) mmap64$(EXEEXT) mmsg$(EXEEXT) \
-	mmsg_name$(EXEEXT) mount$(EXEEXT) move_pages$(EXEEXT) \
-	mq$(EXEEXT) mq_sendrecv$(EXEEXT) mq_sendrecv-read$(EXEEXT) \
-	mq_sendrecv-write$(EXEEXT) msg_control$(EXEEXT) \
-	msg_name$(EXEEXT) munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-icmp_filter$(EXEEXT) net-sockaddr$(EXEEXT) \
-	net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+	mmsg_name$(EXEEXT) modify_ldt$(EXEEXT) mount$(EXEEXT) \
+	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
+	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
+	msg_control$(EXEEXT) msg_name$(EXEEXT) munlockall$(EXEEXT) \
+	nanosleep$(EXEEXT) net-icmp_filter$(EXEEXT) \
+	net-sockaddr$(EXEEXT) net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
 	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
 	netlink_audit$(EXEEXT) netlink_crypto$(EXEEXT) \
 	netlink_generic$(EXEEXT) netlink_kobject_uevent$(EXEEXT) \
@@ -301,16 +306,18 @@
 	nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \
 	nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \
 	nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
+	old_mmap-P$(EXEEXT) old_mmap-v-none$(EXEEXT) oldfstat$(EXEEXT) \
+	oldlstat$(EXEEXT) oldselect$(EXEEXT) oldselect-efault$(EXEEXT) \
 	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) \
 	osf_utimes$(EXEEXT) pause$(EXEEXT) perf_event_open$(EXEEXT) \
 	personality$(EXEEXT) pipe$(EXEEXT) pipe2$(EXEEXT) \
 	pkey_alloc$(EXEEXT) pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) \
-	poll$(EXEEXT) ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
-	prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
-	prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+	poll$(EXEEXT) poll-P$(EXEEXT) ppoll$(EXEEXT) ppoll-P$(EXEEXT) \
+	prctl-arg2-intptr$(EXEEXT) prctl-dumpable$(EXEEXT) \
+	prctl-name$(EXEEXT) prctl-no-args$(EXEEXT) \
+	prctl-pdeathsig$(EXEEXT) prctl-securebits$(EXEEXT) \
+	prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
+	pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
 	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
 	printpath-umovestr$(EXEEXT) \
 	printpath-umovestr-peekdata$(EXEEXT) \
@@ -324,11 +331,15 @@
 	readlinkat$(EXEEXT) readv$(EXEEXT) reboot$(EXEEXT) \
 	recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) recvmsg$(EXEEXT) \
 	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) rmdir$(EXEEXT) \
+	renameat2$(EXEEXT) request_key$(EXEEXT) \
+	riscv_flush_icache$(EXEEXT) rmdir$(EXEEXT) \
 	rt_sigaction$(EXEEXT) rt_sigpending$(EXEEXT) \
 	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
 	rt_sigreturn$(EXEEXT) rt_sigsuspend$(EXEEXT) \
 	rt_sigtimedwait$(EXEEXT) rt_tgsigqueueinfo$(EXEEXT) \
+	s390_guarded_storage$(EXEEXT) s390_guarded_storage-v$(EXEEXT) \
+	s390_pci_mmio_read_write$(EXEEXT) s390_runtime_instr$(EXEEXT) \
+	s390_sthyi$(EXEEXT) s390_sthyi-v$(EXEEXT) \
 	sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \
 	sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \
 	sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \
@@ -348,30 +359,34 @@
 	signalfd4$(EXEEXT) sigpending$(EXEEXT) sigprocmask$(EXEEXT) \
 	sigreturn$(EXEEXT) sigsuspend$(EXEEXT) so_linger$(EXEEXT) \
 	so_peercred$(EXEEXT) sock_filter-v$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stat$(EXEEXT) \
-	stat64$(EXEEXT) statfs$(EXEEXT) statfs64$(EXEEXT) \
-	statx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \
-	symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \
-	sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \
-	sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \
-	timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
-	timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
-	truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
-	uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
-	umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
-	umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
-	uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \
-	unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \
-	utime$(EXEEXT) utimensat$(EXEEXT) utimes$(EXEEXT) \
-	vhangup$(EXEEXT) vmsplice$(EXEEXT) wait4$(EXEEXT) \
-	waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+	socketcall$(EXEEXT) sockopt-sol_netlink$(EXEEXT) \
+	splice$(EXEEXT) stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
+	statfs64$(EXEEXT) statx$(EXEEXT) swap$(EXEEXT) \
+	sxetmask$(EXEEXT) symlink$(EXEEXT) symlinkat$(EXEEXT) \
+	sync$(EXEEXT) sync_file_range$(EXEEXT) \
+	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
+	tee$(EXEEXT) time$(EXEEXT) timer_create$(EXEEXT) \
+	timer_xettime$(EXEEXT) timerfd_xettime$(EXEEXT) times$(EXEEXT) \
+	times-fail$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
+	ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \
+	umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \
+	umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \
+	umovestr3$(EXEEXT) uname$(EXEEXT) unlink$(EXEEXT) \
+	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
+	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
+	utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \
+	wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
 	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
+	xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
+	xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
 _newselect_DEPENDENCIES = libtests.a
+_newselect_P_SOURCES = _newselect-P.c
+_newselect_P_OBJECTS = _newselect-P.$(OBJEXT)
+_newselect_P_LDADD = $(LDADD)
+_newselect_P_DEPENDENCIES = libtests.a
 accept_SOURCES = accept.c
 accept_OBJECTS = accept.$(OBJEXT)
 accept_LDADD = $(LDADD)
@@ -860,6 +875,10 @@
 ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
 ioctl_evdev_v_LDADD = $(LDADD)
 ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_kvm_run_SOURCES = ioctl_kvm_run.c
+ioctl_kvm_run_OBJECTS = ioctl_kvm_run.$(OBJEXT)
+ioctl_kvm_run_LDADD = $(LDADD)
+ioctl_kvm_run_DEPENDENCIES = libtests.a
 ioctl_loop_SOURCES = ioctl_loop.c
 ioctl_loop_OBJECTS = ioctl_loop.$(OBJEXT)
 ioctl_loop_LDADD = $(LDADD)
@@ -1096,6 +1115,10 @@
 mmsg_name_v_OBJECTS = mmsg_name-v.$(OBJEXT)
 mmsg_name_v_LDADD = $(LDADD)
 mmsg_name_v_DEPENDENCIES = libtests.a
+modify_ldt_SOURCES = modify_ldt.c
+modify_ldt_OBJECTS = modify_ldt.$(OBJEXT)
+modify_ldt_LDADD = $(LDADD)
+modify_ldt_DEPENDENCIES = libtests.a
 mount_SOURCES = mount.c
 mount_OBJECTS = mount.$(OBJEXT)
 mount_LDADD = $(LDADD)
@@ -1389,10 +1412,22 @@
 nsyscalls_OBJECTS = nsyscalls.$(OBJEXT)
 nsyscalls_LDADD = $(LDADD)
 nsyscalls_DEPENDENCIES = libtests.a
+nsyscalls_d_SOURCES = nsyscalls-d.c
+nsyscalls_d_OBJECTS = nsyscalls-d.$(OBJEXT)
+nsyscalls_d_LDADD = $(LDADD)
+nsyscalls_d_DEPENDENCIES = libtests.a
 old_mmap_SOURCES = old_mmap.c
 old_mmap_OBJECTS = old_mmap.$(OBJEXT)
 old_mmap_LDADD = $(LDADD)
 old_mmap_DEPENDENCIES = libtests.a
+old_mmap_P_SOURCES = old_mmap-P.c
+old_mmap_P_OBJECTS = old_mmap-P.$(OBJEXT)
+old_mmap_P_LDADD = $(LDADD)
+old_mmap_P_DEPENDENCIES = libtests.a
+old_mmap_v_none_SOURCES = old_mmap-v-none.c
+old_mmap_v_none_OBJECTS = old_mmap-v-none.$(OBJEXT)
+old_mmap_v_none_LDADD = $(LDADD)
+old_mmap_v_none_DEPENDENCIES = libtests.a
 oldfstat_SOURCES = oldfstat.c
 oldfstat_OBJECTS = oldfstat.$(OBJEXT)
 oldfstat_LDADD = $(LDADD)
@@ -1405,6 +1440,18 @@
 oldselect_OBJECTS = oldselect.$(OBJEXT)
 oldselect_LDADD = $(LDADD)
 oldselect_DEPENDENCIES = libtests.a
+oldselect_P_SOURCES = oldselect-P.c
+oldselect_P_OBJECTS = oldselect-P.$(OBJEXT)
+oldselect_P_LDADD = $(LDADD)
+oldselect_P_DEPENDENCIES = libtests.a
+oldselect_efault_SOURCES = oldselect-efault.c
+oldselect_efault_OBJECTS = oldselect-efault.$(OBJEXT)
+oldselect_efault_LDADD = $(LDADD)
+oldselect_efault_DEPENDENCIES = libtests.a
+oldselect_efault_P_SOURCES = oldselect-efault-P.c
+oldselect_efault_P_OBJECTS = oldselect-efault-P.$(OBJEXT)
+oldselect_efault_P_LDADD = $(LDADD)
+oldselect_efault_P_DEPENDENCIES = libtests.a
 oldstat_SOURCES = oldstat.c
 oldstat_OBJECTS = oldstat.$(OBJEXT)
 oldstat_LDADD = $(LDADD)
@@ -1470,10 +1517,18 @@
 poll_OBJECTS = poll.$(OBJEXT)
 poll_LDADD = $(LDADD)
 poll_DEPENDENCIES = libtests.a
+poll_P_SOURCES = poll-P.c
+poll_P_OBJECTS = poll-P.$(OBJEXT)
+poll_P_LDADD = $(LDADD)
+poll_P_DEPENDENCIES = libtests.a
 ppoll_SOURCES = ppoll.c
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_P_SOURCES = ppoll-P.c
+ppoll_P_OBJECTS = ppoll-P.$(OBJEXT)
+ppoll_P_LDADD = $(LDADD)
+ppoll_P_DEPENDENCIES = libtests.a
 ppoll_v_SOURCES = ppoll-v.c
 ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
 ppoll_v_LDADD = $(LDADD)
@@ -1700,6 +1755,10 @@
 restart_syscall_OBJECTS = restart_syscall.$(OBJEXT)
 restart_syscall_LDADD = $(LDADD)
 restart_syscall_DEPENDENCIES = libtests.a
+riscv_flush_icache_SOURCES = riscv_flush_icache.c
+riscv_flush_icache_OBJECTS = riscv_flush_icache.$(OBJEXT)
+riscv_flush_icache_LDADD = $(LDADD)
+riscv_flush_icache_DEPENDENCIES = libtests.a
 rmdir_SOURCES = rmdir.c
 rmdir_OBJECTS = rmdir.$(OBJEXT)
 rmdir_LDADD = $(LDADD)
@@ -1740,6 +1799,30 @@
 run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT)
 run_expect_termsig_LDADD = $(LDADD)
 run_expect_termsig_DEPENDENCIES = libtests.a
+s390_guarded_storage_SOURCES = s390_guarded_storage.c
+s390_guarded_storage_OBJECTS = s390_guarded_storage.$(OBJEXT)
+s390_guarded_storage_LDADD = $(LDADD)
+s390_guarded_storage_DEPENDENCIES = libtests.a
+s390_guarded_storage_v_SOURCES = s390_guarded_storage-v.c
+s390_guarded_storage_v_OBJECTS = s390_guarded_storage-v.$(OBJEXT)
+s390_guarded_storage_v_LDADD = $(LDADD)
+s390_guarded_storage_v_DEPENDENCIES = libtests.a
+s390_pci_mmio_read_write_SOURCES = s390_pci_mmio_read_write.c
+s390_pci_mmio_read_write_OBJECTS = s390_pci_mmio_read_write.$(OBJEXT)
+s390_pci_mmio_read_write_LDADD = $(LDADD)
+s390_pci_mmio_read_write_DEPENDENCIES = libtests.a
+s390_runtime_instr_SOURCES = s390_runtime_instr.c
+s390_runtime_instr_OBJECTS = s390_runtime_instr.$(OBJEXT)
+s390_runtime_instr_LDADD = $(LDADD)
+s390_runtime_instr_DEPENDENCIES = libtests.a
+s390_sthyi_SOURCES = s390_sthyi.c
+s390_sthyi_OBJECTS = s390_sthyi.$(OBJEXT)
+s390_sthyi_LDADD = $(LDADD)
+s390_sthyi_DEPENDENCIES = libtests.a
+s390_sthyi_v_SOURCES = s390_sthyi-v.c
+s390_sthyi_v_OBJECTS = s390_sthyi-v.$(OBJEXT)
+s390_sthyi_v_LDADD = $(LDADD)
+s390_sthyi_v_DEPENDENCIES = libtests.a
 sched_get_priority_mxx_SOURCES = sched_get_priority_mxx.c
 sched_get_priority_mxx_OBJECTS = sched_get_priority_mxx.$(OBJEXT)
 sched_get_priority_mxx_LDADD = $(LDADD)
@@ -1792,6 +1875,10 @@
 select_OBJECTS = select.$(OBJEXT)
 select_LDADD = $(LDADD)
 select_DEPENDENCIES = libtests.a
+select_P_SOURCES = select-P.c
+select_P_OBJECTS = select-P.$(OBJEXT)
+select_P_LDADD = $(LDADD)
+select_P_DEPENDENCIES = libtests.a
 semop_SOURCES = semop.c
 semop_OBJECTS = semop.$(OBJEXT)
 semop_LDADD = $(LDADD)
@@ -1976,6 +2063,10 @@
 socketcall_OBJECTS = socketcall.$(OBJEXT)
 socketcall_LDADD = $(LDADD)
 socketcall_DEPENDENCIES = libtests.a
+sockopt_sol_netlink_SOURCES = sockopt-sol_netlink.c
+sockopt_sol_netlink_OBJECTS = sockopt-sol_netlink.$(OBJEXT)
+sockopt_sol_netlink_LDADD = $(LDADD)
+sockopt_sol_netlink_DEPENDENCIES = libtests.a
 splice_SOURCES = splice.c
 splice_OBJECTS = splice.$(OBJEXT)
 splice_LDADD = $(LDADD)
@@ -1986,6 +2077,14 @@
 stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
 stack_fcall_LDADD = $(LDADD)
 stack_fcall_DEPENDENCIES = libtests.a
+am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
+	stack-fcall-mangled-0.$(OBJEXT) \
+	stack-fcall-mangled-1.$(OBJEXT) \
+	stack-fcall-mangled-2.$(OBJEXT) \
+	stack-fcall-mangled-3.$(OBJEXT)
+stack_fcall_mangled_OBJECTS = $(am_stack_fcall_mangled_OBJECTS)
+stack_fcall_mangled_LDADD = $(LDADD)
+stack_fcall_mangled_DEPENDENCIES = libtests.a
 stat_SOURCES = stat.c
 stat_OBJECTS = stat.$(OBJEXT)
 stat_LDADD = $(LDADD)
@@ -2213,6 +2312,10 @@
 xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
 xet_robust_list_LDADD = $(LDADD)
 xet_robust_list_DEPENDENCIES = libtests.a
+xet_thread_area_x86_SOURCES = xet_thread_area_x86.c
+xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT)
+xet_thread_area_x86_LDADD = $(LDADD)
+xet_thread_area_x86_DEPENDENCIES = libtests.a
 xetitimer_SOURCES = xetitimer.c
 xetitimer_OBJECTS = xetitimer.$(OBJEXT)
 xetitimer_LDADD = $(LDADD)
@@ -2265,9 +2368,9 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
-	access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
-	attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
+	accept4.c access.c acct.c add_key.c adjtimex.c aio.c alarm.c \
+	answer.c attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
 	attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
 	btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
 	chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
@@ -2291,9 +2394,9 @@
 	gettid.c getuid.c getuid32.c getxxid.c group_req.c inet-cmsg.c \
 	init_module.c inotify.c inotify_init1.c int_0x80.c ioctl.c \
 	ioctl_block.c ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c \
-	ioctl_evdev-v.c ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c \
-	ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c ioctl_rtc-v.c \
-	ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
+	ioctl_evdev-v.c ioctl_kvm_run.c ioctl_loop.c ioctl_loop-nv.c \
+	ioctl_loop-v.c ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c \
+	ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
 	ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
 	iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
 	ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
@@ -2303,13 +2406,13 @@
 	mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
 	mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
 	mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
-	mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
-	mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
-	msg_control-v.c msg_name.c munlockall.c nanosleep.c \
-	net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
-	net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
-	netlink_audit.c netlink_crypto.c netlink_generic.c \
-	netlink_inet_diag.c netlink_kobject_uevent.c \
+	mmsg_name-v.c modify_ldt.c mount.c move_pages.c mq.c \
+	mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+	msg_control.c msg_control-v.c msg_name.c munlockall.c \
+	nanosleep.c net-accept-connect.c net-icmp_filter.c \
+	net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+	net-yy-unix.c netlink_audit.c netlink_crypto.c \
+	netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \
 	netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
 	netlink_route.c netlink_selinux.c netlink_sock_diag.c \
 	netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
@@ -2328,13 +2431,16 @@
 	nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
 	nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
 	nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+	nsyscalls.c nsyscalls-d.c old_mmap.c old_mmap-P.c \
+	old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+	oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
 	oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
 	perf_event_open.c perf_event_open_nonverbose.c \
 	perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
-	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
-	ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
-	prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \
+	ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+	prctl-dumpable.c prctl-name.c prctl-no-args.c \
+	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
 	prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
 	prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
 	preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2348,28 +2454,32 @@
 	readdir.c readlink.c readlinkat.c readv.c reboot.c recvfrom.c \
 	recvmmsg-timeout.c recvmsg.c redirect-fds.c remap_file_pages.c \
 	rename.c renameat.c renameat2.c request_key.c \
-	restart_syscall.c rmdir.c rt_sigaction.c rt_sigpending.c \
-	rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-	run_expect_termsig.c sched_get_priority_mxx.c \
+	restart_syscall.c riscv_flush_icache.c rmdir.c rt_sigaction.c \
+	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.c run_expect_termsig.c \
+	s390_guarded_storage.c s390_guarded_storage-v.c \
+	s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+	s390_sthyi-v.c sched_get_priority_mxx.c \
 	sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
 	sched_xetparam.c sched_xetscheduler.c sched_yield.c \
 	scm_rights.c seccomp-filter.c seccomp-filter-v.c \
-	seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
-	sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-	set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-	setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-	setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-	setregid32.c setresgid.c setresgid32.c setresuid.c \
+	seccomp-strict.c seccomp_get_action_avail.c select.c \
+	select-P.c semop.c sendfile.c sendfile64.c set_mempolicy.c \
+	set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \
+	setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \
+	setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \
+	setregid.c setregid32.c setresgid.c setresgid32.c setresuid.c \
 	setresuid32.c setreuid.c setreuid32.c setrlimit.c setuid.c \
 	setuid32.c shmxt.c shutdown.c sigaction.c sigaltstack.c \
 	siginfo.c signal.c signal_receive.c signalfd4.c sigpending.c \
 	sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_linger.c \
-	so_peercred.c sock_filter-v.c socketcall.c splice.c \
-	$(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
-	statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
-	sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
-	threads-execve.c time.c timer_create.c timer_xettime.c \
+	so_peercred.c sock_filter-v.c socketcall.c \
+	sockopt-sol_netlink.c splice.c $(stack_fcall_SOURCES) \
+	$(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \
+	statfs64.c statx.c swap.c sxetmask.c symlink.c symlinkat.c \
+	sync.c sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+	tee.c threads-execve.c time.c timer_create.c timer_xettime.c \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
 	ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
 	umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
@@ -2378,16 +2488,17 @@
 	userfaultfd.c ustat.c utime.c utimensat.c utimes.c vfork-f.c \
 	vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
 	waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-	xetitimer.c xetpgid.c xetpriority.c xettimeofday.c zeroargc.c
-DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
-	access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
-	attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
-	attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
-	btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
-	chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
-	clock_nanosleep.c clock_xettime.c clone_parent.c \
-	clone_ptrace.c copy_file_range.c count-f.c creat.c \
-	delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+	xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
+	xettimeofday.c zeroargc.c
+DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
+	accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+	alarm.c answer.c attach-f-p.c attach-f-p-cmd.c \
+	attach-p-cmd-cmd.c attach-p-cmd-p.c block_reset_raise_run.c \
+	bpf.c bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c \
+	check_sigblock.c check_sigign.c chmod.c chown.c chown32.c \
+	chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
+	clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
+	creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
 	epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
 	erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
 	execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2405,9 +2516,9 @@
 	gettid.c getuid.c getuid32.c getxxid.c group_req.c inet-cmsg.c \
 	init_module.c inotify.c inotify_init1.c int_0x80.c ioctl.c \
 	ioctl_block.c ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c \
-	ioctl_evdev-v.c ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c \
-	ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c ioctl_rtc-v.c \
-	ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
+	ioctl_evdev-v.c ioctl_kvm_run.c ioctl_loop.c ioctl_loop-nv.c \
+	ioctl_loop-v.c ioctl_mtd.c ioctl_nsfs.c ioctl_rtc.c \
+	ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
 	ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
 	iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
 	ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
@@ -2417,13 +2528,13 @@
 	mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
 	mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
 	mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
-	mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
-	mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
-	msg_control-v.c msg_name.c munlockall.c nanosleep.c \
-	net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
-	net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
-	netlink_audit.c netlink_crypto.c netlink_generic.c \
-	netlink_inet_diag.c netlink_kobject_uevent.c \
+	mmsg_name-v.c modify_ldt.c mount.c move_pages.c mq.c \
+	mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+	msg_control.c msg_control-v.c msg_name.c munlockall.c \
+	nanosleep.c net-accept-connect.c net-icmp_filter.c \
+	net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+	net-yy-unix.c netlink_audit.c netlink_crypto.c \
+	netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \
 	netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
 	netlink_route.c netlink_selinux.c netlink_sock_diag.c \
 	netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
@@ -2442,13 +2553,16 @@
 	nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
 	nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
 	nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+	nsyscalls.c nsyscalls-d.c old_mmap.c old_mmap-P.c \
+	old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+	oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
 	oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
 	perf_event_open.c perf_event_open_nonverbose.c \
 	perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
-	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
-	ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
-	prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \
+	ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+	prctl-dumpable.c prctl-name.c prctl-no-args.c \
+	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
 	prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
 	prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
 	preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2462,28 +2576,32 @@
 	readdir.c readlink.c readlinkat.c readv.c reboot.c recvfrom.c \
 	recvmmsg-timeout.c recvmsg.c redirect-fds.c remap_file_pages.c \
 	rename.c renameat.c renameat2.c request_key.c \
-	restart_syscall.c rmdir.c rt_sigaction.c rt_sigpending.c \
-	rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-	run_expect_termsig.c sched_get_priority_mxx.c \
+	restart_syscall.c riscv_flush_icache.c rmdir.c rt_sigaction.c \
+	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.c run_expect_termsig.c \
+	s390_guarded_storage.c s390_guarded_storage-v.c \
+	s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+	s390_sthyi-v.c sched_get_priority_mxx.c \
 	sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
 	sched_xetparam.c sched_xetscheduler.c sched_yield.c \
 	scm_rights.c seccomp-filter.c seccomp-filter-v.c \
-	seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
-	sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-	set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-	setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-	setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-	setregid32.c setresgid.c setresgid32.c setresuid.c \
+	seccomp-strict.c seccomp_get_action_avail.c select.c \
+	select-P.c semop.c sendfile.c sendfile64.c set_mempolicy.c \
+	set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \
+	setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \
+	setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \
+	setregid.c setregid32.c setresgid.c setresgid32.c setresuid.c \
 	setresuid32.c setreuid.c setreuid32.c setrlimit.c setuid.c \
 	setuid32.c shmxt.c shutdown.c sigaction.c sigaltstack.c \
 	siginfo.c signal.c signal_receive.c signalfd4.c sigpending.c \
 	sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_linger.c \
-	so_peercred.c sock_filter-v.c socketcall.c splice.c \
-	$(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
-	statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
-	sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
-	threads-execve.c time.c timer_create.c timer_xettime.c \
+	so_peercred.c sock_filter-v.c socketcall.c \
+	sockopt-sol_netlink.c splice.c $(stack_fcall_SOURCES) \
+	$(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \
+	statfs64.c statx.c swap.c sxetmask.c symlink.c symlinkat.c \
+	sync.c sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+	tee.c threads-execve.c time.c timer_create.c timer_xettime.c \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
 	ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
 	umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
@@ -2492,7 +2610,8 @@
 	userfaultfd.c ustat.c utime.c utimensat.c utimes.c vfork-f.c \
 	vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
 	waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-	xetitimer.c xetpgid.c xetpriority.c xettimeofday.c zeroargc.c
+	xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
+	xettimeofday.c zeroargc.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -2705,7 +2824,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2793,10 +2912,13 @@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
 RANLIB = @RANLIB@
+READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
+SIZEOF_LONG = @SIZEOF_LONG@
 STRIP = @STRIP@
 VALGRIND = @VALGRIND@
 VALGRIND_ENABLED = @VALGRIND_ENABLED@
@@ -2817,6 +2939,7 @@
 arch = @arch@
 arch_m32 = @arch_m32@
 arch_mx32 = @arch_mx32@
+arch_native = @arch_native@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -2824,6 +2947,8 @@
 build_os = @build_os@
 build_vendor = @build_vendor@
 builddir = @builddir@
+cc_flags_m32 = @cc_flags_m32@
+cc_flags_mx32 = @cc_flags_mx32@
 datadir = @datadir@
 datarootdir = @datarootdir@
 dl_LIBS = @dl_LIBS@
@@ -2841,6 +2966,9 @@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
+libiberty_LDFLAGS = @libiberty_LDFLAGS@
+libiberty_LIBS = @libiberty_LIBS@
 libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
 libunwind_LDFLAGS = @libunwind_LDFLAGS@
 libunwind_LIBS = @libunwind_LIBS@
@@ -2865,7 +2993,9 @@
 valgrind_tools = @valgrind_tools@
 OS = linux
 ARCH = @arch@
+NATIVE_ARCH = @arch_native@
 MPERS_NAME = 
+MPERS_CC_FLAGS = 
 ARCH_MFLAGS = 
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
@@ -3021,6 +3151,7 @@
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_kvm_run \
   ioctl_loop \
   ioctl_mtd \
   ioctl_rtc \
@@ -3071,6 +3202,7 @@
   mmap64 \
   mmsg \
   mmsg_name \
+  modify_ldt \
   mount \
   move_pages \
   mq \
@@ -3140,9 +3272,12 @@
   nlattr_tcmsg \
   nlattr_unix_diag_msg \
   old_mmap \
+  old_mmap-P \
+  old_mmap-v-none \
   oldfstat \
   oldlstat \
   oldselect \
+  oldselect-efault \
   oldstat \
   open \
   openat \
@@ -3156,7 +3291,9 @@
   pkey_free \
   pkey_mprotect \
   poll \
+  poll-P \
   ppoll \
+  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -3199,6 +3336,7 @@
   renameat \
   renameat2 \
   request_key \
+  riscv_flush_icache \
   rmdir \
   rt_sigaction \
   rt_sigpending \
@@ -3208,6 +3346,12 @@
   rt_sigsuspend \
   rt_sigtimedwait \
   rt_tgsigqueueinfo \
+  s390_guarded_storage \
+  s390_guarded_storage-v \
+  s390_pci_mmio_read_write \
+  s390_runtime_instr \
+  s390_sthyi \
+  s390_sthyi-v \
   sched_get_priority_mxx \
   sched_rr_get_interval \
   sched_xetaffinity \
@@ -3259,6 +3403,7 @@
   so_peercred \
   sock_filter-v \
   socketcall \
+  sockopt-sol_netlink \
   splice \
   stat \
   stat64 \
@@ -3310,6 +3455,7 @@
   xattr \
   xattr-strings \
   xet_robust_list \
+  xet_thread_area_x86 \
   xetitimer \
   xetpgid \
   xetpriority \
@@ -3344,13 +3490,17 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
+	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
+	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
+
 
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
-	access.gen.test acct.gen.test add_key.gen.test \
-	adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test \
-	bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test \
-	chown32.gen.test chroot.gen.test clock.gen.test \
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
+	accept4.gen.test access.gen.test acct.gen.test \
+	add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test \
+	bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test \
+	chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test \
 	clock_adjtime.gen.test clock_nanosleep.gen.test \
 	clock_xettime.gen.test copy_file_range.gen.test creat.gen.test \
 	delete_module.gen.test dup.gen.test dup2.gen.test \
@@ -3378,46 +3528,49 @@
 	gettid.gen.test getuid32.gen.test getxxid.gen.test \
 	group_req.gen.test inet-cmsg.gen.test init_module.gen.test \
 	inotify.gen.test inotify_init1.gen.test int_0x80.gen.test \
-	ioctl_block.gen.test ioctl_evdev.gen.test \
-	ioctl_evdev-v.gen.test ioctl_loop.gen.test \
-	ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test \
+	ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test \
+	ioctl_evdev.gen.test ioctl_evdev-v.gen.test \
+	ioctl_kvm_run.gen.test ioctl_loop.gen.test \
+	ioctl_loop-nv.gen.test ioctl_loop-v.gen.test \
+	ioctl_mtd.gen.test ioctl_nsfs.gen.test ioctl_rtc.gen.test \
 	ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
 	ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
-	ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
-	iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
-	ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
-	kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \
-	kexec_load.gen.test keyctl.gen.test kill.gen.test \
-	lchown.gen.test lchown32.gen.test link.gen.test \
-	linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
-	lstat64.gen.test madvise.gen.test mbind.gen.test \
-	membarrier.gen.test memfd_create.gen.test \
-	migrate_pages.gen.test mincore.gen.test mkdir.gen.test \
-	mkdirat.gen.test mknod.gen.test mknodat.gen.test \
-	mlock.gen.test mlock2.gen.test mlockall.gen.test \
-	mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \
-	mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \
-	move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \
-	mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \
-	msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \
-	munlockall.gen.test nanosleep.gen.test \
-	net-icmp_filter.gen.test net-sockaddr.gen.test \
-	netlink_audit.gen.test netlink_crypto.gen.test \
-	netlink_generic.gen.test netlink_kobject_uevent.gen.test \
-	netlink_netfilter.gen.test netlink_protocol.gen.test \
-	netlink_route.gen.test netlink_selinux.gen.test \
-	netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \
-	nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \
-	nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \
-	nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \
-	nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \
-	nfnetlink_osf.gen.test nfnetlink_queue.gen.test \
-	nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \
-	nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \
-	nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \
-	nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
-	nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \
-	nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
+	ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test \
+	ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test \
+	ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test \
+	ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test \
+	kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test \
+	keyctl.gen.test kill.gen.test lchown.gen.test \
+	lchown32.gen.test link.gen.test linkat.gen.test \
+	lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
+	madvise.gen.test mbind.gen.test membarrier.gen.test \
+	memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
+	mkdir.gen.test mkdirat.gen.test mknod.gen.test \
+	mknodat.gen.test mlock.gen.test mlock2.gen.test \
+	mlockall.gen.test mmap64.gen.test mmsg.gen.test \
+	mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
+	modify_ldt.gen.test mount.gen.test move_pages.gen.test \
+	mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+	mq_sendrecv-write.gen.test msg_control.gen.test \
+	msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
+	nanosleep.gen.test net-icmp_filter.gen.test \
+	net-sockaddr.gen.test netlink_audit.gen.test \
+	netlink_crypto.gen.test netlink_generic.gen.test \
+	netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \
+	netlink_protocol.gen.test netlink_route.gen.test \
+	netlink_selinux.gen.test netlink_xfrm.gen.test \
+	newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test \
+	nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test \
+	nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test \
+	nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test \
+	nfnetlink_nftables.gen.test nfnetlink_osf.gen.test \
+	nfnetlink_queue.gen.test nfnetlink_ulog.gen.test \
+	nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \
+	nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \
+	nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \
+	nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \
+	nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \
+	nlattr_inet_diag_msg.gen.test \
 	nlattr_inet_diag_req_compat.gen.test \
 	nlattr_inet_diag_req_v2.gen.test \
 	nlattr_mdba_mdb_entry.gen.test \
@@ -3429,16 +3582,18 @@
 	nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \
 	nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \
 	nlattr_unix_diag_msg.gen.test old_mmap.gen.test \
-	oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \
-	open.gen.test openat.gen.test osf_utimes.gen.test \
-	pause.gen.test perf_event_open.gen.test \
+	old_mmap-P.gen.test old_mmap-v-none.gen.test oldfstat.gen.test \
+	oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test \
+	oldselect-efault.gen.test oldselect-efault-P.gen.test \
+	oldstat.gen.test open.gen.test openat.gen.test \
+	osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \
 	perf_event_open_nonverbose.gen.test \
 	perf_event_open_unabbrev.gen.test pipe2.gen.test \
 	pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
-	ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
-	preadv.gen.test preadv-pwritev.gen.test \
-	preadv2-pwritev2.gen.test printstr.gen.test \
-	printpath-umovestr.gen.test \
+	ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \
+	pread64-pwrite64.gen.test preadv.gen.test \
+	preadv-pwritev.gen.test preadv2-pwritev2.gen.test \
+	printstr.gen.test printpath-umovestr.gen.test \
 	printpath-umovestr-peekdata.gen.test \
 	printpath-umovestr-undumpable.gen.test \
 	printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test \
@@ -3451,44 +3606,48 @@
 	reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test \
 	recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
 	rename.gen.test renameat.gen.test renameat2.gen.test \
-	request_key.gen.test rmdir.gen.test rt_sigpending.gen.test \
-	rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test \
-	rt_sigreturn.gen.test rt_sigsuspend.gen.test \
-	rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
-	sched.gen.test sched_get_priority_mxx.gen.test \
-	sched_rr_get_interval.gen.test sched_xetaffinity.gen.test \
-	sched_xetattr.gen.test sched_xetparam.gen.test \
-	sched_xetscheduler.gen.test sched_yield.gen.test \
-	seccomp-filter.gen.test seccomp-filter-v.gen.test \
-	seccomp_get_action_avail.gen.test select.gen.test \
-	semop.gen.test sendfile.gen.test sendfile64.gen.test \
-	set_mempolicy.gen.test setdomainname.gen.test \
-	setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \
-	setfsuid32.gen.test setgid.gen.test setgid32.gen.test \
-	setgroups.gen.test setgroups32.gen.test sethostname.gen.test \
-	setns.gen.test setregid.gen.test setregid32.gen.test \
-	setresgid.gen.test setresgid32.gen.test setresuid.gen.test \
-	setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \
-	setrlimit.gen.test setuid.gen.test setuid32.gen.test \
-	shmxt.gen.test shutdown.gen.test sigaction.gen.test \
-	siginfo.gen.test signal.gen.test signal_receive.gen.test \
-	signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \
-	sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \
-	so_peercred.gen.test sock_filter-v.gen.test \
-	socketcall.gen.test splice.gen.test stat.gen.test \
-	stat64.gen.test statfs.gen.test statfs64.gen.test \
-	statx.gen.test swap.gen.test sxetmask.gen.test \
-	symlink.gen.test symlinkat.gen.test sync.gen.test \
-	sync_file_range.gen.test sync_file_range2.gen.test \
-	sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test \
-	timer_create.gen.test timer_xettime.gen.test \
-	timerfd_xettime.gen.test times.gen.test times-fail.gen.test \
-	trace_fstat.gen.test trace_fstatfs.gen.test \
-	trace_lstat.gen.test trace_question.gen.test \
-	trace_stat.gen.test trace_stat_like.gen.test \
-	trace_statfs.gen.test trace_statfs_like.gen.test \
-	truncate.gen.test truncate64.gen.test ugetrlimit.gen.test \
-	umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test \
+	request_key.gen.test riscv_flush_icache.gen.test \
+	rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test \
+	rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \
+	rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \
+	rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \
+	s390_guarded_storage-v.gen.test \
+	s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \
+	s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \
+	sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \
+	sched_xetaffinity.gen.test sched_xetattr.gen.test \
+	sched_xetparam.gen.test sched_xetscheduler.gen.test \
+	sched_yield.gen.test seccomp-filter.gen.test \
+	seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \
+	select.gen.test select-P.gen.test semop.gen.test \
+	sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test \
+	setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
+	setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
+	setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
+	sethostname.gen.test setns.gen.test setregid.gen.test \
+	setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
+	setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
+	setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
+	setuid32.gen.test shmxt.gen.test shutdown.gen.test \
+	sigaction.gen.test siginfo.gen.test signal.gen.test \
+	signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \
+	sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \
+	so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \
+	socketcall.gen.test sockopt-sol_netlink.gen.test \
+	splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \
+	statfs64.gen.test statx.gen.test swap.gen.test \
+	sxetmask.gen.test symlink.gen.test symlinkat.gen.test \
+	sync.gen.test sync_file_range.gen.test \
+	sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test \
+	tee.gen.test time.gen.test timer_create.gen.test \
+	timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test \
+	times-fail.gen.test trace_fstat.gen.test \
+	trace_fstatfs.gen.test trace_lstat.gen.test \
+	trace_question.gen.test trace_stat.gen.test \
+	trace_stat_like.gen.test trace_statfs.gen.test \
+	trace_statfs_like.gen.test truncate.gen.test \
+	truncate64.gen.test ugetrlimit.gen.test umask.gen.test \
+	umoven-illptr.gen.test umovestr-illptr.gen.test \
 	umovestr3.gen.test unlink.gen.test unlinkat.gen.test \
 	unshare.gen.test userfaultfd.gen.test ustat.gen.test \
 	utime.gen.test utimensat.gen.test utimes.gen.test \
@@ -3499,7 +3658,7 @@
 	xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \
 	xettimeofday.gen.test
 @USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS = 
-@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
+@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test $(am__append_1)
 DECODER_TESTS = \
 	brk.test \
 	btrfs-v.test \
@@ -3514,11 +3673,6 @@
 	futex.test \
 	getuid.test \
 	ioctl.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_loop-nv.test \
-	ioctl_nsfs.test \
-	ioctl_sock_gifconf.test \
 	ipc_msgbuf.test \
 	llseek.test \
 	lseek.test \
@@ -3530,9 +3684,11 @@
 	net.test \
 	netlink_sock_diag.test \
 	nsyscalls.test \
-	oldselect.test \
+	nsyscalls-d.test \
+	nsyscalls-nd.test \
 	personality.test \
 	pipe.test \
+	poll-P.test \
 	poll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
@@ -3551,6 +3707,7 @@
 	seccomp-strict.test \
 	sigaltstack.test \
 	sun_path.test \
+	xet_thread_area_x86.test \
 	uio.test \
 	umount.test \
 	umount2.test \
@@ -3573,6 +3730,8 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
+	filtering_fd-syntax.test \
+	filtering_syscall-syntax.test \
 	fflush.test \
 	get_regs.test \
 	interactive_block.test \
@@ -3616,10 +3775,16 @@
 XFAIL_TESTS_x32 = int_0x80.gen.test
 XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
 TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) STRACE_NATIVE_ARCH=$(NATIVE_ARCH) \
+			SIZEOF_KERNEL_LONG_T=$(SIZEOF_KERNEL_LONG_T) \
+			SIZEOF_LONG=$(SIZEOF_LONG) \
+			MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(abs_srcdir)/strace.supp
 EXTRA_DIST = \
+	accept_compat.h \
+	attach-p-cmd.h \
 	caps-abbrev.awk \
 	caps.awk \
 	clock.in \
@@ -3635,7 +3800,6 @@
 	getresugid.c \
 	init.sh \
 	init_delete_module.h \
-	ioctl-v.sh \
 	ipc.sh \
 	ipc_msgbuf.expected \
 	ksysent.sed \
@@ -3643,8 +3807,8 @@
 	match.awk \
 	net.expected \
 	netlink_sock_diag-v.sh \
-	oldselect.expected \
 	pipe.expected \
+	print_user_desc.c \
 	process_vm_readv_writev.c \
 	pure_executables.list \
 	qual_fault-exit_group.expected \
@@ -3662,10 +3826,12 @@
 	setugid.c \
 	sigaltstack.expected \
 	sockname.c \
+	stack-fcall.h \
 	strace-C.expected \
 	strace-E.expected \
 	strace-T.expected \
 	strace-ff.expected \
+	strace-k-demangle.test \
 	strace-k.test \
 	strace-r.expected \
 	strace.supp \
@@ -3756,6 +3922,10 @@
 	@rm -f _newselect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(_newselect_OBJECTS) $(_newselect_LDADD) $(LIBS)
 
+_newselect-P$(EXEEXT): $(_newselect_P_OBJECTS) $(_newselect_P_DEPENDENCIES) $(EXTRA__newselect_P_DEPENDENCIES) 
+	@rm -f _newselect-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(_newselect_P_OBJECTS) $(_newselect_P_LDADD) $(LIBS)
+
 accept$(EXEEXT): $(accept_OBJECTS) $(accept_DEPENDENCIES) $(EXTRA_accept_DEPENDENCIES) 
 	@rm -f accept$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(accept_OBJECTS) $(accept_LDADD) $(LIBS)
@@ -4248,6 +4418,10 @@
 	@rm -f ioctl_evdev-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
 
+ioctl_kvm_run$(EXEEXT): $(ioctl_kvm_run_OBJECTS) $(ioctl_kvm_run_DEPENDENCIES) $(EXTRA_ioctl_kvm_run_DEPENDENCIES) 
+	@rm -f ioctl_kvm_run$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_kvm_run_OBJECTS) $(ioctl_kvm_run_LDADD) $(LIBS)
+
 ioctl_loop$(EXEEXT): $(ioctl_loop_OBJECTS) $(ioctl_loop_DEPENDENCIES) $(EXTRA_ioctl_loop_DEPENDENCIES) 
 	@rm -f ioctl_loop$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_loop_OBJECTS) $(ioctl_loop_LDADD) $(LIBS)
@@ -4484,6 +4658,10 @@
 	@rm -f mmsg_name-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mmsg_name_v_OBJECTS) $(mmsg_name_v_LDADD) $(LIBS)
 
+modify_ldt$(EXEEXT): $(modify_ldt_OBJECTS) $(modify_ldt_DEPENDENCIES) $(EXTRA_modify_ldt_DEPENDENCIES) 
+	@rm -f modify_ldt$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(modify_ldt_OBJECTS) $(modify_ldt_LDADD) $(LIBS)
+
 mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) $(EXTRA_mount_DEPENDENCIES) 
 	@rm -f mount$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mount_OBJECTS) $(mount_LDADD) $(LIBS)
@@ -4780,10 +4958,22 @@
 	@rm -f nsyscalls$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(nsyscalls_OBJECTS) $(nsyscalls_LDADD) $(LIBS)
 
+nsyscalls-d$(EXEEXT): $(nsyscalls_d_OBJECTS) $(nsyscalls_d_DEPENDENCIES) $(EXTRA_nsyscalls_d_DEPENDENCIES) 
+	@rm -f nsyscalls-d$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(nsyscalls_d_OBJECTS) $(nsyscalls_d_LDADD) $(LIBS)
+
 old_mmap$(EXEEXT): $(old_mmap_OBJECTS) $(old_mmap_DEPENDENCIES) $(EXTRA_old_mmap_DEPENDENCIES) 
 	@rm -f old_mmap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(old_mmap_OBJECTS) $(old_mmap_LDADD) $(LIBS)
 
+old_mmap-P$(EXEEXT): $(old_mmap_P_OBJECTS) $(old_mmap_P_DEPENDENCIES) $(EXTRA_old_mmap_P_DEPENDENCIES) 
+	@rm -f old_mmap-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(old_mmap_P_OBJECTS) $(old_mmap_P_LDADD) $(LIBS)
+
+old_mmap-v-none$(EXEEXT): $(old_mmap_v_none_OBJECTS) $(old_mmap_v_none_DEPENDENCIES) $(EXTRA_old_mmap_v_none_DEPENDENCIES) 
+	@rm -f old_mmap-v-none$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(old_mmap_v_none_OBJECTS) $(old_mmap_v_none_LDADD) $(LIBS)
+
 oldfstat$(EXEEXT): $(oldfstat_OBJECTS) $(oldfstat_DEPENDENCIES) $(EXTRA_oldfstat_DEPENDENCIES) 
 	@rm -f oldfstat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldfstat_OBJECTS) $(oldfstat_LDADD) $(LIBS)
@@ -4796,6 +4986,18 @@
 	@rm -f oldselect$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldselect_OBJECTS) $(oldselect_LDADD) $(LIBS)
 
+oldselect-P$(EXEEXT): $(oldselect_P_OBJECTS) $(oldselect_P_DEPENDENCIES) $(EXTRA_oldselect_P_DEPENDENCIES) 
+	@rm -f oldselect-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_P_OBJECTS) $(oldselect_P_LDADD) $(LIBS)
+
+oldselect-efault$(EXEEXT): $(oldselect_efault_OBJECTS) $(oldselect_efault_DEPENDENCIES) $(EXTRA_oldselect_efault_DEPENDENCIES) 
+	@rm -f oldselect-efault$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_efault_OBJECTS) $(oldselect_efault_LDADD) $(LIBS)
+
+oldselect-efault-P$(EXEEXT): $(oldselect_efault_P_OBJECTS) $(oldselect_efault_P_DEPENDENCIES) $(EXTRA_oldselect_efault_P_DEPENDENCIES) 
+	@rm -f oldselect-efault-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(oldselect_efault_P_OBJECTS) $(oldselect_efault_P_LDADD) $(LIBS)
+
 oldstat$(EXEEXT): $(oldstat_OBJECTS) $(oldstat_DEPENDENCIES) $(EXTRA_oldstat_DEPENDENCIES) 
 	@rm -f oldstat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(oldstat_OBJECTS) $(oldstat_LDADD) $(LIBS)
@@ -4860,10 +5062,18 @@
 	@rm -f poll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(poll_OBJECTS) $(poll_LDADD) $(LIBS)
 
+poll-P$(EXEEXT): $(poll_P_OBJECTS) $(poll_P_DEPENDENCIES) $(EXTRA_poll_P_DEPENDENCIES) 
+	@rm -f poll-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(poll_P_OBJECTS) $(poll_P_LDADD) $(LIBS)
+
 ppoll$(EXEEXT): $(ppoll_OBJECTS) $(ppoll_DEPENDENCIES) $(EXTRA_ppoll_DEPENDENCIES) 
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
 
+ppoll-P$(EXEEXT): $(ppoll_P_OBJECTS) $(ppoll_P_DEPENDENCIES) $(EXTRA_ppoll_P_DEPENDENCIES) 
+	@rm -f ppoll-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ppoll_P_OBJECTS) $(ppoll_P_LDADD) $(LIBS)
+
 ppoll-v$(EXEEXT): $(ppoll_v_OBJECTS) $(ppoll_v_DEPENDENCIES) $(EXTRA_ppoll_v_DEPENDENCIES) 
 	@rm -f ppoll-v$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_v_OBJECTS) $(ppoll_v_LDADD) $(LIBS)
@@ -5084,6 +5294,10 @@
 	@rm -f restart_syscall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(restart_syscall_OBJECTS) $(restart_syscall_LDADD) $(LIBS)
 
+riscv_flush_icache$(EXEEXT): $(riscv_flush_icache_OBJECTS) $(riscv_flush_icache_DEPENDENCIES) $(EXTRA_riscv_flush_icache_DEPENDENCIES) 
+	@rm -f riscv_flush_icache$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(riscv_flush_icache_OBJECTS) $(riscv_flush_icache_LDADD) $(LIBS)
+
 rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES) $(EXTRA_rmdir_DEPENDENCIES) 
 	@rm -f rmdir$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS)
@@ -5124,6 +5338,30 @@
 	@rm -f run_expect_termsig$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS)
 
+s390_guarded_storage$(EXEEXT): $(s390_guarded_storage_OBJECTS) $(s390_guarded_storage_DEPENDENCIES) $(EXTRA_s390_guarded_storage_DEPENDENCIES) 
+	@rm -f s390_guarded_storage$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_guarded_storage_OBJECTS) $(s390_guarded_storage_LDADD) $(LIBS)
+
+s390_guarded_storage-v$(EXEEXT): $(s390_guarded_storage_v_OBJECTS) $(s390_guarded_storage_v_DEPENDENCIES) $(EXTRA_s390_guarded_storage_v_DEPENDENCIES) 
+	@rm -f s390_guarded_storage-v$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_guarded_storage_v_OBJECTS) $(s390_guarded_storage_v_LDADD) $(LIBS)
+
+s390_pci_mmio_read_write$(EXEEXT): $(s390_pci_mmio_read_write_OBJECTS) $(s390_pci_mmio_read_write_DEPENDENCIES) $(EXTRA_s390_pci_mmio_read_write_DEPENDENCIES) 
+	@rm -f s390_pci_mmio_read_write$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_pci_mmio_read_write_OBJECTS) $(s390_pci_mmio_read_write_LDADD) $(LIBS)
+
+s390_runtime_instr$(EXEEXT): $(s390_runtime_instr_OBJECTS) $(s390_runtime_instr_DEPENDENCIES) $(EXTRA_s390_runtime_instr_DEPENDENCIES) 
+	@rm -f s390_runtime_instr$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_runtime_instr_OBJECTS) $(s390_runtime_instr_LDADD) $(LIBS)
+
+s390_sthyi$(EXEEXT): $(s390_sthyi_OBJECTS) $(s390_sthyi_DEPENDENCIES) $(EXTRA_s390_sthyi_DEPENDENCIES) 
+	@rm -f s390_sthyi$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_sthyi_OBJECTS) $(s390_sthyi_LDADD) $(LIBS)
+
+s390_sthyi-v$(EXEEXT): $(s390_sthyi_v_OBJECTS) $(s390_sthyi_v_DEPENDENCIES) $(EXTRA_s390_sthyi_v_DEPENDENCIES) 
+	@rm -f s390_sthyi-v$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(s390_sthyi_v_OBJECTS) $(s390_sthyi_v_LDADD) $(LIBS)
+
 sched_get_priority_mxx$(EXEEXT): $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_DEPENDENCIES) $(EXTRA_sched_get_priority_mxx_DEPENDENCIES) 
 	@rm -f sched_get_priority_mxx$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_LDADD) $(LIBS)
@@ -5176,6 +5414,10 @@
 	@rm -f select$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
 
+select-P$(EXEEXT): $(select_P_OBJECTS) $(select_P_DEPENDENCIES) $(EXTRA_select_P_DEPENDENCIES) 
+	@rm -f select-P$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(select_P_OBJECTS) $(select_P_LDADD) $(LIBS)
+
 semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIES) 
 	@rm -f semop$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
@@ -5360,6 +5602,10 @@
 	@rm -f socketcall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(socketcall_OBJECTS) $(socketcall_LDADD) $(LIBS)
 
+sockopt-sol_netlink$(EXEEXT): $(sockopt_sol_netlink_OBJECTS) $(sockopt_sol_netlink_DEPENDENCIES) $(EXTRA_sockopt_sol_netlink_DEPENDENCIES) 
+	@rm -f sockopt-sol_netlink$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sockopt_sol_netlink_OBJECTS) $(sockopt_sol_netlink_LDADD) $(LIBS)
+
 splice$(EXEEXT): $(splice_OBJECTS) $(splice_DEPENDENCIES) $(EXTRA_splice_DEPENDENCIES) 
 	@rm -f splice$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(splice_OBJECTS) $(splice_LDADD) $(LIBS)
@@ -5368,6 +5614,10 @@
 	@rm -f stack-fcall$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
 
+stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
+	@rm -f stack-fcall-mangled$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
+
 stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES) 
 	@rm -f stat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS)
@@ -5596,6 +5846,10 @@
 	@rm -f xet_robust_list$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
 
+xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) 
+	@rm -f xet_thread_area_x86$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS)
+
 xetitimer$(EXEEXT): $(xetitimer_OBJECTS) $(xetitimer_DEPENDENCIES) $(EXTRA_xetitimer_DEPENDENCIES) 
 	@rm -f xetitimer$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(xetitimer_OBJECTS) $(xetitimer_LDADD) $(LIBS)
@@ -5622,6 +5876,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@
@@ -5746,6 +6001,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-nv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop.Po@am__quote@
@@ -5831,6 +6087,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modify_ldt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq.Po@am__quote@
@@ -5904,10 +6161,16 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls-d.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap-v-none.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldfstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldlstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault-P.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
@@ -5924,7 +6187,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_free.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_mprotect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-arg2-intptr.Po@am__quote@
@@ -5981,6 +6246,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renameat2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/request_key.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/restart_syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/riscv_flush_icache.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
@@ -5991,6 +6257,12 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_pci_mmio_read_write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_runtime_instr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@
@@ -6003,6 +6275,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select-P.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
@@ -6050,11 +6323,17 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sock_filter-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockopt-sol_netlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-0.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
@@ -6113,6 +6392,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@
@@ -7094,6 +7374,9 @@
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/_newselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7385,21 +7668,36 @@
 $(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_dm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_kvm_run.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_loop-nv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7415,6 +7713,9 @@
 $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7538,6 +7839,9 @@
 $(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/modify_ldt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7733,12 +8037,30 @@
 $(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/old_mmap-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap-v-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/oldselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7778,6 +8100,9 @@
 $(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ppoll-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7889,6 +8214,9 @@
 $(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/riscv_flush_icache.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7913,6 +8241,24 @@
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_guarded_storage-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_pci_mmio_read_write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_runtime_instr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -7949,6 +8295,9 @@
 $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -8072,6 +8421,9 @@
 $(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/sockopt-sol_netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
diff --git a/tests/_newselect-P.c b/tests/_newselect-P.c
new file mode 100644
index 0000000..561fbfe
--- /dev/null
+++ b/tests/_newselect-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "_newselect.c"
diff --git a/tests/_newselect-P.gen.test b/tests/_newselect-P.gen.test
new file mode 100755
index 0000000..9c4247a
--- /dev/null
+++ b/tests/_newselect-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect-P -e trace=_newselect -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=_newselect -P /dev/full 9>>/dev/full
diff --git a/tests/_newselect.gen.test b/tests/_newselect.gen.test
index 490abe4..8e4d5f2 100755
--- a/tests/_newselect.gen.test
+++ b/tests/_newselect.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/accept.c b/tests/accept.c
index 8d42ba1..40b45db 100644
--- a/tests/accept.c
+++ b/tests/accept.c
@@ -2,6 +2,7 @@
  * Check decoding of accept syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,9 +28,34 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef TEST_SYSCALL_NAME
-# define TEST_SYSCALL_NAME accept
-#endif
+#include "tests.h"
+
+#include <unistd.h>
+
+#include <asm/unistd.h>
+
+#if defined __NR_accept
+
+# ifndef TEST_SYSCALL_NAME
+#  define TEST_SYSCALL_NAME do_accept
+
+#  ifndef TEST_SYSCALL_STR
+#   define TEST_SYSCALL_STR "accept"
+#  endif
+
+int do_accept(int sockfd, void *addr, void *addrlen)
+{
+	return syscall(__NR_accept, sockfd, addr, addrlen);
+}
+# endif /* !TEST_SYSCALL_NAME */
+
+#else /* !__NR_accept */
+
+# ifndef TEST_SYSCALL_NAME
+#  define TEST_SYSCALL_NAME accept
+# endif
+
+#endif /* __NR_accept */
 
 #define TEST_SYSCALL_PREPARE connect_un()
 static void connect_un(void);
diff --git a/tests/accept.gen.test b/tests/accept.gen.test
index 3ebba3b..45d9239 100755
--- a/tests/accept.gen.test
+++ b/tests/accept.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests/accept4.gen.test b/tests/accept4.gen.test
index 5bd7fe6..7119970 100755
--- a/tests/accept4.gen.test
+++ b/tests/accept4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests/accept_compat.h b/tests/accept_compat.h
new file mode 100644
index 0000000..c45b255
--- /dev/null
+++ b/tests/accept_compat.h
@@ -0,0 +1,25 @@
+#ifndef _STRACE_TESTS_ACCEPT_COMPAT_H_
+#define _STRACE_TESTS_ACCEPT_COMPAT_H_
+
+#include <unistd.h>
+#include <sys/socket.h>
+#include <asm/unistd.h>
+
+#if defined __NR_socketcall && defined __sparc__
+/*
+ * Work around the fact that
+ * - glibc >= 2.26 uses accept4 syscall to implement accept() call on sparc;
+ * - accept syscall had not been wired up on sparc until v4.4-rc8~4^2~1.
+ */
+static inline int
+do_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
+{
+	const long args[] = { sockfd, (long) addr, (long) addrlen };
+
+	return syscall(__NR_socketcall, 5, args);
+}
+#else
+# define do_accept accept
+#endif
+
+#endif /* !_STRACE_TESTS_ACCEPT_COMPAT_H_ */
diff --git a/tests/acct.gen.test b/tests/acct.gen.test
index fa14e85..4a98dd4 100755
--- a/tests/acct.gen.test
+++ b/tests/acct.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/adjtimex.gen.test b/tests/adjtimex.gen.test
index 8db59f2..e602443 100755
--- a/tests/adjtimex.gen.test
+++ b/tests/adjtimex.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests/alarm.gen.test b/tests/alarm.gen.test
index ba1dea8..25982e1 100755
--- a/tests/alarm.gen.test
+++ b/tests/alarm.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/attach-p-cmd-cmd.c b/tests/attach-p-cmd-cmd.c
index d0f824e..70e3a2d 100644
--- a/tests/attach-p-cmd-cmd.c
+++ b/tests/attach-p-cmd-cmd.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of attach-p-cmd strace test.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,19 +32,41 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include "attach-p-cmd.h"
 
-int
-main(void)
+static void
+write_pidfile(const pid_t pid)
 {
-	static const char lockdir[] = "attach-p-cmd.test-lock";
+	FILE *fp = fopen(pidfile, "w");
+	if (!fp)
+		perror_msg_and_fail("fopen: %s", pidfile);
+
+	if (fprintf(fp, "%d", pid) < 0)
+		perror_msg_and_fail("fprintf: %s", pidfile);
+
+	if (fclose(fp))
+		perror_msg_and_fail("fclose: %s", pidfile);
+}
+
+static void
+wait_for_peer_invocation(void)
+{
 	/* wait for the lock directory to be created by peer */
 	while (rmdir(lockdir)) {
 		if (ENOENT != errno)
 			perror_msg_and_fail("rmdir: %s", lockdir);
 	}
+}
+
+int
+main(void)
+{
+	const pid_t pid = getpid();
+	write_pidfile(pid);
+
+	wait_for_peer_invocation();
 
 	static const char dir[] = "attach-p-cmd.test cmd";
-	pid_t pid = getpid();
 	int rc = chdir(dir);
 
 	printf("%-5d chdir(\"%s\") = %s\n"
diff --git a/tests/attach-p-cmd-p.c b/tests/attach-p-cmd-p.c
index 254d19a..843db95 100644
--- a/tests/attach-p-cmd-p.c
+++ b/tests/attach-p-cmd-p.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of attach-p-cmd strace test.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,27 +33,14 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
+#include <time.h>
 #include <unistd.h>
+#include "attach-p-cmd.h"
 
 static void
-handler(int signo)
+wait_for_peer_invocation(void)
 {
-}
-
-int
-main(void)
-{
-	const struct sigaction act = { .sa_handler = handler };
-	if (sigaction(SIGALRM, &act, NULL))
-		perror_msg_and_fail("sigaction");
-
-	sigset_t mask = {};
-	sigaddset(&mask, SIGALRM);
-	if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
-		perror_msg_and_fail("sigprocmask");
-
-	static const char lockdir[] = "attach-p-cmd.test-lock";
-	/* create a lock directory */
+	/* create the lock directory */
 	if (mkdir(lockdir, 0700))
 		perror_msg_and_fail("mkdir: %s", lockdir);
 
@@ -63,21 +50,51 @@
 			perror_msg_and_fail("mkdir: %s", lockdir);
 	}
 
-	/* remove the lock directory */
+	/* cleanup the lock directory */
 	if (rmdir(lockdir))
 		perror_msg_and_fail("rmdir: %s", lockdir);
+}
 
-	alarm(1);
-	pause();
+static void
+wait_for_peer_termination(void)
+{
+	FILE *fp = fopen(pidfile, "r");
+	if (!fp)
+		perror_msg_and_fail("fopen: %s", pidfile);
+
+	pid_t pid;
+	if (fscanf(fp, "%d", &pid) < 0)
+		perror_msg_and_fail("fscanf: %s", pidfile);
+	if (pid < 0)
+		error_msg_and_fail("pid = %d", pid);
+
+	if (fclose(fp))
+		perror_msg_and_fail("fclose: %s", pidfile);
+
+	if (unlink(pidfile))
+		perror_msg_and_fail("unlink: %s", pidfile);
+
+	while (kill(pid, 0) == 0)
+		;
+}
+
+int
+main(void)
+{
+	wait_for_peer_invocation();
+	wait_for_peer_termination();
+
+	static const struct timespec ts = { .tv_nsec = 123456789 };
+	if (nanosleep(&ts, NULL))
+		perror_msg_and_fail("nanosleep");
 
 	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"
+	printf("%-5d chdir(\"%s\") = %s\n"
 	       "%-5d +++ exited with 0 +++\n",
-	       pid, pid, dir, rc, errno2name(), pid);
+	       pid, dir, sprintrc(rc), pid);
 
 	return 0;
 }
diff --git a/tests/attach-p-cmd.h b/tests/attach-p-cmd.h
new file mode 100644
index 0000000..e04af38
--- /dev/null
+++ b/tests/attach-p-cmd.h
@@ -0,0 +1,2 @@
+static const char lockdir[] = "attach-p-cmd.test-lock";
+static const char pidfile[] = "attach-p-cmd.test-pid";
diff --git a/tests/bpf.c b/tests/bpf.c
index bec30f8..3f963fa 100644
--- a/tests/bpf.c
+++ b/tests/bpf.c
@@ -34,8 +34,11 @@
  && (defined HAVE_UNION_BPF_ATTR_ATTACH_FLAGS	\
   || defined HAVE_UNION_BPF_ATTR_BPF_FD		\
   || defined HAVE_UNION_BPF_ATTR_FLAGS		\
-  || defined HAVE_UNION_BPF_ATTR_INNER_MAP_FD	\
-  || defined HAVE_UNION_BPF_ATTR_PROG_FLAGS)
+  || defined HAVE_UNION_BPF_ATTR_INFO_INFO	\
+  || defined HAVE_UNION_BPF_ATTR_NEXT_ID	\
+  || defined HAVE_UNION_BPF_ATTR_NUMA_NODE	\
+  || defined HAVE_UNION_BPF_ATTR_PROG_FLAGS	\
+  || defined HAVE_UNION_BPF_ATTR_TEST_DURATION)
 
 # include <stddef.h>
 # include <stdio.h>
@@ -43,6 +46,7 @@
 # include <string.h>
 # include <unistd.h>
 # include <linux/bpf.h>
+# include "print_fields.h"
 
 static const kernel_ulong_t long_bits = (kernel_ulong_t) 0xfacefeed00000000ULL;
 static const char *errstr;
@@ -183,18 +187,22 @@
 		  init_ ## cmd_ ## _attr, print_ ## cmd_ ## _attr)	\
 	/* End of TEST_BPF definition. */
 
-# ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+#define DEF_BPF_INIT_FIRST(cmd_, field_, value_)			\
+	static unsigned int						\
+	init_ ## cmd_ ## _first(const unsigned long eop)		\
+	{								\
+		static const union bpf_attr attr = { .field_ = value_ };\
+		static const unsigned int offset = sizeof(attr.field_);	\
+		const unsigned long addr = eop - offset;		\
+									\
+		memcpy((void *) addr, &attr.field_, offset);		\
+		return offset;						\
+	}								\
+	/* End of DEF_INIT_FIRST definition. */
 
-static unsigned int
-init_BPF_MAP_CREATE_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .map_type = 2 };
-	static const unsigned int offset = sizeof(attr.map_type);
-	const unsigned long addr = eop - offset;
+# ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
 
-	memcpy((void *) addr, &attr.map_type, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_MAP_CREATE, map_type, 2)
 
 static void
 print_BPF_MAP_CREATE_first(const unsigned long addr)
@@ -211,11 +219,12 @@
 		.key_size = 4,
 		.value_size = 8,
 		.max_entries = 256,
-		.map_flags = 1,
-		.inner_map_fd = -1
+		.map_flags = 7,
+		.inner_map_fd = -1,
+		.numa_node = 42
 	};
 	static const unsigned int offset =
-		offsetofend(union bpf_attr, inner_map_fd);
+		offsetofend(union bpf_attr, numa_node);
 	const unsigned long addr = eop - offset;
 
 	memcpy((void *) addr, &attr, offset);
@@ -227,23 +236,15 @@
 {
 	printf("map_type=BPF_MAP_TYPE_HASH, key_size=4"
 	       ", value_size=8, max_entries=256"
-	       ", map_flags=BPF_F_NO_PREALLOC, inner_map_fd=-1");
+	       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NO_COMMON_LRU"
+	       "|BPF_F_NUMA_NODE, inner_map_fd=-1, numa_node=42");
 }
 
-# endif /* HAVE_UNION_BPF_ATTR_INNER_MAP_FD */
+# endif /* HAVE_UNION_BPF_ATTR_NUMA_NODE */
 
 # ifdef HAVE_UNION_BPF_ATTR_FLAGS
 
-static unsigned int
-init_BPF_MAP_LOOKUP_ELEM_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .map_fd = -1 };
-	static const unsigned int offset = sizeof(attr.map_fd);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.map_fd, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_MAP_LOOKUP_ELEM, map_fd, -1)
 
 static void
 print_BPF_MAP_LOOKUP_ELEM_first(const unsigned long addr)
@@ -367,16 +368,7 @@
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_FLAGS
 
-static unsigned int
-init_BPF_PROG_LOAD_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .prog_type = 1 };
-	static const unsigned int offset = sizeof(attr.prog_type);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.prog_type, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_PROG_LOAD, prog_type, 1)
 
 static void
 print_BPF_PROG_LOAD_first(const unsigned long addr)
@@ -435,16 +427,7 @@
  */
 # ifdef HAVE_UNION_BPF_ATTR_BPF_FD
 
-static unsigned int
-init_BPF_OBJ_PIN_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = {};
-	static const unsigned int offset = sizeof(attr.pathname);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.pathname, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_OBJ_PIN, pathname, 0)
 
 static void
 print_BPF_OBJ_PIN_first(const unsigned long addr)
@@ -484,16 +467,7 @@
 /* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 
-static unsigned int
-init_BPF_PROG_ATTACH_first(const unsigned long eop)
-{
-	static const union bpf_attr attr = { .target_fd = -1 };
-	static const unsigned int offset = sizeof(attr.target_fd);
-	const unsigned long addr = eop - offset;
-
-	memcpy((void *) addr, &attr.target_fd, offset);
-	return offset;
-}
+DEF_BPF_INIT_FIRST(BPF_PROG_ATTACH, target_fd, -1)
 
 static void
 print_BPF_PROG_ATTACH_first(const unsigned long addr)
@@ -559,13 +533,171 @@
 
 # endif /* HAVE_UNION_BPF_ATTR_ATTACH_FLAGS */
 
+/* BPF_PROG_TEST_RUN command appears in kernel 4.12. */
+# ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
+
+DEF_BPF_INIT_FIRST(BPF_PROG_TEST_RUN, test.prog_fd, -1)
+
+static void
+print_BPF_PROG_TEST_RUN_first(const unsigned long addr)
+{
+	printf("test={prog_fd=-1, retval=0, data_size_in=0, data_size_out=0"
+	       ", data_in=0, data_out=0, repeat=0, duration=0}");
+}
+
+static const union bpf_attr sample_BPF_PROG_TEST_RUN_attr = {
+	.test = {
+		.prog_fd = -1,
+		.retval = 0xfac1fed2,
+		.data_size_in = 0xfac3fed4,
+		.data_size_out = 0xfac5fed6,
+		.data_in = (uint64_t) 0xfacef11dbadc2ded,
+		.data_out = (uint64_t) 0xfacef33dbadc4ded,
+		.repeat = 0xfac7fed8,
+		.duration = 0xfac9feda
+	}
+};
+static unsigned int
+init_BPF_PROG_TEST_RUN_attr(const unsigned long eop)
+{
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, test);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &sample_BPF_PROG_TEST_RUN_attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_PROG_TEST_RUN_attr(const unsigned long addr)
+{
+	PRINT_FIELD_D("test={", sample_BPF_PROG_TEST_RUN_attr.test, prog_fd);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, retval);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_size_in);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_size_out);
+	PRINT_FIELD_X(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_in);
+	PRINT_FIELD_X(", ", sample_BPF_PROG_TEST_RUN_attr.test, data_out);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, repeat);
+	PRINT_FIELD_U(", ", sample_BPF_PROG_TEST_RUN_attr.test, duration);
+	printf("}");
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_TEST_DURATION */
+
+# ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
+
+DEF_BPF_INIT_FIRST(BPF_PROG_GET_NEXT_ID, start_id, 0xdeadbeef)
+
+static void
+print_BPF_PROG_GET_NEXT_ID_first(const unsigned long addr)
+{
+	printf("start_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static unsigned int
+init_BPF_PROG_GET_NEXT_ID_attr(const unsigned long eop)
+{
+	static const union bpf_attr attr = {
+		.start_id = 0xbadc0ded,
+		.next_id = 0xcafef00d
+	};
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, next_id);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_PROG_GET_NEXT_ID_attr(const unsigned long addr)
+{
+	printf("start_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+#  define init_BPF_MAP_GET_NEXT_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define print_BPF_MAP_GET_NEXT_ID_first print_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_MAP_GET_NEXT_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+#  define print_BPF_MAP_GET_NEXT_ID_attr print_BPF_PROG_GET_NEXT_ID_attr
+
+#  define init_BPF_PROG_GET_FD_BY_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_PROG_GET_FD_BY_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+
+static void
+print_BPF_PROG_GET_FD_BY_ID_first(const unsigned long addr)
+{
+	printf("prog_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static void
+print_BPF_PROG_GET_FD_BY_ID_attr(const unsigned long addr)
+{
+	printf("prog_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+#  define init_BPF_MAP_GET_FD_BY_ID_first init_BPF_PROG_GET_NEXT_ID_first
+#  define init_BPF_MAP_GET_FD_BY_ID_attr init_BPF_PROG_GET_NEXT_ID_attr
+
+static void
+print_BPF_MAP_GET_FD_BY_ID_first(const unsigned long addr)
+{
+	printf("map_id=%u, next_id=0", 0xdeadbeef);
+}
+
+static void
+print_BPF_MAP_GET_FD_BY_ID_attr(const unsigned long addr)
+{
+	printf("map_id=%u, next_id=%u", 0xbadc0ded, 0xcafef00d);
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_NEXT_ID */
+
+# ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
+
+DEF_BPF_INIT_FIRST(BPF_OBJ_GET_INFO_BY_FD, info.bpf_fd, -1)
+
+static void
+print_BPF_OBJ_GET_INFO_BY_FD_first(const unsigned long addr)
+{
+	printf("info={bpf_fd=-1, info_len=0, info=0}");
+}
+
+static const union bpf_attr sample_BPF_OBJ_GET_INFO_BY_FD_attr = {
+	.info = {
+		.bpf_fd = -1,
+		.info_len = 0xdeadbeef,
+		.info = (uint64_t) 0xfacefeedbadc0ded
+	}
+};
+static unsigned int
+init_BPF_OBJ_GET_INFO_BY_FD_attr(const unsigned long eop)
+{
+	static const unsigned int offset =
+		offsetofend(union bpf_attr, info);
+	const unsigned long addr = eop - offset;
+
+	memcpy((void *) addr, &sample_BPF_OBJ_GET_INFO_BY_FD_attr, offset);
+	return offset;
+}
+
+static void
+print_BPF_OBJ_GET_INFO_BY_FD_attr(const unsigned long addr)
+{
+	PRINT_FIELD_D("info={", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, bpf_fd);
+	PRINT_FIELD_U(", ", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, info_len);
+	PRINT_FIELD_X(", ", sample_BPF_OBJ_GET_INFO_BY_FD_attr.info, info);
+	printf("}");
+}
+
+# endif /* HAVE_UNION_BPF_ATTR_INFO_INFO */
+
 int
 main(void)
 {
 	page_size = get_page_size();
 	end_of_page = (unsigned long) tail_alloc(1) + 1;
 
-# ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
+# ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
 	TEST_BPF(BPF_MAP_CREATE);
 # endif
 
@@ -590,6 +722,21 @@
 	TEST_BPF(BPF_PROG_DETACH);
 # endif
 
+# ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
+	TEST_BPF(BPF_PROG_TEST_RUN);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
+	TEST_BPF(BPF_PROG_GET_NEXT_ID);
+	TEST_BPF(BPF_MAP_GET_NEXT_ID);
+	TEST_BPF(BPF_PROG_GET_FD_BY_ID);
+	TEST_BPF(BPF_MAP_GET_FD_BY_ID);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
+	TEST_BPF(BPF_OBJ_GET_INFO_BY_FD);
+# endif
+
 	sys_bpf(0xfacefeed, end_of_page, 40);
 	printf("bpf(0xfacefeed /* BPF_??? */, %#lx, 40) = %s\n",
 	       end_of_page, errstr);
diff --git a/tests/bpf.gen.test b/tests/bpf.gen.test
index 7ee9e7f..1391d6b 100755
--- a/tests/bpf.gen.test
+++ b/tests/bpf.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/btrfs.gen.test b/tests/btrfs.gen.test
index a7118ef..3976cf5 100755
--- a/tests/btrfs.gen.test
+++ b/tests/btrfs.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/chmod.gen.test b/tests/chmod.gen.test
index 438665a..4033088 100755
--- a/tests/chmod.gen.test
+++ b/tests/chmod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/chown.gen.test b/tests/chown.gen.test
index 46889a1..87cc0f0 100755
--- a/tests/chown.gen.test
+++ b/tests/chown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/chown32.gen.test b/tests/chown32.gen.test
index f0f603e..8d9d891 100755
--- a/tests/chown32.gen.test
+++ b/tests/chown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests/chroot.gen.test b/tests/chroot.gen.test
index 6ea81dd..40eb55b 100755
--- a/tests/chroot.gen.test
+++ b/tests/chroot.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/clock_adjtime.gen.test b/tests/clock_adjtime.gen.test
index 735e3af..22d5dbc 100755
--- a/tests/clock_adjtime.gen.test
+++ b/tests/clock_adjtime.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests/copy_file_range.gen.test b/tests/copy_file_range.gen.test
index 4f3063b..e90c6c1 100755
--- a/tests/copy_file_range.gen.test
+++ b/tests/copy_file_range.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/creat.gen.test b/tests/creat.gen.test
index d2e47d3..baff916 100755
--- a/tests/creat.gen.test
+++ b/tests/creat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/delete_module.gen.test b/tests/delete_module.gen.test
index 4e4c671..028515f 100755
--- a/tests/delete_module.gen.test
+++ b/tests/delete_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
+run_strace_match_diff -a23 
diff --git a/tests/dup.gen.test b/tests/dup.gen.test
index e5729c0..e559cdb 100755
--- a/tests/dup.gen.test
+++ b/tests/dup.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests/dup2.gen.test b/tests/dup2.gen.test
index fd1f5c9..6a6d2f5 100755
--- a/tests/dup2.gen.test
+++ b/tests/dup2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests/dup3.gen.test b/tests/dup3.gen.test
index d6ff7d7..776b9a7 100755
--- a/tests/dup3.gen.test
+++ b/tests/dup3.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/epoll_create.gen.test b/tests/epoll_create.gen.test
index 841da6d..277a5aa 100755
--- a/tests/epoll_create.gen.test
+++ b/tests/epoll_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/epoll_create1.gen.test b/tests/epoll_create1.gen.test
index c5e62a0..c510c32 100755
--- a/tests/epoll_create1.gen.test
+++ b/tests/epoll_create1.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/epoll_ctl.gen.test b/tests/epoll_ctl.gen.test
index 68c96eb..dba65f7 100755
--- a/tests/epoll_ctl.gen.test
+++ b/tests/epoll_ctl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/epoll_pwait.gen.test b/tests/epoll_pwait.gen.test
index c558efc..f98e2b5 100755
--- a/tests/epoll_pwait.gen.test
+++ b/tests/epoll_pwait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/epoll_wait.gen.test b/tests/epoll_wait.gen.test
index 024cc0f..d90fbeb 100755
--- a/tests/epoll_wait.gen.test
+++ b/tests/epoll_wait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
+run_strace_match_diff -a26 
diff --git a/tests/error_msg.c b/tests/error_msg.c
index 498a882..9cb3e80 100644
--- a/tests/error_msg.c
+++ b/tests/error_msg.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,6 +26,9 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#define perror_msg_and_fail perror_msg_and_fail
+#define error_msg_and_fail error_msg_and_fail
+
 #include "tests.h"
 #include <errno.h>
 #include <stdarg.h>
diff --git a/tests/execveat.gen.test b/tests/execveat.gen.test
index c92e4d6..180b829 100755
--- a/tests/execveat.gen.test
+++ b/tests/execveat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/fadvise64_64.gen.test b/tests/fadvise64_64.gen.test
index 5f95b3c..e46bf81 100755
--- a/tests/fadvise64_64.gen.test
+++ b/tests/fadvise64_64.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test ); do not edit.
+set -- 
 . "${srcdir=.}/fadvise64.test"
diff --git a/tests/fallocate.gen.test b/tests/fallocate.gen.test
index c6cfdb7..3bb5bbf 100755
--- a/tests/fallocate.gen.test
+++ b/tests/fallocate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests/fanotify_init.gen.test b/tests/fanotify_init.gen.test
index ee519e6..69807a7 100755
--- a/tests/fanotify_init.gen.test
+++ b/tests/fanotify_init.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/fanotify_mark.gen.test b/tests/fanotify_mark.gen.test
index ce16a55..4651260 100755
--- a/tests/fanotify_mark.gen.test
+++ b/tests/fanotify_mark.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 
diff --git a/tests/fchdir.gen.test b/tests/fchdir.gen.test
index c80e141..a352a21 100755
--- a/tests/fchdir.gen.test
+++ b/tests/fchdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests/fchmod.gen.test b/tests/fchmod.gen.test
index f327fb7..828c9b5 100755
--- a/tests/fchmod.gen.test
+++ b/tests/fchmod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests/fchmodat.gen.test b/tests/fchmodat.gen.test
index 9ee1f01..3646185 100755
--- a/tests/fchmodat.gen.test
+++ b/tests/fchmodat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/fchown.gen.test b/tests/fchown.gen.test
index 63ee545..ec7f7c5 100755
--- a/tests/fchown.gen.test
+++ b/tests/fchown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests/fchown32.gen.test b/tests/fchown32.gen.test
index d8167dd..1670583 100755
--- a/tests/fchown32.gen.test
+++ b/tests/fchown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests/fchownat.gen.test b/tests/fchownat.gen.test
index 2ec9e32..54bd043 100755
--- a/tests/fchownat.gen.test
+++ b/tests/fchownat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/fcntl.gen.test b/tests/fcntl.gen.test
index 83a1af4..9de26c0 100755
--- a/tests/fcntl.gen.test
+++ b/tests/fcntl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests/fcntl64.gen.test b/tests/fcntl64.gen.test
index 9d3b98a..fee01b6 100755
--- a/tests/fcntl64.gen.test
+++ b/tests/fcntl64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests/fdatasync.gen.test b/tests/fdatasync.gen.test
index 0dbea8a..9aa5f2a 100755
--- a/tests/fdatasync.gen.test
+++ b/tests/fdatasync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests/file_ioctl.gen.test b/tests/file_ioctl.gen.test
index f7e58f5..0abab81 100755
--- a/tests/file_ioctl.gen.test
+++ b/tests/file_ioctl.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/m4/st_bpf.m4 b/tests/filtering_fd-syntax.test
old mode 100644
new mode 100755
similarity index 62%
copy from m4/st_bpf.m4
copy to tests/filtering_fd-syntax.test
index ae44d28..4f4e9c7
--- a/m4/st_bpf.m4
+++ b/tests/filtering_fd-syntax.test
@@ -1,6 +1,9 @@
-#!/usr/bin/m4
+#!/bin/sh
 #
-# Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Check descriptor set parsing syntax.
+#
+# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -25,26 +28,33 @@
 # (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_CHECK_UNION_BPF_ATTR],[
+. "${srcdir=.}/syntax.sh"
 
-pushdef([ATTR_NAME], translit([$1], [a-z], [A-Z]))
-pushdef([attr_text], [union bpf_attr.][$1])
-pushdef([have_attr], [st_cv_member_union_bpf_attr_][$1])
+check_fd_qualify()
+{
+	check_e "invalid descriptor '$1'" -e"read=$2"
+	check_e "invalid descriptor '$1'" -e "read=$2"
+	check_e "invalid descriptor '$1'" -e"write=$2"
+	check_e "invalid descriptor '$1'" -e "write=$2"
+}
 
-AC_CACHE_CHECK([whether attr_text initialization works],
-	       [have_attr],
-	       [AC_COMPILE_IFELSE(
-		[AC_LANG_PROGRAM([[#include <linux/bpf.h>]],
-				 [union bpf_attr a = { .$1 = 0 };])],
-		[have_attr=yes],
-		[have_attr=no])])
+for arg in '' , ,, ,,, ; do
+	check_fd_qualify "$arg" "$arg"
+	check_fd_qualify "!$arg" "!$arg"
+done
 
-if test $have_attr = yes; then
-	AC_DEFINE([HAVE_UNION_BPF_ATTR_]ATTR_NAME, [1],
-		  [Define to 1 if attr_text initialization works])
-fi
+for arg in -1 -42 \
+	   not_fd \
+	   2147483648 \
+	   4294967296 \
+	   ; do
+	check_fd_qualify "$arg" "$arg"
+	check_fd_qualify "$arg" "1,$arg"
+	check_fd_qualify "$arg" "$arg,1"
+	check_fd_qualify "$arg" "!$arg"
+done
 
-popdef([have_attr])
-popdef([attr_text])
-popdef([ATTR_NAME])
-])
+for arg in ! all none; do
+	check_fd_qualify "$arg" "1,$arg"
+	check_fd_qualify "!$arg" "1,!$arg"
+done
diff --git a/tests/filtering_syscall-syntax.test b/tests/filtering_syscall-syntax.test
new file mode 100755
index 0000000..8fda8dc
--- /dev/null
+++ b/tests/filtering_syscall-syntax.test
@@ -0,0 +1,121 @@
+#!/bin/sh
+#
+# Check syscall set parsing syntax.
+#
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@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.
+
+. "${srcdir=.}/syntax.sh"
+
+check_syscall()
+{
+	[ -z "$2" ] || check_e "invalid system call '$1'" -e"$2"
+
+	check_e "invalid system call '$1'" -e "$2"
+	check_e "invalid system call '$1'" -etrace="$2"
+	check_e "invalid system call '$1'" -e trace="$2"
+
+	check_e "invalid system call '$1'" -eabbrev="$2"
+	check_e "invalid system call '$1'" -e abbrev="$2"
+
+	check_e "invalid system call '$1'" -everbose="$2"
+	check_e "invalid system call '$1'" -e verbose="$2"
+
+	check_e "invalid system call '$1'" -eraw="$2"
+	check_e "invalid system call '$1'" -e raw="$2"
+
+	check_e "invalid system call '$1'" -einject="$2"
+	check_e "invalid system call '$1'" -e inject="$2"
+	check_e "invalid system call '$1'" -einject="$2:"
+	check_e "invalid system call '$1'" -einject="$2::"
+	check_e "invalid system call '$1'" -einject="$2:::"
+	check_e "invalid system call '$1'" -e inject="$2:"
+	check_e "invalid system call '$1'" -e inject="$2::"
+	check_e "invalid system call '$1'" -e inject="$2:::"
+	check_e "invalid system call '$1'" -einject="$2:when=3"
+	check_e "invalid system call '$1'" -e inject="$2:when=3"
+
+	check_e "invalid system call '$1'" -efault="$2"
+	check_e "invalid system call '$1'" -e fault="$2"
+	check_e "invalid system call '$1'" -efault="$2:"
+	check_e "invalid system call '$1'" -efault="$2::"
+	check_e "invalid system call '$1'" -efault="$2:::"
+	check_e "invalid system call '$1'" -e fault="$2:"
+	check_e "invalid system call '$1'" -e fault="$2::"
+	check_e "invalid system call '$1'" -e fault="$2:::"
+	check_e "invalid system call '$1'" -efault="$2:when=4"
+	check_e "invalid system call '$1'" -e fault="$2:when=4"
+}
+
+for arg in '' , ,, ,,, ; do
+	check_syscall "$arg" "$arg"
+	check_syscall "!$arg" "!$arg"
+done
+
+for arg in -1 -2 -3 -4 -5 \
+	   invalid_syscall_name \
+	   0x 0y \
+	   32767 \
+	   2147483647 \
+	   2147483648 \
+	   4294967295 \
+	   4294967296 \
+	   /non_syscall \
+	   % %not_a_class \
+	   ; do
+	check_syscall "$arg" "$arg"
+	check_syscall "$arg" "!$arg"
+	check_syscall "$arg" "1,$arg"
+done
+
+for arg in '!chdir' none all; do
+	check_syscall "$arg" "1,$arg"
+done
+
+# invalid syscall, multiple syscalls
+for arg in %desc \
+	   %file \
+	   %memory \
+	   %process \
+	   %network \
+	   chdir \
+	   1 \
+	   ?32767 \
+	   ?invalid \
+	   ?%not_a_class \
+	   ?/non_syscall \
+	   ; do
+	check_syscall nonsense "$arg,nonsense"
+	check_syscall nonsense "!$arg,nonsense"
+	check_syscall nonsense "nonsense,$arg"
+	check_syscall nonsense "!nonsense,$arg"
+done
+
+check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
+check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
+check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
+check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
+check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
diff --git a/tests/finit_module.gen.test b/tests/finit_module.gen.test
index f2e56af..5ffafd3 100755
--- a/tests/finit_module.gen.test
+++ b/tests/finit_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests/flock.gen.test b/tests/flock.gen.test
index dff2bac..67a9d8c 100755
--- a/tests/flock.gen.test
+++ b/tests/flock.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests/fstatfs.gen.test b/tests/fstatfs.gen.test
index 3dd04d8..27deaf3 100755
--- a/tests/fstatfs.gen.test
+++ b/tests/fstatfs.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests/fstatfs64.gen.test b/tests/fstatfs64.gen.test
index b9527be..d693726 100755
--- a/tests/fstatfs64.gen.test
+++ b/tests/fstatfs64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/fsync.gen.test b/tests/fsync.gen.test
index 921e804..5e72cc2 100755
--- a/tests/fsync.gen.test
+++ b/tests/fsync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/ftruncate.gen.test b/tests/ftruncate.gen.test
index 709a851..6e5926b 100755
--- a/tests/ftruncate.gen.test
+++ b/tests/ftruncate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/ftruncate64.gen.test b/tests/ftruncate64.gen.test
index 4cb1fe7..d910f61 100755
--- a/tests/ftruncate64.gen.test
+++ b/tests/ftruncate64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests/futex.c b/tests/futex.c
index e1dbcb7..0c095b8 100644
--- a/tests/futex.c
+++ b/tests/futex.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,10 +57,11 @@
 # include "xlat/futexwakecmps.h"
 
 void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
-	int *uaddr2, unsigned long val3, int rc)
+	int *uaddr2, unsigned long val3, int rc, const char *func, int line)
 {
-	perror_msg_and_fail("futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
-		uaddr, op, (unsigned) val, timeout, uaddr, (unsigned) val3, rc);
+	perror_msg_and_fail("%s:%d: futex(%p, %#x, %#x, %#lx, %p, %#x) = %d",
+		func, line, uaddr, op, (unsigned) val, timeout, uaddr,
+		(unsigned) val3, rc);
 }
 
 # define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
@@ -77,7 +78,7 @@
 		if (!(check)) \
 			futex_error((uaddr), (op), (val), \
 				(unsigned long) (timeout), (int *) (uaddr2), \
-				(val3), rc); \
+				(val3), rc, __func__, __LINE__); \
 	} while (0)
 
 # define CHECK_FUTEX_ENOSYS(uaddr, op, val, timeout, uaddr2, val3, check) \
@@ -151,14 +152,20 @@
 	} while (0)
 
 /* Value which differs from one stored in int *val */
-# define VAL     ((unsigned long) 0xbadda7a0facefeedLLU)
-# define VAL_PR  ((unsigned) VAL)
+# define VAL      ((unsigned long) 0xbadda7a0facefeedLLU)
+# define VAL_PR   ((unsigned) VAL)
 
-# define VAL2    ((unsigned long) 0xbadda7a0ca7b100dLLU)
-# define VAL2_PR ((unsigned) VAL2)
+# define VALP     ((unsigned long) 0xbadda7a01acefeedLLU)
+# define VALP_PR  ((unsigned) VALP)
 
-# define VAL3    ((unsigned long) 0xbadda7a09caffee1LLU)
-# define VAL3_PR ((unsigned) VAL3)
+# define VAL2     ((unsigned long) 0xbadda7a0ca7b100dLLU)
+# define VAL2_PR  ((unsigned) VAL2)
+
+# define VAL2P    ((unsigned long) 0xbadda7a07a7b100dLLU)
+# define VAL2P_PR ((unsigned) VAL2P)
+
+# define VAL3     ((unsigned long) 0xbadda7a09caffee1LLU)
+# define VAL3_PR  ((unsigned) VAL3)
 
 int
 main(int argc, char *argv[])
@@ -418,16 +425,26 @@
 
 	/* Trying to re-queue some processes but there's nothing to re-queue */
 	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VAL, VAL2, uaddr2, VAL3,
-		(rc == 0));
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_REQUEUE, VALP, VAL2P, uaddr2, VAL3,
+		(rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE, %u, %u, %p) = %s\n",
+		uaddr, VALP_PR, VAL2P_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));
+		uaddr2, VAL3, (rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, sprintrc(rc));
 
+	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_REQUEUE, VALP,
+		VAL2P, uaddr2, VAL3, (rc == 0));
+	printf("futex(%p, FUTEX_REQUEUE_PRIVATE, %u, %u, %p) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, sprintrc(rc));
+
 	CHECK_INVALID_CLOCKRT(FUTEX_REQUEUE, ARG3 | ARG4 | ARG5, "%u", "%u",
 		"%#lx");
 
@@ -444,22 +461,38 @@
 
 	/* Comparison re-queue with wrong val value */
 	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, VAL3,
-		(rc == -1) && (errno == EAGAIN));
+		(rc == -1) && (errno == EAGAIN || errno == EINVAL));
 	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, VAL3_PR, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VALP, VAL2P, uaddr2, VAL3,
+		(rc == -1) && (errno == EAGAIN));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, VAL3_PR, sprintrc(rc));
+
 	/* Successful comparison re-queue */
 	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VAL, VAL2, uaddr2, *uaddr,
-		(rc == 0));
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
 		uaddr, VAL_PR, VAL2_PR, uaddr2, *uaddr, sprintrc(rc));
 
+	CHECK_FUTEX(uaddr, FUTEX_CMP_REQUEUE, VALP, VAL2P, uaddr2, *uaddr,
+		(rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_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));
+		VAL2, uaddr2, *uaddr,
+		(rc == 0) || ((rc == -1) && (errno == EINVAL)));
 	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %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, VALP,
+		VAL2P, uaddr2, *uaddr, (rc == 0));
+	printf("futex(%p, FUTEX_CMP_REQUEUE_PRIVATE, %u, %u, %p, %u) = %s\n",
+		uaddr, VALP_PR, VAL2P_PR, uaddr2, *uaddr, sprintrc(rc));
+
 	CHECK_INVALID_CLOCKRT(FUTEX_CMP_REQUEUE, ARG3 | ARG4 | ARG5 | ARG6,
 		"%u", "%u", "%#lx", "%u");
 
diff --git a/tests/futimesat.gen.test b/tests/futimesat.gen.test
index c3add8c..80d7a8b 100755
--- a/tests/futimesat.gen.test
+++ b/tests/futimesat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/gen_tests.am b/tests/gen_tests.am
index 71e0013..29d8c64 100644
--- a/tests/gen_tests.am
+++ b/tests/gen_tests.am
@@ -1,9 +1,12 @@
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_kvm_run.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nsfs.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
 
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/_newselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -295,21 +298,36 @@
 $(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_dm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_kvm_run.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_loop-nv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -325,6 +343,9 @@
 $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -448,6 +469,9 @@
 $(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/modify_ldt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -643,12 +667,30 @@
 $(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/old_mmap-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap-v-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
 $(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/oldselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/oldselect-efault-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -688,6 +730,9 @@
 $(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/ppoll-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -799,6 +844,9 @@
 $(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/riscv_flush_icache.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -823,6 +871,24 @@
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_guarded_storage-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_pci_mmio_read_write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_runtime_instr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/s390_sthyi-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -859,6 +925,9 @@
 $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
@@ -982,6 +1051,9 @@
 $(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/sockopt-sol_netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
diff --git a/tests/gen_tests.in b/tests/gen_tests.in
index 091bbe5..ea33892 100644
--- a/tests/gen_tests.in
+++ b/tests/gen_tests.in
@@ -1,6 +1,6 @@
 # Input for gen_tests.sh
 #
-# Copyright (c) 2017 The strace developers.
+# Copyright (c) 2017-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -26,6 +26,7 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 _newselect
+_newselect-P	 -e trace=_newselect -P /dev/full 9>>/dev/full
 accept	-a22
 accept4	-a37
 access	-a30 -P access_sample
@@ -123,16 +124,22 @@
 inotify_init1	-a27
 int_0x80	-a11 -e trace=getgid32
 ioctl_block	+ioctl.test
+ioctl_dm	+ioctl.test -s9
+ioctl_dm-v	+ioctl.test -v -s9
 ioctl_evdev	+ioctl.test
-ioctl_evdev-v	+ioctl-v.sh
+ioctl_evdev-v	+ioctl.test -v
+ioctl_kvm_run	+ioctl.test -a36 -y
 ioctl_loop	+ioctl.test
-ioctl_loop-v	+ioctl-v.sh
+ioctl_loop-nv	+ioctl.test -a22 -e verbose=none
+ioctl_loop-v	+ioctl.test -v
 ioctl_mtd	+ioctl.test
+ioctl_nsfs	+ioctl.test -esignal=none
 ioctl_rtc	+ioctl.test
-ioctl_rtc-v	+ioctl-v.sh
+ioctl_rtc-v	+ioctl.test -v
 ioctl_scsi	+ioctl.test
 ioctl_sg_io_v3	+ioctl.test
 ioctl_sg_io_v4	+ioctl.test
+ioctl_sock_gifconf	+ioctl.test -a28 -s1
 ioctl_uffdio	+ioctl.test
 ioctl_v4l2	+ioctl.test
 ioperm	-a27
@@ -174,6 +181,7 @@
 mmsg-silent	-a25 -e verbose=none -e trace=sendmmsg,recvmmsg
 mmsg_name	-a25 -e trace=sendmmsg,recvmmsg
 mmsg_name-v	-v -a25 -e trace=sendmmsg,recvmmsg
+modify_ldt	-a23
 mount
 move_pages	-s3
 mq	-a32 -e trace=mq_getsetattr,mq_open,mq_unlink
@@ -239,11 +247,17 @@
 nlattr_tcmsg			+netlink_sock_diag.test
 nlattr_unix_diag_msg		+netlink_sock_diag.test
 old_mmap	-a11 -e trace=mmap
+old_mmap-P	-e trace=mmap -P "/dev/full" 9>>/dev/full
+old_mmap-v-none	-a11 -e trace=mmap -e verbose=none
 oldfstat	-a18 -v -P stat.sample
 oldlstat	-a32 -v -P stat.sample -P /dev/full
+oldselect	-a13 -e trace=select
+oldselect-P	-a13 -e trace=select -P /dev/full 9>>/dev/full
+oldselect-efault	-a13 -e trace=select
+oldselect-efault-P	-a13 -e trace=select -P /dev/full 9>>/dev/full
 oldstat	-a32 -v -P stat.sample -P /dev/full
 open	-a30 -P $NAME.sample
-openat	-P $NAME.sample
+openat	-a36 -P $NAME.sample
 osf_utimes	-a21
 pause	-a8 -esignal=none
 perf_event_open	-a1
@@ -254,6 +268,7 @@
 pkey_free	-a13
 pkey_mprotect	-a37
 ppoll	-s2
+ppoll-P	-s2 -e trace=ppoll -P /dev/full 9>>/dev/full
 ppoll-v	-v -s2 -e trace=ppoll
 pread64-pwrite64	-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
 preadv	-a21
@@ -281,7 +296,7 @@
 readdir	-a16
 readlink	-xx
 readlinkat	-xx
-reboot
+reboot		-s 256
 recvfrom	-a35
 recvmmsg-timeout	-a25 -e trace=recvmmsg
 recvmsg	-eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
@@ -291,6 +306,7 @@
 renameat
 renameat2
 request_key	-a33 -s12
+riscv_flush_icache	-a34
 rmdir	-a22
 rt_sigpending	-a20
 rt_sigprocmask
@@ -299,6 +315,12 @@
 rt_sigsuspend	-a20 -esignal=none
 rt_sigtimedwait	-a38
 rt_tgsigqueueinfo	-esignal=none
+s390_guarded_storage	-a32
+s390_guarded_storage-v	-e trace=s390_guarded_storage -a32 -v
+s390_pci_mmio_read_write	-e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
+s390_runtime_instr	-a50
+s390_sthyi	-a47
+s390_sthyi-v	-e trace=s390_sthyi -a47 -v
 sched	test_trace_expr times -e/sched
 sched_get_priority_mxx	-a33 -e trace=sched_get_priority_min,sched_get_priority_max
 sched_rr_get_interval	-a31
@@ -311,6 +333,7 @@
 seccomp-filter-v	-v -e trace=seccomp
 seccomp_get_action_avail	-e trace=seccomp
 select	-a36
+select-P	-a36 -e trace=select -P /dev/full 9>>/dev/full
 semop	-a32 -e trace=semop,semtimedop
 sendfile	-a27
 sendfile64	-a29
@@ -352,6 +375,7 @@
 so_peercred	-e trace=getsockopt
 sock_filter-v	-v -e trace=getsockopt,setsockopt
 socketcall	-a20
+sockopt-sol_netlink	-e trace=getsockopt,setsockopt
 splice
 stat	-a32 -v -P stat.sample -P /dev/full
 stat64	-a32 -v -P stat.sample -P /dev/full
diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh
index b062436..b41983e 100755
--- a/tests/gen_tests.sh
+++ b/tests/gen_tests.sh
@@ -1,6 +1,7 @@
 #!/bin/sh -efu
 #
 # Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 
 names=
 
-while read -r name args; do {
+while read -r name arg0 args; do {
 	[ -n "${name###*}" ] || continue
 	if [ -z "$match" ]; then
 		names="$names $name"
@@ -65,13 +66,14 @@
 
 	hdr="\
 #!/bin/sh -efu
-# Generated by $0 from $input ($name $args); do not edit."
+# Generated by $0 from $input ($name $arg0 $args); do not edit."
 
-	case "$args" in
+	case "$arg0" in
 		+*)
 		cat <<-EOF
 		$hdr
-		. "\${srcdir=.}/${args#+}"
+		set -- $args
+		. "\${srcdir=.}/${arg0#+}"
 		EOF
 		;;
 
@@ -79,7 +81,7 @@
 		cat <<-EOF
 		$hdr
 		. "\${srcdir=.}/init.sh"
-		run_strace_match_diff $args
+		run_strace_match_diff $arg0 $args
 		EOF
 		;;
 
@@ -87,7 +89,7 @@
 		cat <<-EOF
 		$hdr
 		. "\${srcdir=.}/init.sh"
-		$args
+		$arg0 $args
 		EOF
 		;;
 	esac > "$output"
diff --git a/tests/get_regs.test b/tests/get_regs.test
index c673fe9..eb69137 100755
--- a/tests/get_regs.test
+++ b/tests/get_regs.test
@@ -36,7 +36,7 @@
 run_strace -qq -esignal=none -eraw=all -etrace=none ../gettid > /dev/null
 
 run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > less' \
-	-- ${STRACE##* } -o "$LOG" $args > /dev/null
+	-- "$STRACE_EXE" -o "$LOG" $args > /dev/null
 
 [ "$(cat less)" -gt 0 ] ||
 	fail_ "$STRACE $args failed to catch any ptrace syscalls"
@@ -44,7 +44,7 @@
 run_strace -qq -esignal=none -eraw=all -etrace=all ../gettid > /dev/null
 
 run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > more' \
-	-- ${STRACE##* } -o "$LOG" $args > /dev/null
+	-- "$STRACE_EXE" -o "$LOG" $args > /dev/null
 
 [ "$(cat more)" -gt 0 ] ||
 	fail_ "$STRACE $args failed to catch any ptrace syscalls"
diff --git a/tests/getcpu.gen.test b/tests/getcpu.gen.test
index 44d9a4b..ae38aaa 100755
--- a/tests/getcpu.gen.test
+++ b/tests/getcpu.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests/getcwd.c b/tests/getcwd.c
index 0c32f8d..2020df4 100644
--- a/tests/getcwd.c
+++ b/tests/getcwd.c
@@ -4,9 +4,9 @@
 
 #ifdef __NR_getcwd
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 
 int
 main(void)
diff --git a/tests/getcwd.gen.test b/tests/getcwd.gen.test
index af2ff08..f783a5b 100755
--- a/tests/getcwd.gen.test
+++ b/tests/getcwd.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests/getegid.gen.test b/tests/getegid.gen.test
index d6fecc2..ddf8fa9 100755
--- a/tests/getegid.gen.test
+++ b/tests/getegid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/getegid32.gen.test b/tests/getegid32.gen.test
index 38c4a4b..a773f56 100755
--- a/tests/getegid32.gen.test
+++ b/tests/getegid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid.gen.test b/tests/geteuid.gen.test
index 9e8c12f..c7da2aa 100755
--- a/tests/geteuid.gen.test
+++ b/tests/geteuid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid32.gen.test b/tests/geteuid32.gen.test
index 5b78331..75c3f12 100755
--- a/tests/geteuid32.gen.test
+++ b/tests/geteuid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/getgid.gen.test b/tests/getgid.gen.test
index 5a87aee..fc6ac3b 100755
--- a/tests/getgid.gen.test
+++ b/tests/getgid.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/getgid32.gen.test b/tests/getgid32.gen.test
index 05e2d70..b3a8756 100755
--- a/tests/getgid32.gen.test
+++ b/tests/getgid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/getgroups.gen.test b/tests/getgroups.gen.test
index 48b09be..ae196d0 100755
--- a/tests/getgroups.gen.test
+++ b/tests/getgroups.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/getgroups32.gen.test b/tests/getgroups32.gen.test
index 74637d0..54b71d5 100755
--- a/tests/getgroups32.gen.test
+++ b/tests/getgroups32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests/getpeername.gen.test b/tests/getpeername.gen.test
index 66fb0a9..020583a 100755
--- a/tests/getpeername.gen.test
+++ b/tests/getpeername.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/getpgrp.gen.test b/tests/getpgrp.gen.test
index 1ec48e9..26989cd 100755
--- a/tests/getpgrp.gen.test
+++ b/tests/getpgrp.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/getpid.gen.test b/tests/getpid.gen.test
index 4691774..2a3eb1c 100755
--- a/tests/getpid.gen.test
+++ b/tests/getpid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a9
+run_strace_match_diff -a9 
diff --git a/tests/getppid.gen.test b/tests/getppid.gen.test
index 52116a0..655b0b7 100755
--- a/tests/getppid.gen.test
+++ b/tests/getppid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/getresgid.gen.test b/tests/getresgid.gen.test
index f53bccc..dc32c62 100755
--- a/tests/getresgid.gen.test
+++ b/tests/getresgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests/getresgid32.gen.test b/tests/getresgid32.gen.test
index 5f00506..0ee2829 100755
--- a/tests/getresgid32.gen.test
+++ b/tests/getresgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/getresuid.gen.test b/tests/getresuid.gen.test
index e947a94..b0f478c 100755
--- a/tests/getresuid.gen.test
+++ b/tests/getresuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
+run_strace_match_diff -a25 
diff --git a/tests/getresuid32.gen.test b/tests/getresuid32.gen.test
index b088a22..1b2f232 100755
--- a/tests/getresuid32.gen.test
+++ b/tests/getresuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/getrlimit.gen.test b/tests/getrlimit.gen.test
index b97c176..08daf2d 100755
--- a/tests/getrlimit.gen.test
+++ b/tests/getrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/getrusage.gen.test b/tests/getrusage.gen.test
index c4fb182..161818a 100755
--- a/tests/getrusage.gen.test
+++ b/tests/getrusage.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -v
+run_strace_match_diff -v 
diff --git a/tests/getsid.gen.test b/tests/getsid.gen.test
index 123f177..2b9084a 100755
--- a/tests/getsid.gen.test
+++ b/tests/getsid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/getsockname.gen.test b/tests/getsockname.gen.test
index cd40d3e..64cdeea 100755
--- a/tests/getsockname.gen.test
+++ b/tests/getsockname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/gettid.gen.test b/tests/gettid.gen.test
index 1ceaa53..f5ad317 100755
--- a/tests/gettid.gen.test
+++ b/tests/gettid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a9
+run_strace_match_diff -a9 
diff --git a/tests/getuid32.gen.test b/tests/getuid32.gen.test
index ac0d0ad..e81eb06 100755
--- a/tests/getuid32.gen.test
+++ b/tests/getuid32.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test ); do not edit.
+set -- 
 . "${srcdir=.}/getuid.test"
diff --git a/tests/group_req.c b/tests/group_req.c
index 946fe5c..eb56cb7 100644
--- a/tests/group_req.c
+++ b/tests/group_req.c
@@ -2,6 +2,7 @@
  * Check decoding of MCAST_JOIN_GROUP/MCAST_LEAVE_GROUP.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,9 +34,9 @@
 
 #if defined MCAST_JOIN_GROUP && defined MCAST_LEAVE_GROUP
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
 
diff --git a/tests/init_module.gen.test b/tests/init_module.gen.test
index 8948e2e..b6961be 100755
--- a/tests/init_module.gen.test
+++ b/tests/init_module.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/inode_of_sockfd.c b/tests/inode_of_sockfd.c
index b227f30..6a523c7 100644
--- a/tests/inode_of_sockfd.c
+++ b/tests/inode_of_sockfd.c
@@ -2,6 +2,7 @@
  * This file is part of strace test suite.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,11 +30,11 @@
 
 #include "tests.h"
 #include <assert.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 unsigned long
 inode_of_sockfd(const int fd)
diff --git a/tests/inotify_init1.gen.test b/tests/inotify_init1.gen.test
index d847b50..a1060c5 100755
--- a/tests/inotify_init1.gen.test
+++ b/tests/inotify_init1.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/ioctl-v.sh b/tests/ioctl-v.sh
deleted file mode 100755
index be89671..0000000
--- a/tests/ioctl-v.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -v -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl.c b/tests/ioctl.c
index 3c666b0..af5f9ba 100644
--- a/tests/ioctl.c
+++ b/tests/ioctl.c
@@ -86,8 +86,13 @@
 	       " = -1 EBADF (%m)\n", &data);
 
 	(void) ioctl(-1, _IOR('M', 13, int), &data);
+# ifdef HAVE_STRUCT_MTD_WRITE_REQ
 	printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, [MTD_OTP_OFF])"
 	       " = -1 EBADF (%m)\n");
+# else
+	printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, %p)"
+	       " = -1 EBADF (%m)\n", &data);
+# endif
 
 	(void) ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), (kernel_ulong_t) -1ULL);
 	printf("ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), %#lx)"
diff --git a/tests/ioctl.test b/tests/ioctl.test
index 1eb469e..cbbadc8 100755
--- a/tests/ioctl.test
+++ b/tests/ioctl.test
@@ -6,6 +6,6 @@
 
 check_prog grep
 run_prog > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
+run_strace -a16 -eioctl "$@" $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl_block.gen.test b/tests/ioctl_block.gen.test
index 0ffec6f..8b2c3df 100755
--- a/tests/ioctl_block.gen.test
+++ b/tests/ioctl_block.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_dm-v.gen.test b/tests/ioctl_dm-v.gen.test
new file mode 100755
index 0000000..66fa585
--- /dev/null
+++ b/tests/ioctl_dm-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_dm-v +ioctl.test -v -s9); do not edit.
+set -- -v -s9
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_dm-v.test b/tests/ioctl_dm-v.test
deleted file mode 100755
index eed37c2..0000000
--- a/tests/ioctl_dm-v.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check unabbreviated decoding of DM* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -s9 -veioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c
index 1e831df..bbdc00c 100644
--- a/tests/ioctl_dm.c
+++ b/tests/ioctl_dm.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Mikulas Patocka <mpatocka@redhat.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -143,7 +143,7 @@
 	ptr->length       = dts_length_base + dts_length_step * id;
 	ptr->status       = dts_status_base + dts_status_step * id;
 
-	strncpy(ptr->target_type, str129 +
+	memcpy(ptr->target_type, str129 +
 		id % (sizeof(str129) - sizeof(ptr->target_type)),
 		id % (sizeof(ptr->target_type) + 1));
 	if (id % (sizeof(ptr->target_type) + 1) < sizeof(ptr->target_type))
@@ -252,8 +252,8 @@
 
 	/* Unterminated name/uuid */
 	init_s(dm_arg, min_sizeof_dm_ioctl, 0);
-	strncpy(dm_arg->name, str129, sizeof(dm_arg->name));
-	strncpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
+	memcpy(dm_arg->name, str129, sizeof(dm_arg->name));
+	memcpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
 	ioctl(-1, DM_VERSION, dm_arg);
 	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=%zu, "
 	       "dev=makedev(18, 52), name=\"%.127s\"..., uuid=\"%.128s\"..., "
@@ -511,7 +511,7 @@
 					 target##id_next) - \
 				offsetof(struct dm_table_open_test, \
 					 target##id); \
-			strncpy(dm_arg_open3->param##id, str129 + id * 2, id); \
+			memcpy(dm_arg_open3->param##id, str129 + id * 2, id); \
 			dm_arg_open3->param##id[id] = '\0'; \
 		} while (0)
 	#define PRINT_DM_TARGET(id) \
diff --git a/tests/ioctl_dm.gen.test b/tests/ioctl_dm.gen.test
new file mode 100755
index 0000000..b60c717
--- /dev/null
+++ b/tests/ioctl_dm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_dm +ioctl.test -s9); do not edit.
+set -- -s9
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_dm.test b/tests/ioctl_dm.test
deleted file mode 100755
index e9cca03..0000000
--- a/tests/ioctl_dm.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of DM* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -s9 -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl_evdev-v.gen.test b/tests/ioctl_evdev-v.gen.test
index fc7e2f0..bf74ef4 100755
--- a/tests/ioctl_evdev-v.gen.test
+++ b/tests/ioctl_evdev-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev.gen.test b/tests/ioctl_evdev.gen.test
index 26f0a28..68a43f7 100755
--- a/tests/ioctl_evdev.gen.test
+++ b/tests/ioctl_evdev.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_kvm_run.c b/tests/ioctl_kvm_run.c
new file mode 100644
index 0000000..1794614
--- /dev/null
+++ b/tests/ioctl_kvm_run.c
@@ -0,0 +1,242 @@
+/*
+ * Check decoding of KVM_* commands of ioctl syscall using /dev/kvm API.
+ * Based on kvmtest.c from https://lwn.net/Articles/658512/
+ *
+ * kvmtest.c author: Josh Triplett <josh@joshtriplett.org>
+ * Copyright (c) 2015 Intel Corporation
+ * Copyright (c) 2017-2018 The strace developers.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "tests.h"
+
+#if defined HAVE_LINUX_KVM_H				\
+ && defined HAVE_STRUCT_KVM_REGS			\
+ && defined HAVE_STRUCT_KVM_SREGS			\
+ && defined HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION	\
+ &&(defined __x86_64__ || defined __i386__)
+
+# include <fcntl.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <sys/mman.h>
+# include <linux/kvm.h>
+
+static int
+kvm_ioctl(int fd, unsigned long cmd, const char *cmd_str, void *arg)
+{
+	int rc = ioctl(fd, cmd, arg);
+	if (rc < 0)
+		perror_msg_and_skip("%s", cmd_str);
+	return rc;
+}
+
+#define KVM_IOCTL(fd_, cmd_, arg_)	\
+	kvm_ioctl((fd_), (cmd_), #cmd_, (arg_))
+
+static const char dev[] = "/dev/kvm";
+static const char vm_dev[] = "anon_inode:kvm-vm";
+static const char vcpu_dev[] = "anon_inode:kvm-vcpu";
+static size_t page_size;
+
+extern const char code[];
+extern const unsigned short code_size;
+
+__asm__(
+	".type code, @object		\n"
+	"code:				\n"
+	"	mov $0xd80003f8, %edx	\n"
+	"	mov $'\n', %al		\n"
+	"	out %al, (%dx)		\n"
+	"	hlt			\n"
+	".size code, . - code		\n"
+	".type code_size, @object	\n"
+	"code_size:			\n"
+	"	.short . - code		\n"
+	".size code_size, . - code_size	\n"
+	);
+
+
+static void
+run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
+	void *const mem)
+{
+	/* Initialize CS to point at 0, via a read-modify-write of sregs. */
+	struct kvm_sregs sregs;
+	KVM_IOCTL(vcpu_fd, KVM_GET_SREGS, &sregs);
+	printf("ioctl(%d<%s>, KVM_GET_SREGS, {cs={base=%#jx, limit=%u, selector=%u"
+	       ", type=%u, present=%u, dpl=%u, db=%u, s=%u, l=%u, g=%u, avl=%u}"
+	       ", ...}) = 0\n", vcpu_fd, vcpu_dev, (uintmax_t) sregs.cs.base,
+	       sregs.cs.limit, sregs.cs.selector, sregs.cs.type,
+	       sregs.cs.present, sregs.cs.dpl, sregs.cs.db, sregs.cs.s,
+	       sregs.cs.l, sregs.cs.g, sregs.cs.avl);
+
+	sregs.cs.base = 0;
+	sregs.cs.selector = 0;
+	KVM_IOCTL(vcpu_fd, KVM_SET_SREGS, &sregs);
+	printf("ioctl(%d<%s>, KVM_SET_SREGS, {cs={base=%#jx, limit=%u"
+	       ", selector=%u, type=%u, present=%u, dpl=%u, db=%u, s=%u"
+	       ", l=%u, g=%u, avl=%u}, ...}) = 0\n",
+	       vcpu_fd, vcpu_dev, (uintmax_t) sregs.cs.base,
+	       sregs.cs.limit, sregs.cs.selector, sregs.cs.type,
+	       sregs.cs.present, sregs.cs.dpl, sregs.cs.db, sregs.cs.s,
+	       sregs.cs.l, sregs.cs.g, sregs.cs.avl);
+
+	/*
+	 * Initialize registers: instruction pointer for our code, addends,
+	 * and initial flags required by x86 architecture.
+	 */
+	struct kvm_regs regs = {
+		.rip = page_size,
+		.rax = 2,
+		.rbx = 2,
+		.rflags = 0x2,
+	};
+	KVM_IOCTL(vcpu_fd, KVM_SET_REGS, &regs);
+	printf("ioctl(%d<%s>, KVM_SET_REGS, {rax=%#jx, ..."
+	       ", rsp=%#jx, rbp=%#jx, ..., rip=%#jx, rflags=%#jx}) = 0\n",
+	       vcpu_fd, vcpu_dev, (uintmax_t) regs.rax,
+	       (uintmax_t) regs.rsp, (uintmax_t) regs.rbp,
+	       (uintmax_t) regs.rip, (uintmax_t) regs.rflags);
+
+	/* Copy the code */
+	memcpy(mem, code, code_size);
+
+	const char *p = "\n";
+
+	/* Repeatedly run code and handle VM exits. */
+	for (;;) {
+		KVM_IOCTL(vcpu_fd, KVM_RUN, NULL);
+		printf("ioctl(%d<%s>, KVM_RUN, 0) = 0\n", vcpu_fd, vcpu_dev);
+
+		switch (run->exit_reason) {
+		case KVM_EXIT_HLT:
+			if (p)
+				error_msg_and_fail("premature KVM_EXIT_HLT");
+			return;
+		case KVM_EXIT_IO:
+			if (run->io.direction == KVM_EXIT_IO_OUT
+			    && run->io.size == 1
+			    && run->io.port == 0x03f8
+			    && run->io.count == 1
+			    && run->io.data_offset < mmap_size
+			    && p && *p == ((char *) run)[run->io.data_offset])
+				p = NULL;
+			else
+				error_msg_and_fail("unhandled KVM_EXIT_IO");
+			break;
+		case KVM_EXIT_MMIO:
+			error_msg_and_fail("Got an unexpected MMIO exit:"
+					   " phys_addr %#llx,"
+					   " data %02x %02x %02x %02x"
+						" %02x %02x %02x %02x,"
+					   " len %u, is_write %hhu",
+					   (unsigned long long) run->mmio.phys_addr,
+					   run->mmio.data[0], run->mmio.data[1],
+					   run->mmio.data[2], run->mmio.data[3],
+					   run->mmio.data[4], run->mmio.data[5],
+					   run->mmio.data[6], run->mmio.data[7],
+					   run->mmio.len, run->mmio.is_write);
+
+		default:
+			error_msg_and_fail("exit_reason = %#x",
+					   run->exit_reason);
+		}
+	}
+}
+
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	int kvm = open(dev, O_RDWR);
+	if (kvm < 0)
+		perror_msg_and_skip("open: %s", dev);
+
+	/* Make sure we have the stable version of the API */
+	int ret = KVM_IOCTL(kvm, KVM_GET_API_VERSION, 0);
+	if (ret != KVM_API_VERSION)
+		error_msg_and_skip("KVM_GET_API_VERSION returned %d"
+				   ", KVM_API_VERSION is %d",
+				   kvm, KVM_API_VERSION);
+	printf("ioctl(%d<%s>, KVM_GET_API_VERSION, 0) = %d\n",
+	       kvm, dev, ret);
+
+	int vm_fd = KVM_IOCTL(kvm, KVM_CREATE_VM, 0);
+	printf("ioctl(%d<%s>, KVM_CREATE_VM, 0) = %d<%s>\n",
+	       kvm, dev, vm_fd, vm_dev);
+
+	/* Allocate one aligned page of guest memory to hold the code. */
+	page_size = get_page_size();
+	void *const mem = mmap(NULL, page_size, PROT_READ | PROT_WRITE,
+				  MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+	if (mem == MAP_FAILED)
+		perror_msg_and_fail("mmap page");
+
+	/* Map it to the second page frame (to avoid the real-mode IDT at 0). */
+	struct kvm_userspace_memory_region region = {
+		.slot = 0,
+		.guest_phys_addr = page_size,
+		.memory_size = page_size,
+		.userspace_addr = (uintptr_t) mem,
+	};
+	KVM_IOCTL(vm_fd, KVM_SET_USER_MEMORY_REGION, &region);
+	printf("ioctl(%d<%s>, KVM_SET_USER_MEMORY_REGION"
+	       ", {slot=0, flags=0, guest_phys_addr=%#lx, memory_size=%lu"
+	       ", userspace_addr=%p}) = 0\n", vm_fd, vm_dev,
+	       (unsigned long) page_size, (unsigned long) page_size, mem);
+
+	int vcpu_fd = KVM_IOCTL(vm_fd, KVM_CREATE_VCPU, NULL);
+	printf("ioctl(%d<%s>, KVM_CREATE_VCPU, 0) = %d<%s>\n",
+	       vm_fd, vm_dev, vcpu_fd, vcpu_dev);
+
+	/* Map the shared kvm_run structure and following data. */
+	ret = KVM_IOCTL(kvm, KVM_GET_VCPU_MMAP_SIZE, NULL);
+	struct kvm_run *run;
+	if (ret < (int) sizeof(*run))
+		error_msg_and_fail("KVM_GET_VCPU_MMAP_SIZE returned %d < %d",
+				   ret, (int) sizeof(*run));
+	printf("ioctl(%d<%s>, KVM_GET_VCPU_MMAP_SIZE, 0) = %d\n",
+	       kvm, dev, ret);
+
+	const size_t mmap_size = (ret + page_size - 1) & -page_size;
+	run = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE,
+		   MAP_SHARED, vcpu_fd, 0);
+	if (run == MAP_FAILED)
+		perror_msg_and_fail("mmap vcpu");
+
+	run_kvm(vcpu_fd, run, mmap_size, mem);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else /* !HAVE_LINUX_KVM_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_KVM_H && HAVE_STRUCT_KVM_REGS && "
+		    "HAVE_STRUCT_KVM_SREGS && "
+		    "HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION && "
+		    "(__x86_64__ || __i386__)")
+
+#endif
diff --git a/tests/ioctl_kvm_run.gen.test b/tests/ioctl_kvm_run.gen.test
new file mode 100755
index 0000000..7ab473b
--- /dev/null
+++ b/tests/ioctl_kvm_run.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_kvm_run +ioctl.test -a36 -y); do not edit.
+set -- -a36 -y
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_loop-nv.gen.test b/tests/ioctl_loop-nv.gen.test
new file mode 100755
index 0000000..d9da86a
--- /dev/null
+++ b/tests/ioctl_loop-nv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-nv +ioctl.test -a22 -e verbose=none); do not edit.
+set -- -a22 -e verbose=none
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_loop-nv.test b/tests/ioctl_loop-nv.test
deleted file mode 100755
index 7d59cc2..0000000
--- a/tests/ioctl_loop-nv.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check non-verbose decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl_loop-v.gen.test b/tests/ioctl_loop-v.gen.test
index 7fd9f66..b03bf78 100755
--- a/tests/ioctl_loop-v.gen.test
+++ b/tests/ioctl_loop-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_loop.gen.test b/tests/ioctl_loop.gen.test
index f7aee8e..d4ec35a 100755
--- a/tests/ioctl_loop.gen.test
+++ b/tests/ioctl_loop.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_mtd.c b/tests/ioctl_mtd.c
index 6a7d94a..1b5be75 100644
--- a/tests/ioctl_mtd.c
+++ b/tests/ioctl_mtd.c
@@ -30,22 +30,20 @@
 
 #include "tests.h"
 
-#include <errno.h>
-#include <inttypes.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <linux/ioctl.h>
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
-# include "mtd-abi.h"
-#else
+#ifdef HAVE_STRUCT_MTD_WRITE_REQ
+
+# include <errno.h>
+# include <inttypes.h>
+# include <stdio.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <linux/ioctl.h>
+# include <linux/version.h>
 # include <mtd/mtd-abi.h>
-#endif
 
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
-#define TEST_NULL_ARG(cmd) \
+# define TEST_NULL_ARG(cmd) \
 	do { \
 		ioctl(-1, cmd, 0); \
 		if (_IOC_DIR(cmd) == _IOC_WRITE) \
@@ -60,7 +58,7 @@
 			printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \
 	} while (0)
 
-#define TEST_erase_info_user(cmd, eiu)						\
+# define TEST_erase_info_user(cmd, eiu)						\
 	do {									\
 		ioctl(-1, cmd, eiu);						\
 		printf("ioctl(-1, MIXER_%s(%u) or %s, {start=%#x, length=%#x})"	\
@@ -122,9 +120,9 @@
 	ioctl(-1, MEMGETREGIONINFO, riu);
 	printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
 	       "MEMGETREGIONINFO"
-#ifdef __i386__
+# ifdef __i386__
 	       " or MTRRIOC_GET_PAGE_ENTRY"
-#endif
+# endif
 	       , riu->regionindex);
 
 	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
@@ -198,3 +196,9 @@
 	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_MTD_WRITE_REQ")
+
+#endif
diff --git a/tests/ioctl_mtd.gen.test b/tests/ioctl_mtd.gen.test
index cbc3104..65b0003 100755
--- a/tests/ioctl_mtd.gen.test
+++ b/tests/ioctl_mtd.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_nsfs.gen.test b/tests/ioctl_nsfs.gen.test
new file mode 100755
index 0000000..f9adc5f
--- /dev/null
+++ b/tests/ioctl_nsfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_nsfs +ioctl.test -esignal=none); do not edit.
+set -- -esignal=none
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_nsfs.test b/tests/ioctl_nsfs.test
deleted file mode 100755
index acdfb61..0000000
--- a/tests/ioctl_nsfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of NS_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a16 -eioctl -esignal=none $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl_rtc-v.gen.test b/tests/ioctl_rtc-v.gen.test
index b534a02..820181b 100755
--- a/tests/ioctl_rtc-v.gen.test
+++ b/tests/ioctl_rtc-v.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl-v.sh); do not edit.
-. "${srcdir=.}/ioctl-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_rtc.gen.test b/tests/ioctl_rtc.gen.test
index e430a82..310b558 100755
--- a/tests/ioctl_rtc.gen.test
+++ b/tests/ioctl_rtc.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_scsi.gen.test b/tests/ioctl_scsi.gen.test
index 23ac307..499bfc4 100755
--- a/tests/ioctl_scsi.gen.test
+++ b/tests/ioctl_scsi.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v3.gen.test b/tests/ioctl_sg_io_v3.gen.test
index e7e5ea5..ef8fd14 100755
--- a/tests/ioctl_sg_io_v3.gen.test
+++ b/tests/ioctl_sg_io_v3.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v4.gen.test b/tests/ioctl_sg_io_v4.gen.test
index 575ad96..4aa4e4e 100755
--- a/tests/ioctl_sg_io_v4.gen.test
+++ b/tests/ioctl_sg_io_v4.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sock_gifconf.gen.test b/tests/ioctl_sock_gifconf.gen.test
new file mode 100755
index 0000000..5d6fe2f
--- /dev/null
+++ b/tests/ioctl_sock_gifconf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sock_gifconf +ioctl.test -a28 -s1); do not edit.
+set -- -a28 -s1
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sock_gifconf.test b/tests/ioctl_sock_gifconf.test
deleted file mode 100755
index 22d7ea4..0000000
--- a/tests/ioctl_sock_gifconf.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of SIOCGIFCONF ioctl.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -a28 -s1 -eioctl $args > "$EXP"
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl_uffdio.gen.test b/tests/ioctl_uffdio.gen.test
index 80fd2a6..ed73c5f 100755
--- a/tests/ioctl_uffdio.gen.test
+++ b/tests/ioctl_uffdio.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2.gen.test b/tests/ioctl_v4l2.gen.test
index cbd36ba..4c57144 100755
--- a/tests/ioctl_v4l2.gen.test
+++ b/tests/ioctl_v4l2.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test ); do not edit.
+set -- 
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioperm.gen.test b/tests/ioperm.gen.test
index 154d60a..bc69f69 100755
--- a/tests/ioperm.gen.test
+++ b/tests/ioperm.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/iopl.gen.test b/tests/iopl.gen.test
index 3d9704c..f7769d2 100755
--- a/tests/iopl.gen.test
+++ b/tests/iopl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
+run_strace_match_diff -a8 
diff --git a/tests/ip_mreq.c b/tests/ip_mreq.c
index 3f4648c..12cc261 100644
--- a/tests/ip_mreq.c
+++ b/tests/ip_mreq.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2017 The strace developers.
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,9 +32,9 @@
 #if defined IP_ADD_MEMBERSHIP && defined IPV6_ADD_MEMBERSHIP \
  && defined IPV6_JOIN_ANYCAST
 
+# include <limits.h>
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/param.h>
 # include <sys/socket.h>
 # include <arpa/inet.h>
 # include <net/if.h>
diff --git a/tests/ipc.gen.test b/tests/ipc.gen.test
index 5ed1f0d..0aa7578 100755
--- a/tests/ipc.gen.test
+++ b/tests/ipc.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests/ipc_msg.gen.test b/tests/ipc_msg.gen.test
index f4fec80..b1f1f7e 100755
--- a/tests/ipc_msg.gen.test
+++ b/tests/ipc_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_msgbuf.c b/tests/ipc_msgbuf.c
index d108389..c4af1be 100644
--- a/tests/ipc_msgbuf.c
+++ b/tests/ipc_msgbuf.c
@@ -38,11 +38,16 @@
 
 static int msqid = -1;
 
-static void
+static int
 cleanup(void)
 {
-	msgctl(msqid, IPC_RMID, 0);
-	msqid = -1;
+	if (msqid != -1) {
+		int rc = msgctl(msqid, IPC_RMID, 0);
+		msqid = -1;
+		if (rc == -1)
+			return 77;
+	}
+	return 0;
 }
 
 int
@@ -59,10 +64,11 @@
 	msqid = msgget(IPC_PRIVATE, IPC_CREAT | S_IRWXU);
 	if (msqid == -1)
 		perror_msg_and_skip("msgget");
-	atexit(cleanup);
+	typedef void (*atexit_func)(void);
+	atexit((atexit_func) cleanup);
 	if (msgsnd(msqid, &msg, msgsz, 0) == -1)
 		perror_msg_and_skip("msgsnd");
 	if (msgrcv(msqid, &msg, msgsz, mtype, 0) != msgsz)
 		perror_msg_and_skip("msgrcv");
-	return 0;
+	return cleanup();
 }
diff --git a/tests/ipc_sem.gen.test b/tests/ipc_sem.gen.test
index 54159a6..a1c03d2 100755
--- a/tests/ipc_sem.gen.test
+++ b/tests/ipc_sem.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_shm.c b/tests/ipc_shm.c
index 66960ff..c793138 100644
--- a/tests/ipc_shm.c
+++ b/tests/ipc_shm.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +33,14 @@
 #include <stdlib.h>
 #include <sys/shm.h>
 
+#ifndef SHM_HUGE_SHIFT
+# define SHM_HUGE_SHIFT 26
+#endif
+
+#ifndef SHM_HUGE_MASK
+# define SHM_HUGE_MASK 0x3f
+#endif
+
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
@@ -64,18 +73,54 @@
 	#else
 		(size_t) 0x1e55c0de5dec0dedULL;
 	#endif
-	static const int bogus_flags = 0xface1e55;
-
+	static const unsigned int bogus_ipc_shm_flags =
+		IPC_CREAT | IPC_EXCL | SHM_HUGETLB | SHM_NORESERVE;
+	static const unsigned int huge_mask = SHM_HUGE_MASK << SHM_HUGE_SHIFT;
+	static const unsigned int huge_flags = 21 << SHM_HUGE_SHIFT;
+	int bogus_flags;
 	int rc;
 	struct shmid_ds ds;
 
-	rc = shmget(bogus_key, bogus_size, bogus_flags);
-	printf("shmget\\(%#llx, %zu, %s%s%s%#x\\|%#04o\\) += %s\n",
+	rc = shmget(bogus_key, bogus_size, 0);
+	printf("shmget\\(%#llx, %zu, 000\\) += %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),
+	       sprintrc_grep(rc));
+
+	rc = shmget(bogus_key, bogus_size, huge_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "21<<SHM_HUGE_SHIFT", 0, sprintrc_grep(rc));
+
+	bogus_flags = 0xface1e55 & ~(bogus_ipc_shm_flags | huge_mask);
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %#x\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       bogus_flags & ~0777,
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags |= bogus_ipc_shm_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
+	       bogus_flags & ~(0777 | bogus_ipc_shm_flags),
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags |= huge_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %s\\|%#x\\|%s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       "IPC_CREAT\\|IPC_EXCL\\|SHM_HUGETLB\\|SHM_NORESERVE",
+	       bogus_flags & ~(0777 | bogus_ipc_shm_flags | huge_mask),
+	       "21<<SHM_HUGE_SHIFT",
+	       bogus_flags & 0777, sprintrc_grep(rc));
+
+	bogus_flags &= ~bogus_ipc_shm_flags;
+	rc = shmget(bogus_key, bogus_size, bogus_flags);
+	printf("shmget\\(%#llx, %zu, %#x\\|%s\\|%#03o\\) += %s\n",
+	       zero_extend_signed_to_ull(bogus_key), bogus_size,
+	       bogus_flags & ~(0777 | huge_mask),
+	       "21<<SHM_HUGE_SHIFT",
 	       bogus_flags & 0777, sprintrc_grep(rc));
 
 	id = shmget(private_key, 1, 0600);
diff --git a/tests/ipc_shm.gen.test b/tests/ipc_shm.gen.test
index 505eaba..8c6df9b 100755
--- a/tests/ipc_shm.gen.test
+++ b/tests/ipc_shm.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh ); do not edit.
+set -- 
 . "${srcdir=.}/ipc.sh"
diff --git a/tests/kcmp.gen.test b/tests/kcmp.gen.test
index c073a39..139e909 100755
--- a/tests/kcmp.gen.test
+++ b/tests/kcmp.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests/kexec_file_load.gen.test b/tests/kexec_file_load.gen.test
index aefaab3..1101349 100755
--- a/tests/kexec_file_load.gen.test
+++ b/tests/kexec_file_load.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
+run_strace_match_diff -s9 
diff --git a/tests/kexec_load.gen.test b/tests/kexec_load.gen.test
index 0af9527..6ce1831 100755
--- a/tests/kexec_load.gen.test
+++ b/tests/kexec_load.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
+run_strace_match_diff -s9 
diff --git a/tests/lchown.gen.test b/tests/lchown.gen.test
index b31e29d..d346c76 100755
--- a/tests/lchown.gen.test
+++ b/tests/lchown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
+run_strace_match_diff -a30 
diff --git a/tests/lchown32.gen.test b/tests/lchown32.gen.test
index 83be4bc..5da2349 100755
--- a/tests/lchown32.gen.test
+++ b/tests/lchown32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
+run_strace_match_diff -a32 
diff --git a/tests/link.gen.test b/tests/link.gen.test
index b6db34d..2ec3f5b 100755
--- a/tests/link.gen.test
+++ b/tests/link.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/linkat.gen.test b/tests/linkat.gen.test
index 54b12b9..8bdf78b 100755
--- a/tests/linkat.gen.test
+++ b/tests/linkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/llseek.test b/tests/llseek.test
index 8dcd65d..9db68e3 100755
--- a/tests/llseek.test
+++ b/tests/llseek.test
@@ -7,5 +7,5 @@
 check_prog grep
 run_prog > /dev/null
 run_strace -e_llseek $args > "$EXP"
-grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
+grep -v '^_llseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
diff --git a/tests/lookup_dcookie.gen.test b/tests/lookup_dcookie.gen.test
index 6357e19..616c705 100755
--- a/tests/lookup_dcookie.gen.test
+++ b/tests/lookup_dcookie.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/madvise.gen.test b/tests/madvise.gen.test
index bd36dad..a549cf9 100755
--- a/tests/madvise.gen.test
+++ b/tests/madvise.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests/mbind.gen.test b/tests/mbind.gen.test
index a0d144d..c47e0fc 100755
--- a/tests/mbind.gen.test
+++ b/tests/mbind.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/membarrier.c b/tests/membarrier.c
index 73dd3b0..43f99f8 100644
--- a/tests/membarrier.c
+++ b/tests/membarrier.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,28 +45,49 @@
 	printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
 	       sprintrc(-1));
 	if (saved_errno != ENOSYS) {
+		const char *text_global;
 		const char *text;
 		int rc = syscall(__NR_membarrier, 0, 0);
 
-		switch (rc) {
-		case 1:
-			text = "MEMBARRIER_CMD_SHARED";
+		assert(rc >= 0);
+
+		text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
+
+		switch (rc & ~1) {
+		case 0:
+			text = "";
 			break;
-		case 1|8:
-			text = "MEMBARRIER_CMD_SHARED|"
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+		case 8:
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
 			break;
-		case 1|8|16:
-			text = "MEMBARRIER_CMD_SHARED|"
+		case 8|16:
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
+			break;
+
+		case 2|4|8|16:
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
 			break;
+
+		case 2|4|8|16|32|64:
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
+			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
+			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE|"
+			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE";
+			break;
+
 		default:
 			error_msg_and_fail("membarrier returned %#x, does"
 					   " the test have to be updated?", rc);
 		}
-		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
-		       rc, text);
+		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
+		       rc, text_global, text[0] && text_global[0] ? "|" : "",
+		       text);
 	}
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/membarrier.gen.test b/tests/membarrier.gen.test
index 7a6ea10..6ae6e91 100755
--- a/tests/membarrier.gen.test
+++ b/tests/membarrier.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests/memfd_create.c b/tests/memfd_create.c
index 4559b42..8334af8 100644
--- a/tests/memfd_create.c
+++ b/tests/memfd_create.c
@@ -1,3 +1,32 @@
+/*
+ * Check decoding of memfd_create syscall.
+ *
+ * Copyright (c) 2015-2017 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>
 #include "scno.h"
@@ -5,17 +34,62 @@
 #ifdef __NR_memfd_create
 
 # include <stdio.h>
+# include <stdint.h>
 # include <unistd.h>
 
+# ifdef HAVE_LINUX_MEMFD_H
+#  include <linux/memfd.h>
+# endif
+
+# ifndef MFD_HUGE_SHIFT
+#  define MFD_HUGE_SHIFT 26
+# endif
+
+# ifndef MFD_HUGE_MASK
+#  define MFD_HUGE_MASK 0x3f
+# endif
+
+static const char *errstr;
+
+static long
+k_memfd_create(const kernel_ulong_t name, const kernel_ulong_t flags)
+{
+	const long rc = syscall(__NR_memfd_create, name, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
 int
 main(void)
 {
-	static const char text[] = "strace";
-	int rc = syscall(__NR_memfd_create, text, 0xf);
+	const size_t size = 255 - (sizeof("memfd:") - 1) + 1;
+	char *pattern = tail_alloc(size);
+	fill_memory_ex(pattern, size, '0', 10);
 
-	printf("memfd_create(\"%s\", %s) = %s\n",
-	       text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8",
-	       sprintrc(rc));
+	k_memfd_create((uintptr_t) pattern, 0);
+	printf("memfd_create(\"%.*s\"..., 0) = %s\n",
+	       (int) size - 1, pattern, errstr);
+
+	kernel_ulong_t flags = (kernel_ulong_t) 0xfacefeed00000007ULL;
+	k_memfd_create((uintptr_t) pattern, flags);
+	printf("memfd_create(\"%.*s\"..., %s) = %s\n",
+	       (int) size - 1, pattern,
+	       "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB",
+	       errstr);
+
+	pattern[size - 1] = '\0';
+	flags = 30 << MFD_HUGE_SHIFT;
+	k_memfd_create((uintptr_t) pattern, flags);
+	printf("memfd_create(\"%s\", 30<<MFD_HUGE_SHIFT) = %s\n",
+	       pattern, errstr);
+
+	pattern += size - 1;
+	flags = (kernel_ulong_t) -1ULL;
+	k_memfd_create(0, flags);
+	flags = -1U & ~(7 | (MFD_HUGE_MASK << MFD_HUGE_SHIFT));
+	printf("memfd_create(NULL, MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB"
+	       "|%#x|%u<<MFD_HUGE_SHIFT) = %s\n",
+	       (unsigned int) flags, MFD_HUGE_MASK, errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/memfd_create.gen.test b/tests/memfd_create.gen.test
index 11762be..ccb5b52 100755
--- a/tests/memfd_create.gen.test
+++ b/tests/memfd_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/migrate_pages.gen.test b/tests/migrate_pages.gen.test
index 20b7cad..0ea017d 100755
--- a/tests/migrate_pages.gen.test
+++ b/tests/migrate_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests/mincore.gen.test b/tests/mincore.gen.test
index dc40726..45e43e2 100755
--- a/tests/mincore.gen.test
+++ b/tests/mincore.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests/mkdir.gen.test b/tests/mkdir.gen.test
index 80b4995..8d34c8b 100755
--- a/tests/mkdir.gen.test
+++ b/tests/mkdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/mkdirat.gen.test b/tests/mkdirat.gen.test
index 0f3fdae..eef8e52 100755
--- a/tests/mkdirat.gen.test
+++ b/tests/mkdirat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/mknod.gen.test b/tests/mknod.gen.test
index 870c88b..ce08e99 100755
--- a/tests/mknod.gen.test
+++ b/tests/mknod.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
+run_strace_match_diff -a18 
diff --git a/tests/mknodat.gen.test b/tests/mknodat.gen.test
index 747fcbe..dce7d44 100755
--- a/tests/mknodat.gen.test
+++ b/tests/mknodat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests/mlock2.gen.test b/tests/mlock2.gen.test
index aa1818e..ff94eb8 100755
--- a/tests/mlock2.gen.test
+++ b/tests/mlock2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/mlockall.gen.test b/tests/mlockall.gen.test
index 06d8ca4..59ef67f 100755
--- a/tests/mlockall.gen.test
+++ b/tests/mlockall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests/mmap64.gen.test b/tests/mmap64.gen.test
index 5e747b0..0ecd529 100755
--- a/tests/mmap64.gen.test
+++ b/tests/mmap64.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test ); do not edit.
+set -- 
 . "${srcdir=.}/mmap.test"
diff --git a/tests/modify_ldt.c b/tests/modify_ldt.c
new file mode 100644
index 0000000..1e26bda
--- /dev/null
+++ b/tests/modify_ldt.c
@@ -0,0 +1,137 @@
+/*
+ * Check decoding of modify_ldt syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_modify_ldt && defined HAVE_STRUCT_USER_DESC
+
+# include <errno.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "print_user_desc.c"
+
+void
+printrc(long rc)
+{
+#ifdef __x86_64__
+	int err = -rc;
+
+	/* Thanks, long return type of syscall(2) */
+	printf("%lld", zero_extend_signed_to_ull(rc));
+
+	if (err > 0 && err < 0x1000) {
+		errno = err;
+		printf(" %s (%m)", errno2name());
+	}
+#else
+	printf("%s", sprintrc(rc));
+#endif
+
+	puts("");
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_func =
+		(kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+	static const kernel_ulong_t bogus_bytecount =
+		(kernel_ulong_t) 0xdeadfacefa57beefULL;
+
+	struct user_desc *us = tail_alloc(sizeof(*us));
+	unsigned int *bogus_int = tail_alloc(sizeof(*bogus_int));
+	long rc;
+
+	fill_memory(us, sizeof(*us));
+
+	rc = syscall(__NR_modify_ldt, 0, 0, 0);
+	printf("modify_ldt(0, NULL, 0) = ");
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, (kernel_long_t) -1,
+		     bogus_bytecount);
+	printf("modify_ldt(%d, %#llx, %llu) = ",
+	       (int) bogus_func,
+	       zero_extend_signed_to_ull((kernel_long_t) -1),
+	       (unsigned long long) bogus_bytecount);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us + 1, 0);
+	printf("modify_ldt(%d, %p, 0) = ", (int) bogus_func, us + 1);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, 42);
+	printf("modify_ldt(%d, %p, 42) = ", (int) bogus_func, us);
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us + 1, sizeof(*us));
+	printf("modify_ldt(%d, %p, %zu) = ",
+	       (int) bogus_func, us + 1, sizeof(*us));
+	printrc(rc);
+
+	/*
+	 * print_user_desc handles entry_number field in a special way for
+	 * get_thread_area syscall, so let's also check here that we don't
+	 * retrieve it accidentally.
+	 */
+	rc = syscall(__NR_modify_ldt, bogus_func, bogus_int, sizeof(*us));
+	printf("modify_ldt(%d, %p, %zu) = ",
+	       (int) bogus_func, bogus_int, sizeof(*us));
+	printrc(rc);
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, sizeof(*us));
+	printf("modify_ldt(%d, ", (int) bogus_func);
+	print_user_desc(us, NULL);
+	printf(", %zu) = ", sizeof(*us));
+	printrc(rc);
+
+	fill_memory_ex(us, sizeof(*us), 0x55, 80);
+	us->entry_number = -1;
+	us->base_addr = 0;
+	us->limit = 0;
+
+	rc = syscall(__NR_modify_ldt, bogus_func, us, sizeof(*us));
+	printf("modify_ldt(%d, ", (int) bogus_func);
+	print_user_desc(us, "-1");
+	printf(", %zu) = ", sizeof(*us));
+	printrc(rc);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_modify_ldt && HAVE_STRUCT_USER_DESC");
+
+#endif
diff --git a/tests/modify_ldt.gen.test b/tests/modify_ldt.gen.test
new file mode 100755
index 0000000..1a85b06
--- /dev/null
+++ b/tests/modify_ldt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (modify_ldt -a23 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 
diff --git a/tests/mount.gen.test b/tests/mount.gen.test
index 0b124bc..69bc99b 100755
--- a/tests/mount.gen.test
+++ b/tests/mount.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/move_pages.gen.test b/tests/move_pages.gen.test
index 2f060fa..9d472ef 100755
--- a/tests/move_pages.gen.test
+++ b/tests/move_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
+run_strace_match_diff -s3 
diff --git a/tests/munlockall.gen.test b/tests/munlockall.gen.test
index 18343cb..2e4e0c4 100755
--- a/tests/munlockall.gen.test
+++ b/tests/munlockall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests/nanosleep.gen.test b/tests/nanosleep.gen.test
index ea5b19a..41928de 100755
--- a/tests/nanosleep.gen.test
+++ b/tests/nanosleep.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/net-accept-connect.c b/tests/net-accept-connect.c
index 4045e05..0756c9b 100644
--- a/tests/net-accept-connect.c
+++ b/tests/net-accept-connect.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,15 +49,16 @@
 	struct sockaddr_un addr = {
 		.sun_family = AF_UNIX,
 	};
-	socklen_t len;
 
 	assert(ac == 2);
-	assert(strlen(av[1]) > 0);
+	socklen_t len = strlen(av[1]);
+	assert(len > 0 && len <= sizeof(addr.sun_path));
 
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
-	len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
-	if (len > sizeof(addr))
-		len = sizeof(addr);
+	if (++len > sizeof(addr.sun_path))
+		len = sizeof(addr.sun_path);
+
+	memcpy(addr.sun_path, av[1], len);
+	len += offsetof(struct sockaddr_un, sun_path);
 
 	unlink(av[1]);
 	close(0);
diff --git a/tests/net-y-unix.c b/tests/net-y-unix.c
index fbdf590..847c735 100644
--- a/tests/net-y-unix.c
+++ b/tests/net-y-unix.c
@@ -2,6 +2,7 @@
  * This file is part of net-y-unix strace test.
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#include "accept_compat.h"
+
 #define TEST_SOCKET "net-y-unix.socket"
 
 int
@@ -106,7 +108,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	int accept_fd = accept(listen_fd, accept_sa, len);
+	int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
@@ -177,7 +179,7 @@
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	accept_fd = accept(listen_fd, accept_sa, len);
+	accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	accept_inode = inode_of_sockfd(accept_fd);
diff --git a/tests/net-yy-inet.c b/tests/net-yy-inet.c
index c043920..c69bb17 100644
--- a/tests/net-yy-inet.c
+++ b/tests/net-yy-inet.c
@@ -2,7 +2,7 @@
  * This file is part of net-yy-inet strace test.
  *
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,6 +39,8 @@
 #include <netinet/tcp.h>
 #include <arpa/inet.h>
 
+#include "accept_compat.h"
+
 int
 main(void)
 {
@@ -105,7 +107,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	const int accept_fd = accept(listen_fd, accept_sa, len);
+	const int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	const unsigned int connect_port =
diff --git a/tests/net-yy-unix.c b/tests/net-yy-unix.c
index 21822db..40ac3a6 100644
--- a/tests/net-yy-unix.c
+++ b/tests/net-yy-unix.c
@@ -2,6 +2,7 @@
  * This file is part of net-yy-unix strace test.
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
+#include "accept_compat.h"
+
 #define TEST_SOCKET "net-yy-unix.socket"
 
 int
@@ -107,7 +109,7 @@
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	int accept_fd = accept(listen_fd, accept_sa, len);
+	int accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
@@ -180,7 +182,7 @@
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
-	accept_fd = accept(listen_fd, accept_sa, len);
+	accept_fd = do_accept(listen_fd, accept_sa, len);
 	if (accept_fd < 0)
 		perror_msg_and_fail("accept");
 	accept_inode = inode_of_sockfd(accept_fd);
diff --git a/tests/net.expected b/tests/net.expected
index 80dd070..e33e296 100644
--- a/tests/net.expected
+++ b/tests/net.expected
@@ -3,5 +3,5 @@
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +bind\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +listen\(0, 5\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +getsockname\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, \[19\]\) += 0
-[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[19->2\]\) += 1
+[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept4?\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[19->2\](, 0)?\) += 1
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +connect\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
diff --git a/tests/netlink_audit.gen.test b/tests/netlink_audit.gen.test
index 6511067..5c17038 100755
--- a/tests/netlink_audit.gen.test
+++ b/tests/netlink_audit.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_audit +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_audit +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_crypto.gen.test b/tests/netlink_crypto.gen.test
index b138099..fcb4c3d 100755
--- a/tests/netlink_crypto.gen.test
+++ b/tests/netlink_crypto.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_crypto +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_crypto +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_generic.gen.test b/tests/netlink_generic.gen.test
index e51f15c..6f304d3 100755
--- a/tests/netlink_generic.gen.test
+++ b/tests/netlink_generic.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_generic +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_generic +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_kobject_uevent.gen.test b/tests/netlink_kobject_uevent.gen.test
index 310a70b..46bdebd 100755
--- a/tests/netlink_kobject_uevent.gen.test
+++ b/tests/netlink_kobject_uevent.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_kobject_uevent +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_kobject_uevent +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_netfilter.gen.test b/tests/netlink_netfilter.gen.test
index fffb72b..94b3f36 100755
--- a/tests/netlink_netfilter.gen.test
+++ b/tests/netlink_netfilter.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_netfilter +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_netfilter +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_route.gen.test b/tests/netlink_route.gen.test
index 298dbf1..bd9c0d9 100755
--- a/tests/netlink_route.gen.test
+++ b/tests/netlink_route.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_route +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_route +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_selinux.gen.test b/tests/netlink_selinux.gen.test
index a8871d6..484ffae 100755
--- a/tests/netlink_selinux.gen.test
+++ b/tests/netlink_selinux.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_selinux +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_selinux +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/netlink_xfrm.gen.test b/tests/netlink_xfrm.gen.test
index 17f7444..3691898 100755
--- a/tests/netlink_xfrm.gen.test
+++ b/tests/netlink_xfrm.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_xfrm +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_xfrm +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_acct.gen.test b/tests/nfnetlink_acct.gen.test
index 7db2276..e3aa889 100755
--- a/tests/nfnetlink_acct.gen.test
+++ b/tests/nfnetlink_acct.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_cthelper.gen.test b/tests/nfnetlink_cthelper.gen.test
index 661c949..fa26e14 100755
--- a/tests/nfnetlink_cthelper.gen.test
+++ b/tests/nfnetlink_cthelper.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ctnetlink.gen.test b/tests/nfnetlink_ctnetlink.gen.test
index d4c4daa..9e9ad15 100755
--- a/tests/nfnetlink_ctnetlink.gen.test
+++ b/tests/nfnetlink_ctnetlink.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ctnetlink_exp.gen.test b/tests/nfnetlink_ctnetlink_exp.gen.test
index a5d83f9..4ed3707 100755
--- a/tests/nfnetlink_ctnetlink_exp.gen.test
+++ b/tests/nfnetlink_ctnetlink_exp.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_cttimeout.gen.test b/tests/nfnetlink_cttimeout.gen.test
index e197f00..ab42fc7 100755
--- a/tests/nfnetlink_cttimeout.gen.test
+++ b/tests/nfnetlink_cttimeout.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ipset.gen.test b/tests/nfnetlink_ipset.gen.test
index 418437a..ea129fb 100755
--- a/tests/nfnetlink_ipset.gen.test
+++ b/tests/nfnetlink_ipset.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_nft_compat.gen.test b/tests/nfnetlink_nft_compat.gen.test
index c3dc890..aff04c5 100755
--- a/tests/nfnetlink_nft_compat.gen.test
+++ b/tests/nfnetlink_nft_compat.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_nftables.gen.test b/tests/nfnetlink_nftables.gen.test
index 25e90e8..c23ad33 100755
--- a/tests/nfnetlink_nftables.gen.test
+++ b/tests/nfnetlink_nftables.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_osf.gen.test b/tests/nfnetlink_osf.gen.test
index 2689574..aa54090 100755
--- a/tests/nfnetlink_osf.gen.test
+++ b/tests/nfnetlink_osf.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_queue.gen.test b/tests/nfnetlink_queue.gen.test
index 739fb17..965e0d2 100755
--- a/tests/nfnetlink_queue.gen.test
+++ b/tests/nfnetlink_queue.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ulog.gen.test b/tests/nfnetlink_ulog.gen.test
index 850ebaf..825ad9f 100755
--- a/tests/nfnetlink_ulog.gen.test
+++ b/tests/nfnetlink_ulog.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr.gen.test b/tests/nlattr.gen.test
index 105801b..0ea2f18 100755
--- a/tests/nlattr.gen.test
+++ b/tests/nlattr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_br_port_msg.gen.test b/tests/nlattr_br_port_msg.gen.test
index f843797..c957275 100755
--- a/tests/nlattr_br_port_msg.gen.test
+++ b/tests/nlattr_br_port_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_br_port_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_br_port_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_crypto_user_alg.gen.test b/tests/nlattr_crypto_user_alg.gen.test
index 81d866e..e52b6be 100755
--- a/tests/nlattr_crypto_user_alg.gen.test
+++ b/tests/nlattr_crypto_user_alg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_crypto_user_alg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_crypto_user_alg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_dcbmsg.gen.test b/tests/nlattr_dcbmsg.gen.test
index d78bfcf..f9ef39f 100755
--- a/tests/nlattr_dcbmsg.gen.test
+++ b/tests/nlattr_dcbmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_dcbmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_dcbmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_fib_rule_hdr.gen.test b/tests/nlattr_fib_rule_hdr.gen.test
index cbdad4d..fb61343 100755
--- a/tests/nlattr_fib_rule_hdr.gen.test
+++ b/tests/nlattr_fib_rule_hdr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_fib_rule_hdr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_fib_rule_hdr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ifaddrlblmsg.gen.test b/tests/nlattr_ifaddrlblmsg.gen.test
index 0c41dbe..0f51430 100755
--- a/tests/nlattr_ifaddrlblmsg.gen.test
+++ b/tests/nlattr_ifaddrlblmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrlblmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrlblmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ifaddrmsg.gen.test b/tests/nlattr_ifaddrmsg.gen.test
index d659e00..3fb81bd 100755
--- a/tests/nlattr_ifaddrmsg.gen.test
+++ b/tests/nlattr_ifaddrmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifaddrmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ifinfomsg.gen.test b/tests/nlattr_ifinfomsg.gen.test
index 618df14..b9a6456 100755
--- a/tests/nlattr_ifinfomsg.gen.test
+++ b/tests/nlattr_ifinfomsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifinfomsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifinfomsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ifla_brport.gen.test b/tests/nlattr_ifla_brport.gen.test
index 48bfed4..6758d8d 100755
--- a/tests/nlattr_ifla_brport.gen.test
+++ b/tests/nlattr_ifla_brport.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_brport +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_brport +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ifla_port.gen.test b/tests/nlattr_ifla_port.gen.test
index 605bf04..ecea89a 100755
--- a/tests/nlattr_ifla_port.gen.test
+++ b/tests/nlattr_ifla_port.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_port +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_port +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ifla_xdp.gen.test b/tests/nlattr_ifla_xdp.gen.test
index a30e843..c6e0fab 100755
--- a/tests/nlattr_ifla_xdp.gen.test
+++ b/tests/nlattr_ifla_xdp.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_inet_diag_msg.gen.test b/tests/nlattr_inet_diag_msg.gen.test
index 953a767..953a23d 100755
--- a/tests/nlattr_inet_diag_msg.gen.test
+++ b/tests/nlattr_inet_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_inet_diag_req_compat.gen.test b/tests/nlattr_inet_diag_req_compat.gen.test
index bf8b65c..7b577dc 100755
--- a/tests/nlattr_inet_diag_req_compat.gen.test
+++ b/tests/nlattr_inet_diag_req_compat.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_compat +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_compat +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_inet_diag_req_v2.gen.test b/tests/nlattr_inet_diag_req_v2.gen.test
index 0260bc4..01c73a1 100755
--- a/tests/nlattr_inet_diag_req_v2.gen.test
+++ b/tests/nlattr_inet_diag_req_v2.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_v2 +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_inet_diag_req_v2 +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_mdba_mdb_entry.gen.test b/tests/nlattr_mdba_mdb_entry.gen.test
index 67253e8..8d09a03 100755
--- a/tests/nlattr_mdba_mdb_entry.gen.test
+++ b/tests/nlattr_mdba_mdb_entry.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_mdba_router_port.gen.test b/tests/nlattr_mdba_router_port.gen.test
index ce9ea14..97230e8 100755
--- a/tests/nlattr_mdba_router_port.gen.test
+++ b/tests/nlattr_mdba_router_port.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ndmsg.gen.test b/tests/nlattr_ndmsg.gen.test
index 06b8f1a..1d2763b 100755
--- a/tests/nlattr_ndmsg.gen.test
+++ b/tests/nlattr_ndmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_ndtmsg.gen.test b/tests/nlattr_ndtmsg.gen.test
index d75ad57..bf7d122 100755
--- a/tests/nlattr_ndtmsg.gen.test
+++ b/tests/nlattr_ndtmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndtmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ndtmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_netconfmsg.gen.test b/tests/nlattr_netconfmsg.gen.test
index 9a061cb..27f3a66 100755
--- a/tests/nlattr_netconfmsg.gen.test
+++ b/tests/nlattr_netconfmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netconfmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netconfmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_netlink_diag_msg.gen.test b/tests/nlattr_netlink_diag_msg.gen.test
index aa6aabf..eacc6df 100755
--- a/tests/nlattr_netlink_diag_msg.gen.test
+++ b/tests/nlattr_netlink_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netlink_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_netlink_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_nlmsgerr.gen.test b/tests/nlattr_nlmsgerr.gen.test
index 23df500..f06ea42 100755
--- a/tests/nlattr_nlmsgerr.gen.test
+++ b/tests/nlattr_nlmsgerr.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_nlmsgerr +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_nlmsgerr +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_packet_diag_msg.gen.test b/tests/nlattr_packet_diag_msg.gen.test
index 6af8749..7177ea2 100755
--- a/tests/nlattr_packet_diag_msg.gen.test
+++ b/tests/nlattr_packet_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag-v.sh"
diff --git a/tests/nlattr_rtgenmsg.gen.test b/tests/nlattr_rtgenmsg.gen.test
index 0ff6d13..37ec842 100755
--- a/tests/nlattr_rtgenmsg.gen.test
+++ b/tests/nlattr_rtgenmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtgenmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtgenmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_rtmsg.gen.test b/tests/nlattr_rtmsg.gen.test
index 5525143..f075529 100755
--- a/tests/nlattr_rtmsg.gen.test
+++ b/tests/nlattr_rtmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_rtmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_smc_diag_msg.gen.test b/tests/nlattr_smc_diag_msg.gen.test
index 3e6407e..e64d21e 100755
--- a/tests/nlattr_smc_diag_msg.gen.test
+++ b/tests/nlattr_smc_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_smc_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_smc_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tc_stats.gen.test b/tests/nlattr_tc_stats.gen.test
index 72780d4..11cadd2 100755
--- a/tests/nlattr_tc_stats.gen.test
+++ b/tests/nlattr_tc_stats.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tca_stab.gen.test b/tests/nlattr_tca_stab.gen.test
index 14cd1a5..81d36c7 100755
--- a/tests/nlattr_tca_stab.gen.test
+++ b/tests/nlattr_tca_stab.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tcamsg.gen.test b/tests/nlattr_tcamsg.gen.test
index 7c30207..1a6408d 100755
--- a/tests/nlattr_tcamsg.gen.test
+++ b/tests/nlattr_tcamsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcamsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcamsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tcmsg.gen.test b/tests/nlattr_tcmsg.gen.test
index f5bf7a9..7e70ca2 100755
--- a/tests/nlattr_tcmsg.gen.test
+++ b/tests/nlattr_tcmsg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcmsg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tcmsg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_unix_diag_msg.gen.test b/tests/nlattr_unix_diag_msg.gen.test
index d913afc..fd5b828 100755
--- a/tests/nlattr_unix_diag_msg.gen.test
+++ b/tests/nlattr_unix_diag_msg.gen.test
@@ -1,3 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_unix_diag_msg +netlink_sock_diag.test); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_unix_diag_msg +netlink_sock_diag.test ); do not edit.
+set -- 
 . "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nsyscalls-d.c b/tests/nsyscalls-d.c
new file mode 100644
index 0000000..1525dea
--- /dev/null
+++ b/tests/nsyscalls-d.c
@@ -0,0 +1,2 @@
+#define DEBUG_PRINT 1
+#include "nsyscalls.c"
diff --git a/tests/nsyscalls-d.test b/tests/nsyscalls-d.test
new file mode 100755
index 0000000..2cca32f
--- /dev/null
+++ b/tests/nsyscalls-d.test
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Check decoding of out-of-range syscalls along with debug ouput
+
+. "${srcdir=.}/init.sh"
+
+: ${debug_flag=-d}
+NAME=nsyscalls-d
+
+if [ "$MIPS_ABI" = "o32" ]; then
+	syscall=syscall
+	[ -z "$debug_flag" ] ||
+		skip_ "mips $MIPS_ABI is not supported by this test yet"
+else
+	syscall=none
+fi
+
+run_strace $debug_flag -e trace=$syscall ../$NAME "$STRACE_EXE" 9 \
+	2> "$LOG-err-all" > "$EXP" 9> "$EXP-err"
+
+[ -n "$debug_flag" ] || > "$EXP-err"
+
+grep "invalid syscall" "$LOG-err-all" > "$LOG-err"
+
+match_diff "$LOG" "$EXP"
+match_diff "$LOG-err" "$EXP-err"
diff --git a/tests/nsyscalls-nd.test b/tests/nsyscalls-nd.test
new file mode 100755
index 0000000..7d2f1e1
--- /dev/null
+++ b/tests/nsyscalls-nd.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+debug_flag=
+. "${srcdir=.}"/nsyscalls-d.test
diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c
index 29f444a..9f74867 100644
--- a/tests/nsyscalls.c
+++ b/tests/nsyscalls.c
@@ -2,7 +2,7 @@
  * Check decoding of out-of-range syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,6 +32,7 @@
 #include "sysent.h"
 #include <errno.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <asm/unistd.h>
 
@@ -43,6 +44,10 @@
 
 #include "sysent_shorthand_undefs.h"
 
+#ifndef DEBUG_PRINT
+# define DEBUG_PRINT 0
+#endif
+
 #if defined __X32_SYSCALL_BIT && defined __NR_read \
  && (__X32_SYSCALL_BIT & __NR_read) != 0
 # define SYSCALL_BIT __X32_SYSCALL_BIT
@@ -50,6 +55,11 @@
 # define SYSCALL_BIT 0
 #endif
 
+#if DEBUG_PRINT
+static const char *strace_name;
+static FILE *debug_out;
+#endif
+
 static void
 test_syscall(const unsigned long nr)
 {
@@ -64,13 +74,19 @@
 
 	long rc = syscall(nr | SYSCALL_BIT,
 			  a[0], a[1], a[2], a[3], a[4], a[5]);
+
+#if DEBUG_PRINT
+	fprintf(debug_out, "%s: pid %d invalid syscall %#lx\n",
+		strace_name, getpid(), nr | SYSCALL_BIT);
+#endif
+
 #ifdef LINUX_MIPSO32
 	printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)"
 	       " = %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,
+	printf("syscall_%#lx(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)"
+	       " = %ld (errno %d)\n", nr | SYSCALL_BIT,
 	       (unsigned long long) a[0],
 	       (unsigned long long) a[1],
 	       (unsigned long long) a[2],
@@ -82,8 +98,26 @@
 }
 
 int
-main(void)
+main(int argc, char *argv[])
 {
+#if DEBUG_PRINT
+	if (argc < 3)
+		error_msg_and_fail("Not enough arguments. "
+				   "Usage: %s STRACE_NAME DEBUG_OUT_FD",
+				   argv[0]);
+
+	strace_name = argv[1];
+
+	errno = 0;
+	int debug_out_fd = strtol(argv[2], NULL, 0);
+	if (errno)
+		error_msg_and_fail("Not a number: %s", argv[2]);
+
+	debug_out = fdopen(debug_out_fd, "a");
+	if (!debug_out)
+		perror_msg_and_fail("fdopen: %d", debug_out_fd);
+#endif
+
 	test_syscall(ARRAY_SIZE(syscallent));
 
 #ifdef SYS_socket_subcall
diff --git a/tests/old_mmap-P.c b/tests/old_mmap-P.c
new file mode 100644
index 0000000..bb28e88
--- /dev/null
+++ b/tests/old_mmap-P.c
@@ -0,0 +1,3 @@
+#define TEST_FD 9
+#define PATH_TRACING
+#include "old_mmap.c"
diff --git a/tests/old_mmap-P.gen.test b/tests/old_mmap-P.gen.test
new file mode 100755
index 0000000..b1de934
--- /dev/null
+++ b/tests/old_mmap-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap-P -e trace=mmap -P "/dev/full" 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=mmap -P "/dev/full" 9>>/dev/full
diff --git a/tests/old_mmap-v-none.c b/tests/old_mmap-v-none.c
new file mode 100644
index 0000000..033503c
--- /dev/null
+++ b/tests/old_mmap-v-none.c
@@ -0,0 +1 @@
+#include "old_mmap.c"
diff --git a/tests/old_mmap-v-none.gen.test b/tests/old_mmap-v-none.gen.test
new file mode 100755
index 0000000..a568d98
--- /dev/null
+++ b/tests/old_mmap-v-none.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap-v-none -a11 -e trace=mmap -e verbose=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap -e verbose=none
diff --git a/tests/old_mmap.c b/tests/old_mmap.c
index 2725fb7..35ec428 100644
--- a/tests/old_mmap.c
+++ b/tests/old_mmap.c
@@ -2,6 +2,7 @@
  * Check decoding of "old mmap" edition of mmap syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,57 +37,64 @@
  * it would require additional efforts to filter out mmap calls made by glibc.
  */
 
-#if defined __NR_mmap && \
-(   defined __arm__ \
- || defined __i386__ \
- || (defined __s390__ && !defined __s390x__) \
-)
+#if defined __NR_mmap \
+	&& (defined __arm__ || defined __i386__ || defined __m68k__ \
+		|| defined __s390__ || defined __s390x__) \
+	&& (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))
 
 # include <stdio.h>
 # include <string.h>
 # include <sys/mman.h>
 # include <unistd.h>
 
+# ifndef TEST_FD
+#  define TEST_FD -2LU
+# endif
+
 int
 main(void)
 {
 	long rc = syscall(__NR_mmap, 0);
+# ifndef PATH_TRACING
 	printf("mmap(NULL) = %ld %s (%m)\n", rc, errno2name());
+# endif
 
-	const unsigned int args1_c[6] = {
-		0xdeadbeef,		/* addr */
-		0xfacefeed,		/* len */
+	const unsigned long args1_c[6] = {
+		(unsigned long) 0xbadc0deddeadbeefULL,	/* addr */
+		(unsigned long) 0xdeefacedfacefeedULL,	/* len */
 		PROT_READ|PROT_EXEC,	/* prot */
 		MAP_FILE|MAP_FIXED,	/* flags */
-		-2U,			/* fd */
-		0xbadc0ded		/* offset */
+		TEST_FD,		/* fd */
+		(unsigned long) 0xdecaffedbadc0dedULL	/* offset */
 	};
-	const unsigned int page_size = get_page_size();
-	const unsigned int args2_c[6] = {
+	const unsigned long page_size = get_page_size();
+	const unsigned long args2_c[6] = {
 		0,
 		page_size,
 		PROT_READ|PROT_WRITE,
 		MAP_PRIVATE|MAP_ANONYMOUS,
-		-1U,
-		0xfaced000 & -page_size
+		-1LU,
+		(unsigned long) 0xda7a1057faced000ULL & -page_size
 	};
 	void *args = tail_memdup(args1_c, sizeof(args1_c));
 
 	rc = syscall(__NR_mmap, args);
-	printf("mmap(%#x, %u, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
-	       ", %d, %#x) = %ld %s (%m)\n",
-	       args1_c[0], args1_c[1], args1_c[4], args1_c[5],
+	printf("mmap(%#lx, %lu, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
+	       ", %d, %#lx) = %ld %s (%m)\n",
+	       args1_c[0], args1_c[1], (int) args1_c[4], args1_c[5],
 	       rc, errno2name());
 
 	memcpy(args, args2_c, sizeof(args2_c));
 	rc = syscall(__NR_mmap, args);
-	printf("mmap(NULL, %u, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
-	       ", %d, %#x) = %#lx\n",
-	       args2_c[1], args2_c[4], args2_c[5], rc);
+# ifndef PATH_TRACING
+	printf("mmap(NULL, %lu, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
+	       ", %d, %#lx) = %#lx\n",
+	       args2_c[1], (int) args2_c[4], args2_c[5], rc);
+# endif
 
 	void *addr = (void *) rc;
 	if (mprotect(addr, page_size, PROT_NONE))
-		perror_msg_and_fail("mprotect(%p, %u, PROT_NONE)",
+		perror_msg_and_fail("mprotect(%p, %lu, PROT_NONE)",
 				    addr, page_size);
 
 	puts("+++ exited with 0 +++");
@@ -95,7 +103,9 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_mmap && (__arm__ || __i386__"
-		    " || (__s390__ && !__s390x__))")
+SKIP_MAIN_UNDEFINED("defined __NR_mmap "
+	"&& (defined __arm__ || defined __i386__ || defined __m68k__ "
+		"|| defined __s390__ || defined __s390x__) "
+	"&& (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))")
 
 #endif
diff --git a/tests/oldselect-P.c b/tests/oldselect-P.c
new file mode 100644
index 0000000..67e2134
--- /dev/null
+++ b/tests/oldselect-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "oldselect.c"
diff --git a/tests/oldselect-P.gen.test b/tests/oldselect-P.gen.test
new file mode 100755
index 0000000..3486ffd
--- /dev/null
+++ b/tests/oldselect-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-P -a13 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests/oldselect-efault-P.c b/tests/oldselect-efault-P.c
new file mode 100644
index 0000000..9ebf73d
--- /dev/null
+++ b/tests/oldselect-efault-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "oldselect-efault.c"
diff --git a/tests/oldselect-efault-P.gen.test b/tests/oldselect-efault-P.gen.test
new file mode 100755
index 0000000..a3d7176
--- /dev/null
+++ b/tests/oldselect-efault-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests/oldselect-efault.c b/tests/oldselect-efault.c
new file mode 100644
index 0000000..3c44334
--- /dev/null
+++ b/tests/oldselect-efault.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2015-2018 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_select && defined __NR__newselect \
+ && __NR_select != __NR__newselect \
+ && !defined __sparc__
+
+# include <stdint.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <sys/select.h>
+
+static const char *errstr;
+
+static long
+xselect(const kernel_ulong_t args)
+{
+	static const kernel_ulong_t dummy = F8ILL_KULONG_MASK | 0xfacefeed;
+	long rc = syscall(__NR_select, args, dummy, dummy, dummy, dummy, dummy);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	unsigned long *const args = tail_alloc(sizeof(*args) * 4);
+	memset(args, 0, sizeof(*args) * 4);
+
+	xselect(0);
+#ifndef PATH_TRACING_FD
+	printf("select(NULL) = %s\n", errstr);
+#endif
+
+	xselect((uintptr_t) args);
+#ifndef PATH_TRACING_FD
+	printf("select(%p) = %s\n", args, errstr);
+#endif
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
+		    " && __NR_select != __NR__newselect"
+		    " && !defined __sparc__")
+
+#endif
diff --git a/tests/oldselect-efault.gen.test b/tests/oldselect-efault.gen.test
new file mode 100755
index 0000000..bfeb557
--- /dev/null
+++ b/tests/oldselect-efault.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect-efault -a13 -e trace=select); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select
diff --git a/tests/oldselect.c b/tests/oldselect.c
index 7413fc3..7f548f8 100644
--- a/tests/oldselect.c
+++ b/tests/oldselect.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,37 +30,38 @@
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
- && !defined SPARC
+ && !defined __sparc__
 
-# include <unistd.h>
-# include <sys/select.h>
+# define TEST_SYSCALL_NR __NR_select
+# define TEST_SYSCALL_STR "select"
+# define xselect xselect
+# include "xselect.c"
 
-int
-main(void)
+static uint32_t *args;
+
+static long
+xselect(const kernel_ulong_t nfds,
+	const kernel_ulong_t rs,
+	const kernel_ulong_t ws,
+	const kernel_ulong_t es,
+	const kernel_ulong_t tv)
 {
-	int fds[2];
-	fd_set r = {}, w = {};
-	struct timeval timeout = { .tv_sec = 0, .tv_usec = 42 };
-	long args[] = {
-		2, (long) &r, (long) &w, 0, (long) &timeout,
-		0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded, 0xdeadbeef
-	};
-
-	(void) close(0);
-	(void) close(1);
-	if (pipe(fds))
-		perror_msg_and_fail("pipe");
-
-	FD_SET(0, &w);
-	FD_SET(1, &r);
-	if (syscall(__NR_select, args))
-		perror_msg_and_skip("select");
-
-	return 0;
+	if (!args)
+		args = tail_alloc(sizeof(*args) * 5);
+	args[0] = nfds;
+	args[1] = rs;
+	args[2] = ws;
+	args[3] = es;
+	args[4] = tv;
+	long rc = syscall(TEST_SYSCALL_NR, args);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect")
+SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
+		    " && __NR_select != __NR__newselect"
+		    " && !defined __sparc__")
 
 #endif
diff --git a/tests/oldselect.expected b/tests/oldselect.expected
deleted file mode 100644
index d6e7f3c..0000000
--- a/tests/oldselect.expected
+++ /dev/null
@@ -1,2 +0,0 @@
-select(2, [1], [0], NULL, {tv_sec=0, tv_usec=42}) = 0 (Timeout)
-+++ exited with 0 +++
diff --git a/tests/oldselect.gen.test b/tests/oldselect.gen.test
new file mode 100755
index 0000000..1f10cbe
--- /dev/null
+++ b/tests/oldselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldselect -a13 -e trace=select); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 -e trace=select
diff --git a/tests/oldselect.test b/tests/oldselect.test
deleted file mode 100755
index 35661ad..0000000
--- a/tests/oldselect.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check old select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a34 -eselect $args
-match_diff
-
-exit 0
diff --git a/tests/open.c b/tests/open.c
index 01e89b0..fe486c5 100644
--- a/tests/open.c
+++ b/tests/open.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,7 +31,7 @@
 
 #ifdef __NR_open
 
-# include <fcntl.h>
+# include <asm/fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
@@ -56,16 +57,11 @@
 		       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
+# ifdef O_TMPFILE
 	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 */
+	printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+	       sample, sprintrc(fd));
+# endif /* O_TMPFILE */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/openat.c b/tests/openat.c
index 1d6765c..8c97441 100644
--- a/tests/openat.c
+++ b/tests/openat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Katerina Koukiou <k.koukiou@gmail.com>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,17 +29,36 @@
 #include "tests.h"
 #include <asm/unistd.h>
 
-#if defined __NR_openat
+#ifdef __NR_openat
 
-# include <fcntl.h>
+# include <asm/fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+#ifdef O_TMPFILE
+/* The kernel & C libraries often inline O_DIRECTORY. */
+# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
+#else
+# define STRACE_O_TMPFILE 0
+#endif
+
+static const char sample[] = "openat.sample";
+
+static void
+test_mode_flag(unsigned int mode_val, const char *mode_str,
+	       unsigned int flag_val, const char *flag_str)
+{
+	long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0);
+	printf("openat(-1, \"%s\", %s%s%s%s) = %s\n",
+	       sample, mode_str,
+	       flag_val ? "|" : "", flag_str,
+	       flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "",
+	       sprintrc(rc));
+}
+
 int
 main(void)
 {
-	static const char sample[] = "openat.sample";
-
 	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));
@@ -53,6 +73,54 @@
 		       sample, sprintrc(fd));
 	}
 
+	struct {
+		unsigned int val;
+		const char *str;
+	} modes[] = {
+		{ ARG_STR(O_RDONLY) },
+		{ ARG_STR(O_WRONLY) },
+		{ ARG_STR(O_RDWR) },
+		{ ARG_STR(O_ACCMODE) }
+	}, flags[] = {
+		{ ARG_STR(O_APPEND) },
+		{ ARG_STR(O_DIRECT) },
+		{ ARG_STR(O_DIRECTORY) },
+		{ ARG_STR(O_EXCL) },
+		{ ARG_STR(O_LARGEFILE) },
+		{ ARG_STR(O_NOATIME) },
+		{ ARG_STR(O_NOCTTY) },
+		{ ARG_STR(O_NOFOLLOW) },
+		{ ARG_STR(O_NONBLOCK) },
+		{ ARG_STR(O_SYNC) },
+		{ ARG_STR(O_TRUNC) },
+		{ ARG_STR(O_CREAT) },
+# ifdef O_CLOEXEC
+		{ ARG_STR(O_CLOEXEC) },
+# endif
+# ifdef O_DSYNC
+		{ ARG_STR(O_DSYNC) },
+# endif
+# ifdef __O_SYNC
+		{ ARG_STR(__O_SYNC) },
+# endif
+# ifdef O_PATH
+		{ ARG_STR(O_PATH) },
+# endif
+# ifdef O_TMPFILE
+		{ ARG_STR(O_TMPFILE) },
+# endif
+# ifdef __O_TMPFILE
+		{ ARG_STR(__O_TMPFILE) },
+# endif
+		{ ARG_STR(0x80000000) },
+		{ 0, "" }
+	};
+
+	for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m)
+		for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f)
+			test_mode_flag(modes[m].val, modes[m].str,
+				       flags[f].val, flags[f].str);
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests/openat.gen.test b/tests/openat.gen.test
index fe29e1c..29dd349 100755
--- a/tests/openat.gen.test
+++ b/tests/openat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -a36 -P $NAME.sample); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
+run_strace_match_diff -a36 -P $NAME.sample
diff --git a/tests/options-syntax.test b/tests/options-syntax.test
index 2e459c9..f81dd99 100755
--- a/tests/options-syntax.test
+++ b/tests/options-syntax.test
@@ -3,7 +3,7 @@
 # Check strace options syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2017 The strace developers.
+# Copyright (c) 2016-2018 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,33 +37,10 @@
 check_e "Syscall 'chdir' for -b isn't supported" -b chdir
 check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
 
-check_e "invalid system call '-1'" -e-1
-check_e "invalid system call '-2'" -e -2
-check_e "invalid system call '-3'" -etrace=-3
-check_e "invalid system call '-4'" -e trace=-4
-check_e "invalid system call '-5'" -e trace=1,-5
-check_e "invalid system call '/non_syscall'" -e trace=/non_syscall
-check_e "invalid system call '2147483647'" -e 2147483647
-check_e "invalid system call '2147483648'" -e 2147483648
-check_e "invalid system call '4294967295'" -e 4294967295
-check_e "invalid system call '4294967296'" -e 4294967296
+check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')"
 
-check_e "invalid descriptor '-1'" -eread=-1
-check_e "invalid descriptor '-42'" -ewrite=-42
-check_e "invalid descriptor '2147483648'" -eread=2147483648
-check_e "invalid descriptor '4294967296'" -ewrite=4294967296
-check_e "invalid descriptor 'foo'" -eread=foo
-check_e "invalid descriptor ''" -ewrite=
-check_e "invalid descriptor ','" -eread=,
-check_e "invalid descriptor '!'" -ewrite='!'
-check_e "invalid descriptor '!'" -eread='0,!'
-check_e "invalid descriptor '!,'" -ewrite='!,'
-
-check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
-check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
-check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
-check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
-check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
+ff_name="$(printf '%4084s' ' ')"
+check_e_using_grep "$ff_name: File *name too long" -ff -o "$ff_name" true
 
 check_h 'must have PROG [ARGS] or -p PID'
 check_h 'PROG [ARGS] must be specified with -D' -D -p $$
@@ -80,12 +57,12 @@
 check_h "invalid -s argument: '1073741824'" -s 1073741824
 check_h "invalid -I argument: '5'" -I 5
 
-../zeroargc "$strace_exp" /bin/true 2> "$LOG" &&
+../zeroargc "$STRACE_EXE" /bin/true 2> "$LOG" &&
 	dump_log_and_fail_with \
 		'zeroargc strace failed to handle the error properly'
 cat > "$EXP" << __EOF__
-$strace_exp: must have PROG [ARGS] or -p PID
-Try '$strace_exp -h' for more information.
+$STRACE_EXE: must have PROG [ARGS] or -p PID
+Try '$STRACE_EXE -h' for more information.
 __EOF__
 diff -u -- "$EXP" "$LOG" > /dev/null || {
 	cat > "$EXP" <<- '__EOF__'
@@ -107,17 +84,17 @@
 
 	for c in i r t T y; do
 		check_e "-$c has no effect with -c
-$strace_exp: $umsg" -u :nosuchuser: -c -$c true
+$STRACE_EXE: $umsg" -u :nosuchuser: -c -$c true
 	done
 		check_e "-i has no effect with -c
-$strace_exp: -r has no effect with -c
-$strace_exp: -t has no effect with -c
-$strace_exp: -T has no effect with -c
-$strace_exp: -y has no effect with -c
-$strace_exp: $umsg" -u :nosuchuser: -cirtTy true
+$STRACE_EXE: -r has no effect with -c
+$STRACE_EXE: -t has no effect with -c
+$STRACE_EXE: -T has no effect with -c
+$STRACE_EXE: -y has no effect with -c
+$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTy true
 
 	check_e "-tt has no effect with -r
-$strace_exp: $umsg" -u :nosuchuser: -r -tt true
+$STRACE_EXE: $umsg" -u :nosuchuser: -r -tt true
 fi
 
 args='-p 2147483647'
@@ -127,7 +104,7 @@
 
 for cmd in PTRACE_SEIZE PTRACE_ATTACH; do
 	cat > "$EXP" << __EOF__
-$strace_exp: attach: ptrace($cmd, 2147483647): No such process
+$STRACE_EXE: attach: ptrace($cmd, 2147483647): No such process
 __EOF__
 	diff -- "$EXP" "$LOG" ||
 		continue
diff --git a/tests/osf_utimes.gen.test b/tests/osf_utimes.gen.test
index b6be305..9e683b4 100755
--- a/tests/osf_utimes.gen.test
+++ b/tests/osf_utimes.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests/perf_event_open.c b/tests/perf_event_open.c
index 74ff952..667c31f 100644
--- a/tests/perf_event_open.c
+++ b/tests/perf_event_open.c
@@ -2,7 +2,7 @@
  * Check verbose decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -102,7 +102,8 @@
 		 use_clockid			:1,
 		 context_switch			:1,
 		 write_backward			:1,
-		 __reserved_1			:36;
+		 namespaces			:1,
+		 __reserved_1			:35;
 };
 
 static const char *
@@ -351,9 +352,17 @@
 # endif
 	printf(", write_backward=%" PRIu64, val);
 
+	val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES
+		attr->namespaces;
+# else
+		flags_data.flags.namespaces;
+# endif
+	printf(", namespaces=%" PRIu64, val);
+
 	val = flags_data.flags.__reserved_1;
 	if (val)
-		printf(", __reserved_1=%#" PRIx64 " /* Bits 63..28 */", val);
+		printf(", __reserved_1=%#" PRIx64 " /* Bits 63..29 */", val);
 
 	printf(", %s=%u",
 		attr->watermark ? "wakeup_watermark" : "wakeup_events",
@@ -523,7 +532,8 @@
 	"PERF_SAMPLE_BRANCH_IND_JUMP|" \
 	"PERF_SAMPLE_BRANCH_CALL|" \
 	"PERF_SAMPLE_BRANCH_NO_FLAGS|" \
-	"PERF_SAMPLE_BRANCH_NO_CYCLES"
+	"PERF_SAMPLE_BRANCH_NO_CYCLES|" \
+	"PERF_SAMPLE_BRANCH_TYPE_SAVE"
 
 int
 main(void)
@@ -608,7 +618,7 @@
 	static const struct u64_val_str sample_types[] = {
 		{ ARG_STR(0) },
 		{ 0x800, "PERF_SAMPLE_BRANCH_STACK" },
-		{ ARG_ULL_STR(0xdeadc0deda780000) " /* PERF_SAMPLE_??? */" },
+		{ ARG_ULL_STR(0xdeadc0deda700000) " /* PERF_SAMPLE_??? */" },
 		{ 0xffffffffffffffffULL,
 			"PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
 			"PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
@@ -618,7 +628,8 @@
 			"PERF_SAMPLE_REGS_USER|PERF_SAMPLE_STACK_USER|"
 			"PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
 			"PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
-			"PERF_SAMPLE_REGS_INTR|0xfffffffffff80000" },
+			"PERF_SAMPLE_REGS_INTR|PERF_SAMPLE_PHYS_ADDR|"
+			"0xfffffffffff00000" },
 	};
 	static const struct u64_val_str read_formats[] = {
 		{ ARG_STR(0) },
@@ -650,11 +661,11 @@
 	static const struct u64_val_str branch_sample_types[] = {
 		{ ARG_STR(0) },
 		{ 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
-		{ 0xffff, BRANCH_TYPE_ALL },
-		{ ARG_ULL_STR(0xdeadcaffeeed0000)
+		{ 0x1ffff, BRANCH_TYPE_ALL },
+		{ ARG_ULL_STR(0xdeadcaffeeec0000)
 			" /* PERF_SAMPLE_BRANCH_??? */" },
 		{ 0xffffffffffffffffULL,
-			BRANCH_TYPE_ALL "|0xffffffffffff0000" }
+			BRANCH_TYPE_ALL "|0xfffffffffffe0000" }
 	};
 	static const struct s32_val_str clockids[] = {
 		{ 11, "CLOCK_TAI" },
diff --git a/tests/perf_event_open.gen.test b/tests/perf_event_open.gen.test
index 85336c3..02d468a 100755
--- a/tests/perf_event_open.gen.test
+++ b/tests/perf_event_open.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a1 
diff --git a/tests/pipe2.gen.test b/tests/pipe2.gen.test
index 5a06c03..50b8fd6 100755
--- a/tests/pipe2.gen.test
+++ b/tests/pipe2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests/pkey_alloc.c b/tests/pkey_alloc.c
index 4577278..4a0aa72 100644
--- a/tests/pkey_alloc.c
+++ b/tests/pkey_alloc.c
@@ -2,6 +2,7 @@
  * Check decoding of pkey_alloc syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -53,10 +54,12 @@
 			sizeof(kernel_ulong_t) > sizeof(int) ?
 			"PKEY_DISABLE_WRITE|0xbadc0ded00000000" :
 			"PKEY_DISABLE_WRITE" },
-		{ 0xdec0ded, "PKEY_DISABLE_ACCESS|0xdec0dec" },
-		{ 0x3, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE" },
+		{ 0xdec0ded, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_EXECUTE|"
+				"0xdec0de8" },
+		{ 0x7, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE|"
+				"PKEY_DISABLE_EXECUTE" },
 		{ ARG_STR(0) },
-		{ 0xbadc0dec, "0xbadc0dec /* PKEY_??? */" },
+		{ 0xbadc0de8, "0xbadc0de8 /* PKEY_??? */" },
 	};
 
 	long rc;
diff --git a/tests/pkey_alloc.gen.test b/tests/pkey_alloc.gen.test
index b3e5869..fb554ef 100755
--- a/tests/pkey_alloc.gen.test
+++ b/tests/pkey_alloc.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/pkey_free.gen.test b/tests/pkey_free.gen.test
index 588d1aa..0374cc7 100755
--- a/tests/pkey_free.gen.test
+++ b/tests/pkey_free.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
+run_strace_match_diff -a13 
diff --git a/tests/pkey_mprotect.gen.test b/tests/pkey_mprotect.gen.test
index 14be231..11a902a 100755
--- a/tests/pkey_mprotect.gen.test
+++ b/tests/pkey_mprotect.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
+run_strace_match_diff -a37 
diff --git a/tests/poll-P.c b/tests/poll-P.c
new file mode 100644
index 0000000..7bbeb79
--- /dev/null
+++ b/tests/poll-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "poll.c"
diff --git a/tests/poll-P.test b/tests/poll-P.test
new file mode 100755
index 0000000..a190572
--- /dev/null
+++ b/tests/poll-P.test
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Check path tracing of poll syscall.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a16 -vepoll -P /dev/full 9>>/dev/full \
+	$args > "$EXP"
+match_diff "$LOG" "$EXP"
+
+for abbrev in 0 1 2 3 4 5; do
+	run_prog "../$NAME" $abbrev > /dev/null
+	run_strace -a16 -epoll -s$abbrev -P /dev/full 9>>/dev/full \
+		$args > "$EXP"
+	match_diff "$LOG" "$EXP"
+done
diff --git a/tests/poll.c b/tests/poll.c
index 2bf8c1a..c5930a3 100644
--- a/tests/poll.c
+++ b/tests/poll.c
@@ -1,8 +1,7 @@
 /*
- * This file is part of poll strace test.
+ * Check decoding of poll syscall.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,6 +37,7 @@
 # include <poll.h>
 # include <stdio.h>
 # include <stdlib.h>
+# include <string.h>
 # include <unistd.h>
 
 #define PRINT_EVENT(flag, member)			\
@@ -163,12 +163,19 @@
 int
 main(int ac, char **av)
 {
+# ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+# endif
+
 	tprintf("%s", "");
 
 	assert(syscall(__NR_poll, NULL, 42, 0) == -1);
 	if (ENOSYS == errno)
 		perror_msg_and_skip("poll");
+
+# ifndef PATH_TRACING_FD
 	tprintf("poll(NULL, 42, 0) = -1 EFAULT (%m)\n");
+# endif
 
 	int fds[2];
 	if (pipe(fds) || pipe(fds))
@@ -187,7 +194,93 @@
 	int rc = syscall(__NR_poll, tail_fds0, 0, timeout);
 	assert(rc == 0);
 
+# ifndef PATH_TRACING_FD
 	tprintf("poll([], 0, %d) = %d (Timeout)\n", timeout, rc);
+# endif
+
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 3);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	tail_fds0[0].fd = -1;
+	tail_fds0[2].fd = -3;
+	tail_fds0[4].events = 0;
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 2);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	tail_fds0[1].fd = -2;
+	tail_fds0[4].fd = -5;
+	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
+	assert(rc == 1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
+				    ARRAY_SIZE(pfds0), abbrev);
+	tprintf(", %u, %d) = %d (",
+		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
+	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
+	tprintf(")\n");
+# endif /* !PATH_TRACING_FD */
+
+	struct pollfd pfds1[] = {
+		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+	};
+	struct pollfd *const tail_fds1 = tail_memdup(pfds1, sizeof(pfds1));
+	rc = syscall(__NR_poll, tail_fds1, ARRAY_SIZE(pfds1), timeout);
+	assert(rc == 0);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
+				    ARRAY_SIZE(pfds1), abbrev);
+	tprintf(", %u, %d) = %d (Timeout)\n",
+		(unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
+# endif /* !PATH_TRACING_FD */
+
+	const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
+	rc = syscall(__NR_poll, efault, 1, 0);
+	assert(rc == -1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(%p, 1, 0) = -1 EFAULT (%m)\n", efault);
+# endif
+
+	const unsigned int valid = 1;
+	const void *const epfds = tail_fds0 + ARRAY_SIZE(pfds0) - valid;
+	rc = syscall(__NR_poll, epfds, valid + 1, 0);
+	assert(rc == -1);
+
+# ifndef PATH_TRACING_FD
+	tprintf("poll(");
+	print_pollfd_array_entering(epfds, valid + 1, valid, abbrev);
+	errno = EFAULT;
+	tprintf(", %u, 0) = -1 EFAULT (%m)\n", valid + 1);
+# endif /* !PATH_TRACING_FD */
+
+# ifdef PATH_TRACING_FD
+	memcpy(tail_fds0, pfds0, sizeof(pfds0));
+	tail_fds0[4].fd = PATH_TRACING_FD;
 
 	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
 	assert(rc == 3);
@@ -200,60 +293,15 @@
 	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
 	tprintf(")\n");
 
-	tail_fds0[0].fd = -1;
-	tail_fds0[2].fd = -3;
-	tail_fds0[4].events = 0;
-	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
-	assert(rc == 2);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
-				    ARRAY_SIZE(pfds0), abbrev);
-	tprintf(", %u, %d) = %d (",
-		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
-	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
-	tprintf(")\n");
-
-	tail_fds0[1].fd = -2;
-	tail_fds0[4].fd = -5;
-	rc = syscall(__NR_poll, tail_fds0, ARRAY_SIZE(pfds0), timeout);
-	assert(rc == 1);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds0, ARRAY_SIZE(pfds0),
-				    ARRAY_SIZE(pfds0), abbrev);
-	tprintf(", %u, %d) = %d (",
-		(unsigned int) ARRAY_SIZE(pfds0), timeout, rc);
-	print_pollfd_array_exiting(tail_fds0, ARRAY_SIZE(pfds0), abbrev);
-	tprintf(")\n");
-
-	struct pollfd pfds1[] = {
-		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
-	};
-	struct pollfd *const tail_fds1 = tail_memdup(pfds1, sizeof(pfds1));
-	rc = syscall(__NR_poll, tail_fds1, ARRAY_SIZE(pfds1), timeout);
-	assert(rc == 0);
-
-	tprintf("poll(");
-	print_pollfd_array_entering(tail_fds1, ARRAY_SIZE(pfds1),
-				    ARRAY_SIZE(pfds1), abbrev);
-	tprintf(", %u, %d) = %d (Timeout)\n",
-		(unsigned int) ARRAY_SIZE(pfds1), timeout, rc);
-
-	const void *const efault = tail_fds0 + ARRAY_SIZE(pfds0);
-	rc = syscall(__NR_poll, efault, 1, 0);
-	assert(rc == -1);
-	tprintf("poll(%p, 1, 0) = -1 EFAULT (%m)\n", efault);
-
-	const unsigned int valid = 1;
-	const void *const epfds = tail_fds0 + ARRAY_SIZE(pfds0) - valid;
 	rc = syscall(__NR_poll, epfds, valid + 1, 0);
 	assert(rc == -1);
+
+	/* the 1st pollfd element is readable and contains PATH_TRACING_FD */
 	tprintf("poll(");
 	print_pollfd_array_entering(epfds, valid + 1, valid, abbrev);
 	errno = EFAULT;
 	tprintf(", %u, 0) = -1 EFAULT (%m)\n", valid + 1);
+# endif /* PATH_TRACING_FD */
 
 	tprintf("+++ exited with 0 +++\n");
 	return 0;
diff --git a/tests/ppoll-P.c b/tests/ppoll-P.c
new file mode 100644
index 0000000..c2c572e
--- /dev/null
+++ b/tests/ppoll-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "ppoll.c"
diff --git a/tests/ppoll-P.gen.test b/tests/ppoll-P.gen.test
new file mode 100755
index 0000000..25a9704
--- /dev/null
+++ b/tests/ppoll-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-P -s2 -e trace=ppoll -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -e trace=ppoll -P /dev/full 9>>/dev/full
diff --git a/tests/ppoll.c b/tests/ppoll.c
index 6224183..b33f959 100644
--- a/tests/ppoll.c
+++ b/tests/ppoll.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of ppoll syscall.
  *
- * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,10 @@
 int
 main(void)
 {
+# ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+# endif
+
 	static const kernel_ulong_t bogus_nfds =
 		(kernel_ulong_t) 0xdeadbeeffacefeedULL;
 	static const kernel_ulong_t bogus_sigsetsize =
@@ -76,28 +80,36 @@
 	sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
 	if (ENOSYS == errno)
 		perror_msg_and_skip("ppoll");
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
 	       (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
 	       errstr);
+# endif
 
 	sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
 		  (unsigned long) efault + 16, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
 	       efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+# endif
 
 	ts->tv_sec = 0xdeadbeefU;
 	ts->tv_nsec = 0xfacefeedU;
 	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
 	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 	       sigset_size, errstr);
+# endif
 
 	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
 	ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
 	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+# ifndef PATH_TRACING_FD
 	printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
 	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 	       sigset_size, errstr);
+# endif
 
 	if (pipe(pipe_fd) || pipe(pipe_fd + 2))
 		perror_msg_and_fail("pipe");
@@ -124,24 +136,56 @@
 		       (unsigned long) sigmask, sigset_size);
 	if (rc != 2)
 		perror_msg_and_fail("ppoll 1");
+# ifndef PATH_TRACING_FD
 	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
 	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
-#if VERBOSE
+#  if VERBOSE
 	       ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
-#else
+#  else
 	       ", ...]"
-#endif
+#  endif
 	       ", %u, {tv_sec=42, tv_nsec=999999999}, [%s], %u) = %ld"
 	       " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
 	       ", left {tv_sec=%u, tv_nsec=%u})\n",
 	       pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
-#if VERBOSE
+#  if VERBOSE
 	       pipe_fd[2], pipe_fd[3],
-#endif
+#  endif
 	       (unsigned int) ARRAY_SIZE(fds1), USR2_CHLD_str,
 	       (unsigned int) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
 	       pipe_fd[3], (unsigned int) ts->tv_sec,
 	       (unsigned int) ts->tv_nsec);
+# endif /* !PATH_TRACING_FD */
+
+# ifdef PATH_TRACING_FD
+	ts->tv_sec = 123;
+	ts->tv_nsec = 987654321;
+	fds[3].fd = PATH_TRACING_FD;
+
+	rc = sys_ppoll((unsigned long) fds,
+		       F8ILL_KULONG_MASK | ARRAY_SIZE(fds1), (unsigned long) ts,
+		       (unsigned long) sigmask, sigset_size);
+	if (rc != 2)
+		perror_msg_and_fail("ppoll -P");
+	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
+	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
+#  if VERBOSE
+	       ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
+#  else
+	       ", ...]"
+#  endif
+	       ", %u, {tv_sec=123, tv_nsec=987654321}, [%s], %u) = %ld"
+	       " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
+	       ", left {tv_sec=%u, tv_nsec=%u})\n",
+	       pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
+#  if VERBOSE
+	       pipe_fd[2], PATH_TRACING_FD,
+#  endif
+	       (unsigned int) ARRAY_SIZE(fds1), USR2_CHLD_str,
+	       (unsigned int) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+	       PATH_TRACING_FD, (unsigned int) ts->tv_sec,
+	       (unsigned int) ts->tv_nsec);
+# endif /* PATH_TRACING_FD */
 
 	ts->tv_sec = 0;
 	ts->tv_nsec = 999;
@@ -163,23 +207,27 @@
 		       (unsigned long) sigmask, sigset_size);
 	if (rc != 0)
 		perror_msg_and_fail("ppoll 2");
+# ifndef PATH_TRACING_FD
 	printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
 	       ", {fd=%d, events=POLLOUT%s|POLLWRBAND}], %u"
 	       ", {tv_sec=0, tv_nsec=999}, ~[HUP KILL STOP], %u)"
 	       " = %ld (Timeout)\n",
 	       pipe_fd[1], pipe_fd[0], POLLWRNORM_str,
 	       (unsigned) ARRAY_SIZE(fds2), sigset_size, rc);
+# endif /* !PATH_TRACING_FD */
 
 	if (F8ILL_KULONG_SUPPORTED) {
 		sys_ppoll(f8ill_ptr_to_kulong(fds), ARRAY_SIZE(fds2),
 			  f8ill_ptr_to_kulong(ts), f8ill_ptr_to_kulong(sigmask),
 			  sigset_size);
+# ifndef PATH_TRACING_FD
 		printf("ppoll(%#llx, %u, %#llx, %#llx, %u) = %s\n",
 		       (unsigned long long) f8ill_ptr_to_kulong(fds),
 		       (unsigned) ARRAY_SIZE(fds2),
 		       (unsigned long long) f8ill_ptr_to_kulong(ts),
 		       (unsigned long long) f8ill_ptr_to_kulong(sigmask),
 		       (unsigned) sigset_size, errstr);
+# endif /* !PATH_TRACING_FD */
 	}
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/ppoll.gen.test b/tests/ppoll.gen.test
index 4c07598..120e953 100755
--- a/tests/ppoll.gen.test
+++ b/tests/ppoll.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s2
+run_strace_match_diff -s2 
diff --git a/tests/prctl-dumpable.c b/tests/prctl-dumpable.c
index 1049bce..52c1668 100644
--- a/tests/prctl-dumpable.c
+++ b/tests/prctl-dumpable.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,7 +33,8 @@
 #include <asm/unistd.h>
 #include <linux/prctl.h>
 
-#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE
+#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE \
+ && !defined __ia64__
 
 # include <stdio.h>
 # include <unistd.h>
@@ -101,6 +103,7 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE"
+		    " && !__ia64__")
 
 #endif
diff --git a/tests/preadv.gen.test b/tests/preadv.gen.test
index 8fb7b54..c3fabe6 100755
--- a/tests/preadv.gen.test
+++ b/tests/preadv.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests/print_user_desc.c b/tests/print_user_desc.c
new file mode 100644
index 0000000..2dac387
--- /dev/null
+++ b/tests/print_user_desc.c
@@ -0,0 +1,78 @@
+/*
+ * Auxiliary printing function for the struct user_desc type.
+ * Used by modify_ldt and xet_thread_area tests.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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"
+
+#ifdef HAVE_STRUCT_USER_DESC
+
+# include <asm/ldt.h>
+
+/**
+ * Print user_desc structure.
+ *
+ * @param us        Pointer to struct user_desc to print.
+ * @param entry_str If not NULL, the string is printed as a value of
+ *                  entry_number field.
+ */
+static void
+print_user_desc(struct user_desc *us, const char *entry_str)
+{
+	if (entry_str)
+		printf("{entry_number=%s", entry_str);
+	else
+		printf("{entry_number=%u", us->entry_number);
+
+	printf(", base_addr=%#08x"
+	       ", limit=%#08x"
+	       ", seg_32bit=%u"
+	       ", contents=%u"
+	       ", read_exec_only=%u"
+	       ", limit_in_pages=%u"
+	       ", seg_not_present=%u"
+	       ", useable=%u"
+# ifdef __x86_64__
+	       ", lm=%u"
+# endif
+	       "}",
+	       us->base_addr,
+	       us->limit,
+	       us->seg_32bit,
+	       us->contents,
+	       us->read_exec_only,
+	       us->limit_in_pages,
+	       us->seg_not_present,
+	       us->useable
+# ifdef __x86_64__
+	       , us->lm
+# endif
+	       );
+}
+
+#endif /* HAVE_STRUCT_USER_DESC */
diff --git a/tests/printpath-umovestr.c b/tests/printpath-umovestr.c
index a7251e5..0d5955f 100644
--- a/tests/printpath-umovestr.c
+++ b/tests/printpath-umovestr.c
@@ -2,6 +2,7 @@
  * Test regular printpath/umovestr.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,8 +30,8 @@
 
 #include "tests.h"
 #include "test_ucopy.h"
+#include <limits.h>
 #include <stdio.h>
-#include <sys/param.h>
 
 int
 main(void)
diff --git a/tests/prlimit64.gen.test b/tests/prlimit64.gen.test
index 11964a5..2c94fc9 100755
--- a/tests/prlimit64.gen.test
+++ b/tests/prlimit64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/pselect6.gen.test b/tests/pselect6.gen.test
index c89e705..29d3896 100755
--- a/tests/pselect6.gen.test
+++ b/tests/pselect6.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/ptrace.c b/tests/ptrace.c
index d776dcd..c70d568 100644
--- a/tests/ptrace.c
+++ b/tests/ptrace.c
@@ -2,7 +2,7 @@
  * Check decoding of ptrace syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,12 +32,12 @@
 #include <asm/unistd.h>
 
 #include <errno.h>
+#include "ptrace.h"
 #include <signal.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/wait.h>
 #include <unistd.h>
-#include "ptrace.h"
 #include <linux/audit.h>
 
 static const char *errstr;
diff --git a/tests/pure_executables.am b/tests/pure_executables.am
index 2cae9ae..128028f 100644
--- a/tests/pure_executables.am
+++ b/tests/pure_executables.am
@@ -104,6 +104,7 @@
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_kvm_run \
   ioctl_loop \
   ioctl_mtd \
   ioctl_rtc \
@@ -154,6 +155,7 @@
   mmap64 \
   mmsg \
   mmsg_name \
+  modify_ldt \
   mount \
   move_pages \
   mq \
@@ -223,9 +225,12 @@
   nlattr_tcmsg \
   nlattr_unix_diag_msg \
   old_mmap \
+  old_mmap-P \
+  old_mmap-v-none \
   oldfstat \
   oldlstat \
   oldselect \
+  oldselect-efault \
   oldstat \
   open \
   openat \
@@ -239,7 +244,9 @@
   pkey_free \
   pkey_mprotect \
   poll \
+  poll-P \
   ppoll \
+  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -282,6 +289,7 @@
   renameat \
   renameat2 \
   request_key \
+  riscv_flush_icache \
   rmdir \
   rt_sigaction \
   rt_sigpending \
@@ -291,6 +299,12 @@
   rt_sigsuspend \
   rt_sigtimedwait \
   rt_tgsigqueueinfo \
+  s390_guarded_storage \
+  s390_guarded_storage-v \
+  s390_pci_mmio_read_write \
+  s390_runtime_instr \
+  s390_sthyi \
+  s390_sthyi-v \
   sched_get_priority_mxx \
   sched_rr_get_interval \
   sched_xetaffinity \
@@ -342,6 +356,7 @@
   so_peercred \
   sock_filter-v \
   socketcall \
+  sockopt-sol_netlink \
   splice \
   stat \
   stat64 \
@@ -393,6 +408,7 @@
   xattr \
   xattr-strings \
   xet_robust_list \
+  xet_thread_area_x86 \
   xetitimer \
   xetpgid \
   xetpriority \
diff --git a/tests/pure_executables.list b/tests/pure_executables.list
index d98b17d..2f602a9 100755
--- a/tests/pure_executables.list
+++ b/tests/pure_executables.list
@@ -103,6 +103,7 @@
 ioctl_block
 ioctl_dm
 ioctl_evdev
+ioctl_kvm_run
 ioctl_loop
 ioctl_mtd
 ioctl_rtc
@@ -153,6 +154,7 @@
 mmap64
 mmsg
 mmsg_name
+modify_ldt
 mount
 move_pages
 mq
@@ -222,9 +224,12 @@
 nlattr_tcmsg
 nlattr_unix_diag_msg
 old_mmap
+old_mmap-P
+old_mmap-v-none
 oldfstat
 oldlstat
 oldselect
+oldselect-efault
 oldstat
 open
 openat
@@ -238,7 +243,9 @@
 pkey_free
 pkey_mprotect
 poll
+poll-P
 ppoll
+ppoll-P
 prctl-arg2-intptr
 prctl-dumpable
 prctl-name
@@ -281,6 +288,7 @@
 renameat
 renameat2
 request_key
+riscv_flush_icache
 rmdir
 rt_sigaction
 rt_sigpending
@@ -290,6 +298,12 @@
 rt_sigsuspend
 rt_sigtimedwait
 rt_tgsigqueueinfo
+s390_guarded_storage
+s390_guarded_storage-v
+s390_pci_mmio_read_write
+s390_runtime_instr
+s390_sthyi
+s390_sthyi-v
 sched_get_priority_mxx
 sched_rr_get_interval
 sched_xetaffinity
@@ -341,6 +355,7 @@
 so_peercred
 sock_filter-v
 socketcall
+sockopt-sol_netlink
 splice
 stat
 stat64
@@ -392,6 +407,7 @@
 xattr
 xattr-strings
 xet_robust_list
+xet_thread_area_x86
 xetitimer
 xetpgid
 xetpriority
diff --git a/tests/qual_fault-syntax.test b/tests/qual_fault-syntax.test
index 0cce539..43ade76 100755
--- a/tests/qual_fault-syntax.test
+++ b/tests/qual_fault-syntax.test
@@ -2,7 +2,7 @@
 #
 # Check -e fault= syntax.
 #
-# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -40,16 +40,7 @@
 		"strace -e fault=$* failed to handle an argument error properly"
 }
 
-for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
-	   invalid_syscall_name \
-	   invalid_syscall_name:when=3 \
-	   -1 \!-1 \
-	   -1:when=4 \
-	   -2 \
-	   -2:when=5 \
-	   32767 \!32767 \
-	   32767:when=6 \
-	   chdir:42 \!chdir:42 \
+for arg in chdir:42 \!chdir:42 \
 	   chdir:42:when=7 \
 	   chdir:invalid \
 	   chdir:invalid:when=8 \
@@ -92,12 +83,6 @@
 	   chdir:when=65536:error=30 \
 	   chdir:when=1+65536 \
 	   chdir:when=1+65536:error=31 \
-	   file,nonsense \
-	   \!desc,nonsense \
-	   chdir,nonsense \
-	   \!chdir,nonsense \
-	   1,nonsense \
-	   \!1,nonsense \
 	   chdir:retval=0 \
 	   chdir:signal=1 \
 	   chdir:error=1:error=2 \
diff --git a/tests/qual_fault.c b/tests/qual_fault.c
index 05401de..670d9fe 100644
--- a/tests/qual_fault.c
+++ b/tests/qual_fault.c
@@ -2,7 +2,7 @@
  * Check that fault injection works properly.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,11 +33,11 @@
 #include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
diff --git a/tests/qual_inject-syntax.test b/tests/qual_inject-syntax.test
index 7aa6180..46cead2 100755
--- a/tests/qual_inject-syntax.test
+++ b/tests/qual_inject-syntax.test
@@ -2,7 +2,7 @@
 #
 # Check -e inject= syntax.
 #
-# Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -40,17 +40,7 @@
 		"strace -e inject=$* failed to handle an argument error properly"
 }
 
-for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
-	   invalid_syscall_name \
-	   invalid_syscall_name:when=3 \
-	   -1 \!-1 \
-	   -1:when=4 \
-	   -2 \
-	   -2:when=5 \
-	   32767 \!32767 \
-	   32767:when=6 \
-	   42 \
-	   chdir \
+for arg in 42 chdir \
 	   chdir:42 \!chdir:42 \
 	   chdir:42:when=7 \
 	   chdir:invalid \
@@ -94,12 +84,6 @@
 	   chdir:when=65536:error=30 \
 	   chdir:when=1+65536 \
 	   chdir:when=1+65536:error=31 \
-	   file,nonsense \
-	   \!desc,nonsense \
-	   chdir,nonsense \
-	   \!chdir,nonsense \
-	   1,nonsense \
-	   \!1,nonsense \
 	   chdir:retval=-1 \
 	   chdir:signal=0 \
 	   chdir:signal=129 \
diff --git a/tests/quotactl.gen.test b/tests/quotactl.gen.test
index c6ad6e1..6d2dc75 100755
--- a/tests/quotactl.gen.test
+++ b/tests/quotactl.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/readahead.gen.test b/tests/readahead.gen.test
index 4e88efa..c27ab0d 100755
--- a/tests/readahead.gen.test
+++ b/tests/readahead.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a1 
diff --git a/tests/readdir.gen.test b/tests/readdir.gen.test
index 10da83b..09aad4f 100755
--- a/tests/readdir.gen.test
+++ b/tests/readdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests/readlink.gen.test b/tests/readlink.gen.test
index 755fc8b..4263234 100755
--- a/tests/readlink.gen.test
+++ b/tests/readlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
+run_strace_match_diff -xx 
diff --git a/tests/readlinkat.gen.test b/tests/readlinkat.gen.test
index 2a50299..d7de993 100755
--- a/tests/readlinkat.gen.test
+++ b/tests/readlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
+run_strace_match_diff -xx 
diff --git a/tests/reboot.c b/tests/reboot.c
index ce651dc..3f819ce 100644
--- a/tests/reboot.c
+++ b/tests/reboot.c
@@ -10,21 +10,83 @@
 # define INVALID_MAGIC 319887762
 # define INVALID_CMD 0x01234568
 
+# define STR32 "AbCdEfGhIjKlMnOpQrStUvWxYz012345"
+# define STR128 STR32 STR32 STR32 STR32
+
 int
 main(void)
 {
+	static const kernel_ulong_t bogus_magic1 =
+		(kernel_ulong_t) 0xFFFFFFFFFFFFFFFFULL;
+	static const kernel_ulong_t bogus_magic2 =
+		(kernel_ulong_t) 0xdeadfacefa57beefULL;
+	static const kernel_ulong_t bogus_cmd =
+		(kernel_ulong_t) 0xbadda7a09caffee1ULL;
 	static const char buf[] = "reboot";
-	long rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
+	static const char str256_buf[] = STR128 STR128;
+
+	long rc;
+	char *str256 = tail_memdup(str256_buf, sizeof(str256_buf) - 1);
+
+	rc = syscall(__NR_reboot, 0, 0, 0, 0);
+	printf("reboot(0 /* LINUX_REBOOT_MAGIC_??? */, "
+	       "0 /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_CAD_OFF) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_reboot, bogus_magic1, bogus_magic2, bogus_cmd, -1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_CMD_??? */) = %s\n",
+	       (unsigned int) bogus_magic1, (unsigned int) bogus_magic2,
+	       (unsigned int) bogus_cmd, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
 			  INVALID_MAGIC, LINUX_REBOOT_CMD_RESTART2, buf);
 	printf("reboot(LINUX_REBOOT_MAGIC1, %#x /* LINUX_REBOOT_MAGIC_??? */,"
-	       " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %ld %s (%m)\n",
-	       INVALID_MAGIC, buf, rc, errno2name());
+	       " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %s\n",
+	       INVALID_MAGIC, buf, sprintrc(rc));
 
 	rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
 		     LINUX_REBOOT_MAGIC2, INVALID_CMD);
 	printf("reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,"
-	       " %#x /* LINUX_REBOOT_CMD_??? */) = %ld %s (%m)\n",
-	       INVALID_CMD, rc, errno2name());
+	       " %#x /* LINUX_REBOOT_CMD_??? */) = %s\n",
+	       INVALID_CMD, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2A,
+			  LINUX_REBOOT_CMD_RESTART2, str256);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2A, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, str256, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2B,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2B, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, str256 + 1, sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2C,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 2);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2C, "
+	       "LINUX_REBOOT_CMD_RESTART2, %p) = %s\n",
+	       INVALID_MAGIC, str256 + 2, sprintrc(rc));
+
+	str256[255] = '\0';
+	rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1,
+			  LINUX_REBOOT_CMD_RESTART2, str256);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n",
+	       INVALID_MAGIC, (unsigned int) bogus_magic1, str256,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1,
+			  LINUX_REBOOT_CMD_RESTART2, str256 + 1);
+	printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "%#x /* LINUX_REBOOT_MAGIC_??? */, "
+	       "LINUX_REBOOT_CMD_RESTART2, \"%.254s\") = %s\n",
+	       INVALID_MAGIC, (unsigned int) bogus_magic1, str256 + 1,
+	       sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/reboot.gen.test b/tests/reboot.gen.test
index 0a48dea..06d2f0c 100755
--- a/tests/reboot.gen.test
+++ b/tests/reboot.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot -s 256); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff -s 256
diff --git a/tests/recvfrom.gen.test b/tests/recvfrom.gen.test
index c23780c..2741d21 100755
--- a/tests/recvfrom.gen.test
+++ b/tests/recvfrom.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests/remap_file_pages.c b/tests/remap_file_pages.c
index 452d2de..4e40963 100644
--- a/tests/remap_file_pages.c
+++ b/tests/remap_file_pages.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of remap_file_pages syscall.
  *
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,22 +33,62 @@
 #ifdef __NR_remap_file_pages
 
 # include <stdio.h>
-# include <sys/mman.h>
+# include <stdint.h>
 # include <unistd.h>
+# include <linux/mman.h>
+
+static const char *errstr;
+
+static long
+k_remap_file_pages(const kernel_ulong_t addr,
+		   const kernel_ulong_t size,
+		   const kernel_ulong_t prot,
+		   const kernel_ulong_t pgoff,
+		   const kernel_ulong_t flags)
+{
+	const long rc = syscall(__NR_remap_file_pages,
+				addr, size, prot, pgoff, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
-	const unsigned long size = (unsigned long) 0xdefaced1bad2f00dULL;
-	const unsigned long prot = PROT_READ|PROT_WRITE|PROT_EXEC;
-	const unsigned long pgoff = (unsigned long) 0xcaf3babebad4deedULL;
-	const unsigned long flags = MAP_PRIVATE|MAP_ANONYMOUS;
+	kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+	kernel_ulong_t size = (kernel_ulong_t) 0xdefaced1bad2f00dULL;
+	kernel_ulong_t prot = PROT_READ|PROT_WRITE|PROT_EXEC;
+	kernel_ulong_t pgoff = (kernel_ulong_t) 0xcaf3babebad4deedULL;
+	kernel_ulong_t flags = MAP_PRIVATE|MAP_ANONYMOUS;
 
-	long rc = syscall(__NR_remap_file_pages, addr, size, prot, pgoff, flags);
-	printf("remap_file_pages(%#lx, %lu, %s, %lu, %s) = %ld %s (%m)\n",
-	       addr, size, "PROT_READ|PROT_WRITE|PROT_EXEC", pgoff,
-	       "MAP_PRIVATE|MAP_ANONYMOUS", rc, errno2name());
+	k_remap_file_pages(addr, size, prot, pgoff, flags);
+	printf("remap_file_pages(%#jx, %ju, %s, %ju, %s) = %s\n",
+	       (uintmax_t) addr, (uintmax_t) size,
+	       "PROT_READ|PROT_WRITE|PROT_EXEC",
+	       (uintmax_t) pgoff, "MAP_PRIVATE|MAP_ANONYMOUS", errstr);
+
+#ifdef MAP_HUGETLB
+# ifndef MAP_HUGE_2MB
+#  ifndef MAP_HUGE_SHIFT
+#   define MAP_HUGE_SHIFT 26
+#  endif
+#  define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
+# endif /* !MAP_HUGE_2MB */
+	addr = (kernel_ulong_t) 0xfacefeeddeadf00dULL;
+	size = (kernel_ulong_t) 0xdefaced1bad2beefULL;
+	prot = (kernel_ulong_t) 0xdefaced00000000ULL | PROT_NONE;
+	flags = MAP_TYPE | MAP_FIXED | MAP_NORESERVE | MAP_HUGETLB | MAP_HUGE_2MB;
+
+	k_remap_file_pages(addr, size, prot, pgoff, flags);
+	printf("remap_file_pages(%#jx, %ju, %s, %ju"
+	       ", %#x /* MAP_??? */"
+	       "|MAP_FIXED|MAP_NORESERVE|MAP_HUGETLB|21<<MAP_HUGE_SHIFT)"
+	       " = %s\n",
+	       (uintmax_t) addr, (uintmax_t) size,
+	       prot == PROT_NONE ? "PROT_NONE" :
+				   "0xdefaced00000000 /* PROT_??? */",
+	       (uintmax_t) pgoff, MAP_TYPE, errstr);
+#endif /* MAP_HUGETLB */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/remap_file_pages.gen.test b/tests/remap_file_pages.gen.test
index e489473..b358988 100755
--- a/tests/remap_file_pages.gen.test
+++ b/tests/remap_file_pages.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/rename.gen.test b/tests/rename.gen.test
index 07f0180..81fb039 100755
--- a/tests/rename.gen.test
+++ b/tests/rename.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests/renameat.gen.test b/tests/renameat.gen.test
index f2879cd..dbc6e05 100755
--- a/tests/renameat.gen.test
+++ b/tests/renameat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/renameat2.gen.test b/tests/renameat2.gen.test
index cd7c34c..78251cb 100755
--- a/tests/renameat2.gen.test
+++ b/tests/renameat2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/riscv_flush_icache.c b/tests/riscv_flush_icache.c
new file mode 100644
index 0000000..8aaeda5
--- /dev/null
+++ b/tests/riscv_flush_icache.c
@@ -0,0 +1,93 @@
+/*
+ * Check decoding of riscv_flush_icache syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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>
+
+#include "scno.h"
+
+#ifdef __NR_riscv_flush_icache
+
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int main(void)
+{
+	static struct {
+		kernel_ulong_t addr;
+		const char *str;
+	} addrs[] = {
+		{ (kernel_ulong_t) (uintptr_t) ARG_STR(NULL) },
+		{ (kernel_ulong_t) 0xbadc0deddeadf157ULL,
+			sizeof(kernel_ulong_t) == 8 ? "0xbadc0deddeadf157" :
+			"0xdeadf157" },
+	};
+	static struct {
+		kernel_ulong_t val;
+		const char *str;
+	} flags[] = {
+		{ ARG_STR(0) },
+		{ 1, "SYS_RISCV_FLUSH_ICACHE_LOCAL" },
+		{ (kernel_ulong_t) 0xfacefeedfffffffeULL,
+			sizeof(kernel_ulong_t) == 8 ?
+			"0xfacefeedfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" :
+			"0xfffffffe /* SYS_RISCV_FLUSH_ICACHE_??? */" },
+		{ (kernel_ulong_t) 0xfacefeedffffffffULL,
+			sizeof(kernel_ulong_t) == 8 ?
+			"SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfacefeedfffffffe" :
+			"SYS_RISCV_FLUSH_ICACHE_LOCAL|0xfffffffe" },
+	};
+
+	for (size_t i = 0; i < ARRAY_SIZE(addrs); i++) {
+		for (size_t j = 0; j < ARRAY_SIZE(addrs); j++) {
+			for (size_t k = 0; k < ARRAY_SIZE(flags); k++) {
+				long rc = syscall(__NR_riscv_flush_icache,
+						  addrs[i].addr,
+						  addrs[j].addr,
+						  flags[k].val);
+
+				printf("riscv_flush_icache(%s, %s, %s) = %s\n",
+				       addrs[i].str, addrs[j].str, flags[k].str,
+				       sprintrc(rc));
+			}
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_riscv_flush_icache");
+
+#endif
diff --git a/tests/riscv_flush_icache.gen.test b/tests/riscv_flush_icache.gen.test
new file mode 100755
index 0000000..1a1f793
--- /dev/null
+++ b/tests/riscv_flush_icache.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (riscv_flush_icache -a34 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 
diff --git a/tests/rmdir.gen.test b/tests/rmdir.gen.test
index b511039..8b346af 100755
--- a/tests/rmdir.gen.test
+++ b/tests/rmdir.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests/rt_sigpending.gen.test b/tests/rt_sigpending.gen.test
index 0458876..d52858a 100755
--- a/tests/rt_sigpending.gen.test
+++ b/tests/rt_sigpending.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/rt_sigprocmask.gen.test b/tests/rt_sigprocmask.gen.test
index a21c6db..67fcdc0 100755
--- a/tests/rt_sigprocmask.gen.test
+++ b/tests/rt_sigprocmask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/rt_sigqueueinfo.gen.test b/tests/rt_sigqueueinfo.gen.test
index 7baf0e4..d11eecc 100755
--- a/tests/rt_sigqueueinfo.gen.test
+++ b/tests/rt_sigqueueinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests/rt_sigreturn.gen.test b/tests/rt_sigreturn.gen.test
index 0672f11..d8b153e 100755
--- a/tests/rt_sigreturn.gen.test
+++ b/tests/rt_sigreturn.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1'); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1' ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal='!USR1'
+run_strace_match_diff -esignal='!USR1' 
diff --git a/tests/rt_sigtimedwait.gen.test b/tests/rt_sigtimedwait.gen.test
index 2b18e7a..a9409ae 100755
--- a/tests/rt_sigtimedwait.gen.test
+++ b/tests/rt_sigtimedwait.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
+run_strace_match_diff -a38 
diff --git a/tests/rt_tgsigqueueinfo.gen.test b/tests/rt_tgsigqueueinfo.gen.test
index 407bbff..0539e35 100755
--- a/tests/rt_tgsigqueueinfo.gen.test
+++ b/tests/rt_tgsigqueueinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests/run.sh b/tests/run.sh
index d1b796c..208aa0f 100755
--- a/tests/run.sh
+++ b/tests/run.sh
@@ -9,4 +9,9 @@
 $TIMEOUT true > /dev/null 2>&1 ||
 	TIMEOUT=
 
-exec $TIMEOUT "$@"
+if [ $# -eq 0 ]; then
+	echo 'No command or test-file specified' >&2
+	exit 1
+fi
+
+exec $TIMEOUT "$@" < /dev/null
diff --git a/tests/s390_guarded_storage-v.c b/tests/s390_guarded_storage-v.c
new file mode 100644
index 0000000..05afd9f
--- /dev/null
+++ b/tests/s390_guarded_storage-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "s390_guarded_storage.c"
diff --git a/tests/s390_guarded_storage-v.gen.test b/tests/s390_guarded_storage-v.gen.test
new file mode 100755
index 0000000..045ff76
--- /dev/null
+++ b/tests/s390_guarded_storage-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_guarded_storage -a32 -v
diff --git a/tests/s390_guarded_storage.c b/tests/s390_guarded_storage.c
new file mode 100644
index 0000000..ab67c15
--- /dev/null
+++ b/tests/s390_guarded_storage.c
@@ -0,0 +1,229 @@
+/*
+ * Check decoding of s390_guarded_storage syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_guarded_storage && defined HAVE_ASM_GUARDED_STORAGE_H
+
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <asm/guarded_storage.h>
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
+static void
+gs_no_arg(kernel_ulong_t val, const char *val_str)
+{
+	static const kernel_ulong_t bogus_addr =
+		(kernel_ulong_t) 0xcaffeedadeadbed5ULL;
+	static const kernel_ulong_t bogus_cmd_mask =
+		(kernel_ulong_t) 0xbadc0ded00000000ULL;
+	long rc;
+
+	rc = syscall(__NR_s390_guarded_storage, val | bogus_cmd_mask,
+		     bogus_addr);
+	printf("s390_guarded_storage(%s) = %s\n", val_str, sprintrc(rc));
+}
+
+static void
+gs_print_epl(uint64_t addr, bool valid, const char *str)
+{
+	if (!valid) {
+		if (str)
+			printf("%s", str);
+		else
+			printf("%#" PRIx64, addr);
+
+		return;
+	}
+
+	struct gs_epl *gsepl = (struct gs_epl *) (uintptr_t) addr;
+
+	printf("[{");
+
+# if VERBOSE
+	if (gsepl->pad1)
+		printf("pad1=%#02x, ", gsepl->pad1);
+
+	printf("gs_eam=%#02x /* extended addressing mode: %u, "
+	       "basic addressing mode: %u */"
+	       ", gs_eci=%#02x /* CPU in TX: %u, CPU in CX: %u, "
+	       "instruction: %s */"
+	       ", gs_eai=%#02x /* DAT: %u, address space indication: %u, "
+	       "AR number: %u */, ",
+	       gsepl->gs_eam, gsepl->e, gsepl->b,
+	       gsepl->gs_eci, gsepl->tx, gsepl->cx,
+	       gsepl->in ? "LLGFGS": "LGG",
+	       gsepl->gs_eai, gsepl->t, gsepl->as, gsepl->ar);
+
+	if (gsepl->pad2)
+		printf("pad2=%#08x, ", gsepl->pad2);
+# endif /* VERBOSE */
+
+	printf("gs_eha=%#llx, ", (unsigned long long) gsepl->gs_eha);
+
+# if VERBOSE
+	printf("gs_eia=%#llx, gs_eoa=%#llx, gs_eir=%#llx, gs_era=%#llx",
+	       (unsigned long long) gsepl->gs_eia,
+	       (unsigned long long) gsepl->gs_eoa,
+	       (unsigned long long) gsepl->gs_eir,
+	       (unsigned long long) gsepl->gs_era);
+# else /* !VERBOSE */
+	printf("...");
+# endif /* VERBOSE */
+
+	printf("}]");
+}
+
+static void
+gs_set_cb(kernel_ulong_t addr, bool valid, bool epl_valid,
+	  const char *bc_str, const char *epl_str)
+{
+	static const kernel_ulong_t bogus_cmd_mask =
+		(kernel_ulong_t) 0xda7a105700000000ULL;
+
+	long rc;
+
+	printf("s390_guarded_storage(GS_SET_BC_CB, ");
+
+	if (valid) {
+		struct gs_cb *gscb = (struct gs_cb *) (uintptr_t) addr;
+
+		printf("{");
+
+		if (gscb->reserved)
+			printf("reserved=%#016llx, ",
+			       (unsigned long long) gscb->reserved);
+
+		printf("gsd=%#16llx",
+		       (unsigned long long) gscb->gsd);
+# if VERBOSE
+		printf(" /* GS origin: ");
+
+		unsigned int gsc = gscb->gsd & 0x3F;
+		unsigned int gls = (gscb->gsd >> 8) & 7;
+		bool gsc_valid = gsc >= 25 && gsc <= 56;
+
+		if (gsc_valid) {
+			uint64_t gls = gscb->gsd >> gsc;
+			int field_size = 2 + (67 - gsc) / 4;
+
+			printf("%#0*" PRIx64, field_size, gls);
+		} else {
+			printf("[invalid]");
+		}
+
+		printf(", guard load shift: %u, GS characteristic: %u */",
+		       gls, gsc);
+# endif /* VERBOSE */
+
+		printf(", gssm=%#016llx, gs_epl_a=",
+		       (unsigned long long) gscb->gssm);
+
+		gs_print_epl(gscb->gs_epl_a, epl_valid, epl_str);
+
+		printf("}");
+	} else {
+		if (bc_str)
+			printf("%s", bc_str);
+		else
+			printf("%#llx", (unsigned long long) addr);
+	}
+
+	rc = syscall(__NR_s390_guarded_storage,
+		     GS_SET_BC_CB | bogus_cmd_mask, addr);
+	printf(") = %s\n", sprintrc(rc));
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_cmd =
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL;
+	static const kernel_ulong_t bogus_addr =
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL;
+
+	struct gs_cb *gscb = tail_alloc(sizeof(*gscb));
+	struct gs_epl *gsepl = tail_alloc(sizeof(*gsepl));
+
+	long rc;
+
+	rc = syscall(__NR_s390_guarded_storage, 5, 0);
+	printf("s390_guarded_storage(0x5 /* GS_??? */, NULL) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_guarded_storage, bogus_cmd, bogus_addr);
+	printf("s390_guarded_storage(%#x /* GS_??? */, %#lx) = %s\n",
+	       (unsigned) bogus_cmd, (unsigned long) bogus_addr, sprintrc(rc));
+
+	gs_no_arg(ARG_STR(GS_BROADCAST));
+	gs_no_arg(ARG_STR(GS_CLEAR_BC_CB));
+	gs_no_arg(ARG_STR(GS_DISABLE));
+	gs_no_arg(ARG_STR(GS_ENABLE));
+
+	fill_memory(gscb, sizeof(*gscb));
+	fill_memory_ex(gsepl, sizeof(*gsepl), 0xA5, 0x5A);
+
+	gs_set_cb(0, false, false, "NULL", NULL);
+	gs_set_cb((uintptr_t) (gscb + 1), false, false, NULL, NULL);
+
+	gscb->gs_epl_a = 0;
+	gs_set_cb((uintptr_t) gscb, true, false, NULL, "NULL");
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0x5A, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) (gsepl + 1) |
+		 (sizeof(kernel_ulong_t) < sizeof(uint64_t) ?
+			0xc0debad000000000ULL : 0);
+	gs_set_cb((uintptr_t) gscb, true, false, NULL, NULL);
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0xA7, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) gsepl;
+	gs_set_cb((uintptr_t) gscb, true, true, NULL, NULL);
+
+	fill_memory_ex(gscb, sizeof(*gscb), 0x55, 0xAA);
+	fill_memory_ex(gsepl, sizeof(*gsepl), 0x5A, 0xA5);
+	gscb->gs_epl_a = (uintptr_t) gsepl;
+	gs_set_cb((uintptr_t) gscb, true, true, NULL, NULL);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_guarded_storage && HAVE_ASM_GUARDED_STORAGE_H")
+
+#endif
diff --git a/tests/s390_guarded_storage.gen.test b/tests/s390_guarded_storage.gen.test
new file mode 100755
index 0000000..28b5981
--- /dev/null
+++ b/tests/s390_guarded_storage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_guarded_storage -a32 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 
diff --git a/tests/s390_pci_mmio_read_write.c b/tests/s390_pci_mmio_read_write.c
new file mode 100644
index 0000000..b493948
--- /dev/null
+++ b/tests/s390_pci_mmio_read_write.c
@@ -0,0 +1,155 @@
+/*
+ * Check decoding of s390_pci_mmio_read and s390_pci_mmio_write syscalls.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_pci_mmio_read && defined __NR_s390_pci_mmio_write
+
+# include <errno.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static void
+do_call(bool wr, kernel_ulong_t mmio_addr, kernel_ulong_t buf,
+	kernel_ulong_t len, bool buf_valid, const char *buf_str)
+{
+	long saved_errno = 0;
+	long rc = 0;
+
+	printf("s390_pci_mmio_%s(%#llx, ", wr ? "write" : "read",
+	       (unsigned long long) mmio_addr);
+
+	if (!wr) {
+		rc = syscall(__NR_s390_pci_mmio_read, mmio_addr, buf, len);
+		saved_errno = errno;
+	}
+
+	if (buf_valid && !rc) {
+		char *buf_ptr = (char *) (uintptr_t) buf;
+
+		print_quoted_hex(buf_ptr,
+				 len > DEFAULT_STRLEN ? DEFAULT_STRLEN : len);
+
+		if (len > DEFAULT_STRLEN)
+			printf("...");
+	} else {
+		if (buf_str)
+			printf("%s", buf_str);
+		else
+			printf("%#llx", (unsigned long long) buf);
+	}
+
+	printf(", %llu) = ", (unsigned long long) len);
+
+	if (wr)
+		rc = syscall(__NR_s390_pci_mmio_write, mmio_addr, buf, len);
+	else
+		errno = saved_errno;
+
+	puts(sprintrc(rc));
+}
+
+int
+main(void)
+{
+	static const size_t buf_size = DEFAULT_STRLEN + 10;
+
+	char *buf = tail_alloc(buf_size);
+
+	bool bools[] = { true, false };
+
+	kernel_ulong_t addrs[] = {
+		0,
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL,
+	};
+
+	struct {
+		kernel_ulong_t buf;
+		const char *str;
+		size_t size;
+	} bufs[] = {
+		{ (kernel_ulong_t) ARG_STR(NULL),            0 },
+		{ (kernel_ulong_t) (buf + buf_size), NULL,   0 },
+		{ (kernel_ulong_t) (buf),            NULL,   buf_size },
+		{ (kernel_ulong_t) (buf + 9),        NULL,   buf_size - 9 },
+		{ (kernel_ulong_t) (buf + 10),       NULL,   buf_size - 10 },
+		{ (kernel_ulong_t) (buf + 16),       NULL,   buf_size - 16 },
+		{ (kernel_ulong_t) (buf + 26),       NULL,   buf_size - 26 },
+		{ (kernel_ulong_t) (buf + 28),       NULL,   buf_size - 28 },
+	};
+
+	kernel_ulong_t sizes[] = {
+		0,
+		DEFAULT_STRLEN / 2,
+		DEFAULT_STRLEN - 10,
+		DEFAULT_STRLEN,
+		DEFAULT_STRLEN + 1,
+		buf_size,
+		buf_size + 10,
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL,
+	};
+
+	unsigned int i, j, k, l;
+	unsigned int ctr = 0;
+
+	for (i = 0; i < ARRAY_SIZE(addrs); i++) {
+		for (j = 0; j < ARRAY_SIZE(bufs); j++) {
+			for (k = 0; k < ARRAY_SIZE(sizes); k++) {
+				for (l = 0; l < ARRAY_SIZE(bools); l++) {
+					bool valid = bufs[j].buf &&
+						bufs[j].size >=
+						MIN(sizes[k],
+						    DEFAULT_STRLEN + 1);
+
+					if (bufs[j].size && bools[l])
+						fill_memory_ex((char *) buf,
+							       bufs[j].size,
+							       0xC0 + ctr, 255);
+
+					do_call(bools[l], addrs[i], bufs[j].buf,
+						sizes[k], valid, bufs[j].str);
+
+					ctr++;
+				}
+			}
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_pci_mmio_read && __NR_s390_pci_mmio_write");
+
+#endif
diff --git a/tests/s390_pci_mmio_read_write.gen.test b/tests/s390_pci_mmio_read_write.gen.test
new file mode 100755
index 0000000..cf32e0b
--- /dev/null
+++ b/tests/s390_pci_mmio_read_write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_pci_mmio_read_write -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
diff --git a/tests/s390_runtime_instr.c b/tests/s390_runtime_instr.c
new file mode 100644
index 0000000..861bbd4
--- /dev/null
+++ b/tests/s390_runtime_instr.c
@@ -0,0 +1,99 @@
+/*
+ * Check decoding of s390_runtime_instr syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_s390_runtime_instr
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	static struct {
+		kernel_ulong_t cmd;
+		const char * cmd_str;
+	} cmd_args[] = {
+		{ 0, "???" },
+		{ 4, "???" },
+		{ (kernel_ulong_t) 0xdeafbeefdeadc0deULL, "???" },
+		{ 2, "STOP",  },
+	};
+
+	static struct {
+		kernel_ulong_t sig;
+		const char * sig_str;
+	} start_sig_args[] = {
+		{ 0, "SIG_0" },
+		{ (kernel_ulong_t) 0xfacefeedac0ffeedULL, NULL },
+		{ ARG_STR(SIGALRM) },
+		{ 33, "SIGRT_1" },
+		{ 63, "SIGRT_31" },
+	};
+
+	unsigned int i;
+	long rc;
+
+	for (i = 0; i < ARRAY_SIZE(cmd_args); i++) {
+		rc = syscall(__NR_s390_runtime_instr, cmd_args[i].cmd, 0xdead);
+		printf("s390_runtime_instr(%d /* S390_RUNTIME_INSTR_%s */) = "
+		       "%s\n",
+		       (int) cmd_args[i].cmd, cmd_args[i].cmd_str,
+		       sprintrc(rc));
+	}
+
+	for (i = 0; i < ARRAY_SIZE(start_sig_args); i++) {
+		long saved_errno;
+
+		rc = syscall(__NR_s390_runtime_instr, 1, start_sig_args[i].sig);
+		saved_errno = errno;
+		printf("s390_runtime_instr(1 /* S390_RUNTIME_INSTR_START */, ");
+
+		if (start_sig_args[i].sig_str)
+			printf("%s", start_sig_args[i].sig_str);
+		else
+			printf("%d", (int) start_sig_args[i].sig);
+
+		errno = saved_errno;
+		printf(") = %s\n", sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_s390_runtime_instr")
+
+#endif
diff --git a/tests/s390_runtime_instr.gen.test b/tests/s390_runtime_instr.gen.test
new file mode 100755
index 0000000..9197dc3
--- /dev/null
+++ b/tests/s390_runtime_instr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_runtime_instr -a50 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a50 
diff --git a/tests/s390_sthyi-v.c b/tests/s390_sthyi-v.c
new file mode 100644
index 0000000..8605520
--- /dev/null
+++ b/tests/s390_sthyi-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "s390_sthyi.c"
diff --git a/tests/s390_sthyi-v.gen.test b/tests/s390_sthyi-v.gen.test
new file mode 100755
index 0000000..27ab447
--- /dev/null
+++ b/tests/s390_sthyi-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_sthyi-v -e trace=s390_sthyi -a47 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=s390_sthyi -a47 -v
diff --git a/tests/s390_sthyi.c b/tests/s390_sthyi.c
new file mode 100644
index 0000000..8b241dd
--- /dev/null
+++ b/tests/s390_sthyi.c
@@ -0,0 +1,786 @@
+/*
+ * Check decoding of s390_sthyi syscall.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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 HAVE_ICONV_H && defined HAVE_ICONV_OPEN && defined __NR_s390_sthyi
+
+# include <errno.h>
+# include <iconv.h>
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <sys/user.h>
+
+# define EBCDIC_MAX_LEN 16
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
+static bool
+print_0x8(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	if (!zero && !buf[offs])
+		return false;
+
+	printf("%s=%#02hhx", prefix, buf[offs]);
+
+	return true;
+}
+
+static bool
+print_u8(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	if (!zero && !buf[offs])
+		return false;
+
+	printf("%s=%hhu", prefix, buf[offs]);
+
+	return true;
+}
+
+static bool
+print_u16(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	uint16_t val = *(uint16_t *) (buf + offs);
+
+	if (!zero && !val)
+		return false;
+
+	printf("%s=%" PRIu16, prefix, val);
+
+	return true;
+}
+
+static bool
+print_x32(const char *prefix, unsigned char *buf, unsigned int offs, bool zero)
+{
+	uint32_t val = *(uint32_t *) (buf + offs);
+
+	if (!zero && !val)
+		return false;
+
+	printf("%s=%#" PRIx32, prefix, val);
+
+	return true;
+}
+
+static bool
+print_weight(const char *prefix, unsigned char *buf, unsigned int offs,
+	     bool zero)
+{
+	uint32_t val = *(uint32_t *) (buf + offs);
+
+	if (print_x32(prefix, buf, offs, zero)) {
+		if (val)
+			printf(" /* %u %u/65536 cores */",
+			       val >> 16, val & 0xFFFF);
+		else
+			printf(" /* unlimited */");
+
+		return true;
+	}
+
+	return false;
+}
+
+static char *
+ebcdic2ascii(unsigned char *ebcdic, size_t size)
+{
+	static char ascii_buf[EBCDIC_MAX_LEN];
+
+	char *ebcdic_pos = (char *) ebcdic;
+	char *ascii_pos = ascii_buf;
+	size_t ebcdic_left = size;
+	size_t ascii_left = size;
+	size_t ret;
+
+	iconv_t cd = iconv_open("ASCII", "EBCDICUS");
+
+	if (size > sizeof(ascii_buf))
+		error_msg_and_fail("ebcdic2ascii: EBCDIC string is too big: "
+				   "%zu (maximum is %zu)",
+				   size, sizeof(ascii_buf));
+	if (cd == (iconv_t) -1)
+		perror_msg_and_fail("ebcdic2ascii: unable to allocate a "
+				    "conversion descriptior for converting "
+				    "EBCDIC to ASCII");
+
+	while ((ret = iconv(cd, &ebcdic_pos, &ebcdic_left,
+	    &ascii_pos, &ascii_left)) == (size_t) -1) {
+		switch (errno) {
+		case EILSEQ:
+		case EINVAL: /* That one is quite unexpected, actually */
+			if (!ebcdic_left || !ascii_left)
+				goto ebcdic2ascii_end;
+
+			*ascii_pos++ = ' ';
+			ebcdic_pos++;
+			ebcdic_left--;
+
+			break;
+
+		case E2BIG:
+			perror_msg_and_fail("ebcdic2ascii: ran out of "
+					    "ASCII buffer unexpectedly");
+		default:
+			perror_msg_and_fail("ebcdic2ascii: unexpected error");
+		}
+	}
+
+ebcdic2ascii_end:
+	iconv_close(cd);
+
+	if (ebcdic_left != ascii_left)
+		error_msg_and_fail("ebcdic2ascii: ASCII string differs in size "
+				   "from EBCDIC");
+
+	return ascii_buf;
+}
+
+# if VERBOSE
+static bool
+is_empty(unsigned char *ptr, size_t size)
+{
+	size_t i;
+
+	for (i = 0; !*ptr && i < size; ptr++, i++)
+		;
+
+	return i == size;
+}
+# endif /* !VERBOSE */
+
+static bool
+print_ebcdic(const char *prefix, unsigned char *addr, unsigned int offs,
+	     size_t size, bool zero, bool blank)
+{
+	const char *ascii = ebcdic2ascii(addr + offs, size);
+
+	if (!zero) {
+		size_t i;
+
+		for (i = 0; (addr[offs + i] == (blank ? 64 : 0)) && (i < size);
+		    i++)
+			;
+
+		if (i == size)
+			return false;
+	}
+
+	printf("%s=", prefix);
+	print_quoted_hex((char *) (addr + offs), size);
+	printf(" /* ");
+	print_quoted_memory(ascii, size);
+	printf(" */");
+
+	return true;
+}
+
+static void
+print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
+			unsigned int len_pos, bool mt)
+{
+	uint16_t offs = *(uint16_t *) (buf + offs_pos);
+	uint16_t hdr_size = *(uint16_t *) (buf + len_pos);
+	unsigned char *cur;
+
+	if (!offs)
+		return;
+	if (hdr_size < 32)
+		error_msg_and_fail("sthyi: hypervisor %d section is too small "
+			           "(got %hu, 32 expected)", level, hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* hypervisor %d */ {infyflg1", level);
+	print_0x8("", cur, 0, true);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - guest CPU usage had limiting is using "
+			       "the consumption method");
+			printed = true;
+		}
+		if (cur[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - LIMITHARD caps use prorated core time "
+			       "for capping");
+			printed = true;
+		}
+		if (cur[0] & 0x3F) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x3F);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infyflg2", cur, 1, false);
+	print_0x8(", infyval1", cur, 2, false);
+	print_0x8(", infyval2", cur, 3, false);
+
+	print_u8(", infytype", cur, 4, true);
+	if (cur[4] == 1)
+		printf(" /* z/VM is the hypervisor */");
+	else
+		printf(" /* unknown hypervisor type */");
+
+	if (cur[5])
+		printf(", reserved_1__=\"\\x%#02hhx\"", cur[5]);
+
+	print_u8(", infycpt",  cur, 6, mt);
+	print_u8(", infyiflt", cur, 7, mt);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infysyid", cur, 8,  8, VERBOSE, true);
+	print_ebcdic(", infyclnm", cur, 16, 8, VERBOSE, true);
+
+	print_u16(", infyscps", cur, 24, VERBOSE);
+	print_u16(", infydcps", cur, 26, VERBOSE);
+	print_u16(", infysifl", cur, 28, VERBOSE);
+	print_u16(", infydifl", cur, 30, VERBOSE);
+
+# if VERBOSE
+	if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 32), hdr_size - 32);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+}
+
+static void
+print_guest_header(unsigned char *buf, int level, unsigned int offs_pos,
+		   unsigned int len_pos)
+{
+	uint16_t offs = *(uint16_t *) (buf + offs_pos);
+	uint16_t hdr_size = *(uint16_t *) (buf + len_pos);
+	unsigned char *cur;
+
+	if (!offs)
+		return;
+	if (hdr_size < 56)
+		error_msg_and_fail("sthyi: guest %d section is too small "
+			           "(got %hu, 56 expected)", level, hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* guest %d */ {infgflg1", level);
+	print_0x8("", cur, 0, true);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - guest is mobility enabled");
+			printed = true;
+		}
+		if (cur[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - guest has multiple virtual CPU types");
+			printed = true;
+		}
+		if (cur[0] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - guest CP dispatch type has LIMITHARD "
+			       "cap");
+			printed = true;
+		}
+		if (cur[0] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - guest IFL dispatch type has LIMITHARD "
+			       "cap");
+			printed = true;
+		}
+		if (cur[0] & 0x08) {
+			if (printed)
+				printf(", ");
+			printf("0x08 - virtual CPs are thread dispatched");
+			printed = true;
+		}
+		if (cur[0] & 0x04) {
+			if (printed)
+				printf(", ");
+			printf("0x04 - virtual IFLs are thread dispatched");
+			printed = true;
+		}
+		if (cur[0] & 0x3) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x3);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infgflg2", cur, 1, false);
+	print_0x8(", infgval1", cur, 2, false);
+	print_0x8(", infgval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infgusid", cur, 4, 8, true, false);
+
+	print_u16(", infgscps", cur, 12, VERBOSE);
+	print_u16(", infgdcps", cur, 14, VERBOSE);
+
+# if VERBOSE
+	print_u8(", infgcpdt", cur, 16, true);
+	if (cur[16] == 0)
+		printf(" /* General Purpose (CP) */");
+	else
+		printf(" /* unknown */");
+
+	if (cur[17] || cur[18] || cur[19])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[17], cur[18], cur[19]);
+# endif /* !VERBOSE */
+
+	print_weight(", infgcpcc", cur, 20, VERBOSE);
+
+	print_u16(", infgsifl", cur, 24, VERBOSE);
+	print_u16(", infgdifl", cur, 26, VERBOSE);
+
+# if VERBOSE
+	print_u8(", infgifdt", cur, 28, true);
+	if (cur[28] == 0)
+		printf(" /* General Purpose (CP) */");
+	else if (cur[28] == 3)
+		printf(" /* Integrated Facility for Linux (IFL) */");
+	else
+		printf(" /* unknown */");
+
+	if (cur[29] || cur[30] || cur[31])
+		printf(", reserved_2__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[29], cur[30], cur[31]);
+# endif /* !VERBOSE */
+
+	print_weight(", infgifcc", cur, 32, VERBOSE);
+
+	print_0x8(", infgpflg", cur, 36, true);
+# if VERBOSE
+	if (cur[36]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[36] & 0x80) {
+			printf("0x80 - CPU pool's CP virtual type has "
+			       "LIMITHARD cap");
+			printed = true;
+		}
+		if (cur[36] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - CPU pool's CP virtual type has "
+			       "CAPACITY cap");
+			printed = true;
+		}
+		if (cur[36] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - CPU pool's IFL virtual type has "
+			       "LIMITHARD cap");
+			printed = true;
+		}
+		if (cur[36] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - CPU pool's IFL virtual type has "
+			       "CAPACITY cap");
+			printed = true;
+		}
+		if (cur[36] & 0x08) {
+			if (printed)
+				printf(", ");
+			printf("0x08 - CPU pool uses prorated core time");
+			printed = true;
+		}
+		if (cur[36] & 0x7) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[36] & 0x7);
+		}
+		printf(" */");
+	}
+
+	if (cur[37] || cur[38] || cur[39])
+		printf(", reserved_3__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       cur[37], cur[38], cur[39]);
+
+	print_ebcdic(", infgpnam", cur, 40, 8, false, true);
+
+	print_weight(", infgpccc", cur, 48, true);
+	print_weight(", infgpicc", cur, 52, true);
+
+	if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 56), hdr_size - 56);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+}
+
+static void
+print_sthyi(unsigned char *buf)
+{
+	unsigned char *cur;
+	uint16_t hdr_size;
+	uint16_t offs;
+	bool mt = false;
+
+	hdr_size = *(uint16_t *) (buf + 10);
+	if (hdr_size < 44)
+		error_msg_and_fail("sthyi: header section is too small "
+			           "(got %hu, 44 expected)", hdr_size);
+
+	/* INFHFLG1 */
+	print_0x8("{/* header */ {infhflg1", buf, 0, true);
+# if VERBOSE
+	if (buf[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (buf[0] & 0x80) {
+			printf("0x80 - Global Performance Data unavailable");
+			printed = true;
+		}
+		if (buf[0] & 0x40) {
+			if (printed)
+				printf(", ");
+			printf("0x40 - One or more hypervisor levels below "
+			       "this level does not support the STHYI "
+			       "instruction");
+			printed = true;
+		}
+		if (buf[0] & 0x20) {
+			if (printed)
+				printf(", ");
+			printf("0x20 - Virtualization stack is incomplete");
+			printed = true;
+		}
+		if (buf[0] & 0x10) {
+			if (printed)
+				printf(", ");
+			printf("0x10 - Execution environment is not within a "
+			       "logical partition");
+			printed = true;
+		}
+		if (buf[0] & 0xF) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", buf[0] & 0xF);
+		}
+		printf(" */");
+	}
+
+	print_0x8(", infhflg2", buf, 1, false);
+	print_0x8(", infhval1", buf, 2, false);
+	print_0x8(", infhval2", buf, 3, false);
+
+	/* Reserved */
+	if (buf[4] || buf[5] || buf[6])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+		       buf[4], buf[5], buf[6]);
+
+	print_u8(", infhygct", buf, 7, true);
+	print_u16(", infhtotl", buf, 8, true);
+	print_u16(", infhdln", buf, 10, true);
+	print_u16(", infmoff", buf, 12, true);
+	print_u16(", infmlen", buf, 14, true);
+	print_u16(", infpoff", buf, 16, true);
+	print_u16(", infplen", buf, 18, true);
+	print_u16(", infhoff1", buf, 20, true);
+	print_u16(", infhlen1", buf, 22, true);
+	print_u16(", infgoff1", buf, 24, true);
+	print_u16(", infglen1", buf, 26, true);
+	print_u16(", infhoff2", buf, 28, true);
+	print_u16(", infhlen2", buf, 30, true);
+	print_u16(", infgoff2", buf, 32, true);
+	print_u16(", infglen2", buf, 34, true);
+	print_u16(", infhoff3", buf, 36, true);
+	print_u16(", infhlen3", buf, 38, true);
+	print_u16(", infgoff3", buf, 40, true);
+	print_u16(", infglen3", buf, 42, true);
+
+	if (hdr_size > 44 && !is_empty(buf + 44, hdr_size - 44)) {
+		printf(", ");
+		print_quoted_hex((char *) (buf + 44), hdr_size - 44);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+	/* Machine header */
+	offs = *(uint16_t *) (buf + 12);
+	if (!offs)
+		goto partition_hdr;
+
+	hdr_size = *(uint16_t *) (buf + 14);
+	if (hdr_size < 60)
+		error_msg_and_fail("sthyi: machine section is too small "
+			           "(got %hu, 60 expected)", hdr_size);
+
+	cur = buf + offs;
+
+	printf(", /* machine */ {");
+
+# if VERBOSE
+	print_0x8("infmflg1", cur, 0, false);
+	if (cur[0])
+		printf(", ");
+	print_0x8("infmflg2", cur, 1, false);
+	if (cur[1])
+		printf(", ");
+# endif /* !VERBOSE */
+	print_0x8("infmval1", cur, 2, true);
+
+	bool cnt_valid = cur[2] & 0x80;
+# if VERBOSE
+	bool id_valid = cur[2] & 0x40;
+	bool name_valid = cur[2] & 0x20;
+
+	printf(" /* processor count validity: %d, machine ID validity: %d, "
+	       "machine name validity: %d",
+	       !!cnt_valid, !!id_valid, !!name_valid);
+	if (cur[2] & 0x1F)
+		printf(", %#hhx - ???", cur[2] & 0x1F);
+	printf(" */");
+	print_0x8(", infmval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_u16(", infmscps", cur, 4,  cnt_valid);
+	print_u16(", infmdcps", cur, 6,  cnt_valid);
+	print_u16(", infmsifl", cur, 8,  cnt_valid);
+	print_u16(", infmdifl", cur, 10, cnt_valid);
+
+# if VERBOSE
+	print_ebcdic(", infmname", cur, 12, 8, name_valid, false);
+
+	print_ebcdic(", infmtype", cur, 20, 4,  id_valid, false);
+	print_ebcdic(", infmmanu", cur, 24, 16, id_valid, false);
+	print_ebcdic(", infmseq",  cur, 40, 16, id_valid, false);
+	print_ebcdic(", infmpman", cur, 56, 4,  id_valid, false);
+
+	if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 60), hdr_size - 60);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+partition_hdr:
+	/* Partition header */
+	offs = *(uint16_t *) (buf + 16);
+	if (!offs)
+		goto hv_hdr;
+
+	hdr_size = *(uint16_t *) (buf + 18);
+	if (hdr_size < 56)
+		error_msg_and_fail("sthyi: partition section is too small "
+			           "(got %hu, 56 expected)", hdr_size);
+
+	cur = buf + offs;
+
+	print_0x8(", /* partition */ {infpflg1", cur, 0, true);
+	mt = !!(cur[0] & 0x80);
+# if VERBOSE
+	if (cur[0]) {
+		bool printed = false;
+
+		printf(" /* ");
+		if (cur[0] & 0x80) {
+			printf("0x80 - multithreading is enabled");
+			printed = true;
+		}
+		if (cur[0] & 0x7F) {
+			if (printed)
+				printf(", ");
+			printf("%#hhx - ???", cur[0] & 0x7F);
+		}
+		printf(" */");
+	}
+	print_0x8(", infpflg2", cur, 1, false);
+# endif /* !VERBOSE */
+	print_0x8(", infpval1", cur, 2, true);
+
+	bool pcnt_valid  = cur[2] & 0x80;
+	bool pid_valid   = cur[2] & 0x10;
+# if VERBOSE
+	bool pwcap_valid = cur[2] & 0x40;
+	bool pacap_valid = cur[2] & 0x20;
+	bool lpar_valid  = cur[2] & 0x08;
+# endif /* !VERBOSE */
+
+# if VERBOSE
+	printf(" /* processor count validity: %d, partition weight-based "
+	       "capacity validity: %d, partition absolute capacity validity: "
+	       "%d, partition ID validity: %d, LPAR group absolute capacity "
+	       "capping information validity: %d",
+	       !!pcnt_valid, !!pwcap_valid, !!pacap_valid, !!pid_valid,
+	       !!lpar_valid);
+	if (cur[2] & 0x7)
+		printf(", %#hhx - ???", cur[2] & 0x7);
+	printf(" */");
+
+	print_0x8(", infpval2", cur, 3, false);
+# endif /* !VERBOSE */
+
+	print_u16(", infppnum", cur, 4, pid_valid);
+
+	print_u16(", infpscps", cur, 6,  pcnt_valid);
+	print_u16(", infpdcps", cur, 8,  pcnt_valid);
+	print_u16(", infpsifl", cur, 10, pcnt_valid);
+	print_u16(", infpdifl", cur, 12, pcnt_valid);
+
+# if VERBOSE
+	if (cur[14] || cur[15])
+		printf(", reserved_1__=\"\\x%#02hhx\\x%#02hhx\"",
+		       cur[14], cur[15]);
+# endif /* !VERBOSE */
+
+	print_ebcdic(", infppnam", cur, 16, 8, pid_valid, false);
+
+# if VERBOSE
+	print_weight(", infpwbcp", cur, 24, pwcap_valid);
+	print_weight(", infpabcp", cur, 28, pacap_valid);
+	print_weight(", infpwbif", cur, 32, pwcap_valid);
+	print_weight(", infpabif", cur, 36, pacap_valid);
+
+	if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
+
+		print_weight(", infplgcp", cur, 48, false);
+		print_weight(", infplgif", cur, 52, false);
+	} else {
+		if (lpar_valid) {
+			printf(", infplgnm=");
+			print_quoted_hex((char *) (cur + 40), 8);
+		}
+
+		print_x32(", infplgcp", cur, 48, false);
+		print_x32(", infplgif", cur, 52, false);
+	}
+
+	if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+		printf(", ");
+		print_quoted_hex((char *) (cur + 56), hdr_size - 56);
+	}
+# else /* !VERBOSE */
+	printf(", ...");
+# endif /* !VERBOSE */
+
+	printf("}");
+
+hv_hdr:
+	/* Hypervisor/guest headers */
+	print_hypervisor_header(buf, 1, 20, 22, mt);
+	print_guest_header(buf, 1, 24, 26);
+	print_hypervisor_header(buf, 2, 28, 30, mt);
+	print_guest_header(buf, 2, 32, 34);
+	print_hypervisor_header(buf, 3, 36, 38, mt);
+	print_guest_header(buf, 3, 40, 42);
+
+	printf("}");
+}
+
+int
+main(void)
+{
+	static const kernel_ulong_t bogus_func =
+		(kernel_ulong_t) 0xdeafbeefdeadc0deULL;
+	static const kernel_ulong_t bogus_resp_buf =
+		(kernel_ulong_t) 0xfacefeedac0ffeedULL;
+	static const kernel_ulong_t bogus_ret_code =
+		(kernel_ulong_t) 0xf00dfa57decaffedULL;
+	static const kernel_ulong_t bogus_flags =
+		(kernel_ulong_t) 0xfee1deadfa57beefULL;
+
+	unsigned char *buf = tail_alloc(PAGE_SIZE);
+	uint64_t *ret = tail_alloc(sizeof(*ret));
+
+	long rc;
+
+	rc = syscall(__NR_s390_sthyi, 0, 0, 0, 0);
+	printf("s390_sthyi(STHYI_FC_CP_IFL_CAP, NULL, NULL, 0) = %s\n",
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, bogus_func, bogus_resp_buf,
+		     bogus_ret_code, bogus_flags);
+	printf("s390_sthyi(%#llx /* STHYI_FC_??? */, %#llx, %#llx, %#llx) = "
+	       "%s\n",
+	       (unsigned long long) bogus_func,
+	       (unsigned long long) bogus_resp_buf,
+	       (unsigned long long) bogus_ret_code,
+	       (unsigned long long) bogus_flags,
+	       sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, bogus_func, buf, ret, 0);
+	printf("s390_sthyi(%#llx /* STHYI_FC_??? */, %p, %p, 0) = %s\n",
+	       (unsigned long long) bogus_func, buf, ret, sprintrc(rc));
+
+	rc = syscall(__NR_s390_sthyi, 0, buf, ret, 0);
+	if (rc)
+		error_msg_and_fail("syscall(__NR_s390_sthyi, 0, buf, ret, 0) "
+				   "returned unexpected value of %ld", rc);
+
+	printf("s390_sthyi(STHYI_FC_CP_IFL_CAP, ");
+	print_sthyi(buf);
+	printf(", [0], 0) = 0\n");
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_ICONV_H && HAVE_ICONV_OPEN && __NR_s390_sthyi")
+
+#endif
diff --git a/tests/s390_sthyi.gen.test b/tests/s390_sthyi.gen.test
new file mode 100755
index 0000000..cf27137
--- /dev/null
+++ b/tests/s390_sthyi.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (s390_sthyi -a47 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a47 
diff --git a/tests/sched_rr_get_interval.gen.test b/tests/sched_rr_get_interval.gen.test
index 493de64..02aad00 100755
--- a/tests/sched_rr_get_interval.gen.test
+++ b/tests/sched_rr_get_interval.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests/sched_yield.gen.test b/tests/sched_yield.gen.test
index 3f4542f..4b035fd 100755
--- a/tests/sched_yield.gen.test
+++ b/tests/sched_yield.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests/select-P.c b/tests/select-P.c
new file mode 100644
index 0000000..868deed
--- /dev/null
+++ b/tests/select-P.c
@@ -0,0 +1,2 @@
+#define PATH_TRACING_FD 9
+#include "select.c"
diff --git a/tests/select-P.gen.test b/tests/select-P.gen.test
new file mode 100755
index 0000000..2f6fc7b
--- /dev/null
+++ b/tests/select-P.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select-P -a36 -e trace=select -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=select -P /dev/full 9>>/dev/full
diff --git a/tests/select.gen.test b/tests/select.gen.test
index cb3b8f1..2383614 100755
--- a/tests/select.gen.test
+++ b/tests/select.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests/sendfile.gen.test b/tests/sendfile.gen.test
index 433878f..d32ef3a 100755
--- a/tests/sendfile.gen.test
+++ b/tests/sendfile.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/sendfile64.gen.test b/tests/sendfile64.gen.test
index 1655dd3..24f0746 100755
--- a/tests/sendfile64.gen.test
+++ b/tests/sendfile64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
+run_strace_match_diff -a29 
diff --git a/tests/set_ptracer_any.c b/tests/set_ptracer_any.c
index 3b4ea2c..3c11296 100644
--- a/tests/set_ptracer_any.c
+++ b/tests/set_ptracer_any.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,10 +37,16 @@
 {
 	if (argc < 2)
 		return 99;
-#if defined HAVE_PRCTL && defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY
-	/* Turn off restrictions on tracing if applicable.  If the options
+#ifdef HAVE_PRCTL
+	/* Turn off restrictions on tracing if applicable.  If the command
 	 * aren't available on this system, that's OK too.  */
-	(void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
+# ifndef PR_SET_PTRACER
+#  define PR_SET_PTRACER 0x59616d61
+# endif
+# ifndef PR_SET_PTRACER_ANY
+#  define PR_SET_PTRACER_ANY -1UL
+# endif
+	(void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
 #endif
 	if (write(1, "\n", 1) != 1) {
 		perror("write");
diff --git a/tests/setdomainname.gen.test b/tests/setdomainname.gen.test
index 2b12e08..1f29563 100755
--- a/tests/setdomainname.gen.test
+++ b/tests/setdomainname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/setfsgid.gen.test b/tests/setfsgid.gen.test
index caff401..bbb30cc 100755
--- a/tests/setfsgid.gen.test
+++ b/tests/setfsgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests/setfsgid32.gen.test b/tests/setfsgid32.gen.test
index fae29e0..63b3eca 100755
--- a/tests/setfsgid32.gen.test
+++ b/tests/setfsgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests/setfsuid.gen.test b/tests/setfsuid.gen.test
index e4c4d20..5896b30 100755
--- a/tests/setfsuid.gen.test
+++ b/tests/setfsuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests/setfsuid32.gen.test b/tests/setfsuid32.gen.test
index b6cd67d..52d0820 100755
--- a/tests/setfsuid32.gen.test
+++ b/tests/setfsuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests/setgid.gen.test b/tests/setgid.gen.test
index f10add6..be188d1 100755
--- a/tests/setgid.gen.test
+++ b/tests/setgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/setgid32.gen.test b/tests/setgid32.gen.test
index 26f194e..9020b80 100755
--- a/tests/setgid32.gen.test
+++ b/tests/setgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests/sethostname.gen.test b/tests/sethostname.gen.test
index 2827b1d..d68ed18 100755
--- a/tests/sethostname.gen.test
+++ b/tests/sethostname.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
+run_strace_match_diff -a22 
diff --git a/tests/setns.gen.test b/tests/setns.gen.test
index 45fcc60..e25738b 100755
--- a/tests/setns.gen.test
+++ b/tests/setns.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests/setregid.gen.test b/tests/setregid.gen.test
index 0125d7a..f84b1ac 100755
--- a/tests/setregid.gen.test
+++ b/tests/setregid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests/setregid32.gen.test b/tests/setregid32.gen.test
index 24f1505..7320c8c 100755
--- a/tests/setregid32.gen.test
+++ b/tests/setregid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/setresgid.gen.test b/tests/setresgid.gen.test
index ca5bc6b..792313c 100755
--- a/tests/setresgid.gen.test
+++ b/tests/setresgid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests/setresgid32.gen.test b/tests/setresgid32.gen.test
index a5edb90..6ecf936 100755
--- a/tests/setresgid32.gen.test
+++ b/tests/setresgid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests/setresuid.gen.test b/tests/setresuid.gen.test
index a6e0664..a0dcb4b 100755
--- a/tests/setresuid.gen.test
+++ b/tests/setresuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
+run_strace_match_diff -a19 
diff --git a/tests/setresuid32.gen.test b/tests/setresuid32.gen.test
index 3fbf36b..a9f4396 100755
--- a/tests/setresuid32.gen.test
+++ b/tests/setresuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
+run_strace_match_diff -a21 
diff --git a/tests/setreuid.gen.test b/tests/setreuid.gen.test
index 4c3dc93..0ecaef0 100755
--- a/tests/setreuid.gen.test
+++ b/tests/setreuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests/setreuid32.gen.test b/tests/setreuid32.gen.test
index d179053..3eb0e95 100755
--- a/tests/setreuid32.gen.test
+++ b/tests/setreuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/setrlimit.gen.test b/tests/setrlimit.gen.test
index dfe2da3..0d1508d 100755
--- a/tests/setrlimit.gen.test
+++ b/tests/setrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a27 
diff --git a/tests/setugid.c b/tests/setugid.c
index aba277c..6ceec7f 100644
--- a/tests/setugid.c
+++ b/tests/setugid.c
@@ -2,6 +2,7 @@
  * Check decoding of setuid/setgid/setuid32/setgid32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -61,6 +62,8 @@
 		const unsigned int num = (unsigned UGID_TYPE) tests[i];
 		long expected;
 
+		errno = 0;
+
 		if (num == ugid)
 			expected = 0;
 		else if ((UGID_TYPE) num == (UGID_TYPE) -1U)
@@ -77,8 +80,9 @@
 				       SYSCALL_NAME, ugid, errstr);
 				break;
 			}
-			perror_msg_and_fail("%s(%#lx) != %ld",
-					    SYSCALL_NAME, tests[i], expected);
+			perror_msg_and_fail("%s(%#lx) = %ld != %ld",
+					    SYSCALL_NAME, tests[i],
+					    rc, expected);
 		}
 
 		printf("%s(", SYSCALL_NAME);
diff --git a/tests/setuid.gen.test b/tests/setuid.gen.test
index 98d470f..00aeb7a 100755
--- a/tests/setuid.gen.test
+++ b/tests/setuid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/setuid32.gen.test b/tests/setuid32.gen.test
index 7d15495..ac8df8f 100755
--- a/tests/setuid32.gen.test
+++ b/tests/setuid32.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
+run_strace_match_diff -a12 
diff --git a/tests/shmxt.c b/tests/shmxt.c
index 23cc7cc..398667c 100644
--- a/tests/shmxt.c
+++ b/tests/shmxt.c
@@ -18,6 +18,10 @@
 # define SHMAT "shmat"
 #endif
 
+#ifndef SHM_EXEC
+# define SHM_EXEC 0100000
+#endif
+
 int
 main(void)
 {
@@ -34,8 +38,8 @@
 	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,
+	printf("%s(%d, %p, SHM_RDONLY|SHM_RND|SHM_REMAP|SHM_EXEC|%#x) = %s\n",
+	       SHMAT, bogus_shmid, bogus_shmaddr, bogus_shmflg & ~0xf000,
 	       sprintrc(rc));
 
 	shmat(id, NULL, SHM_REMAP);
@@ -50,18 +54,31 @@
 	rc = shmdt(NULL);
 	printf("shmdt(NULL) = %s\n", sprintrc(rc));
 
-	if (shmdt(shmaddr))
-		perror_msg_and_skip("shmdt");
-	printf("shmdt(%p) = 0\n", shmaddr);
+	rc = shmdt(shmaddr);
+	printf("shmdt(%p) = %s\n", shmaddr, sprintrc(rc));
 
 	++shmaddr;
 	void *shmaddr2 = shmat(id, shmaddr, SHM_RND);
 	if (shmaddr2 == (void *)(-1))
 		printf("%s(%d, %p, SHM_RND) = -1 %s (%m)\n",
 		       SHMAT, id, shmaddr, errno2name());
-	else
+	else {
 		printf("%s(%d, %p, SHM_RND) = %p\n",
 		       SHMAT, id, shmaddr, shmaddr2);
+		rc = shmdt(shmaddr2);
+		printf("shmdt(%p) = %s\n", shmaddr2, sprintrc(rc));
+	}
+
+	shmaddr = shmat(id, NULL, SHM_RDONLY|SHM_EXEC);
+	if (shmaddr == (void *)(-1))
+		printf("%s(%d, NULL, SHM_RDONLY|SHM_EXEC) = %s\n",
+		       SHMAT, id, sprintrc(-1));
+	else {
+		printf("%s(%d, NULL, SHM_RDONLY|SHM_EXEC) = %p\n",
+		       SHMAT, id, shmaddr);
+		rc = shmdt(shmaddr);
+		printf("shmdt(%p) = %s\n", shmaddr, sprintrc(rc));
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/shutdown.gen.test b/tests/shutdown.gen.test
index 3412513..7fde46e 100755
--- a/tests/shutdown.gen.test
+++ b/tests/shutdown.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/sigaction.gen.test b/tests/sigaction.gen.test
index dee340e..1db6b3a 100755
--- a/tests/sigaction.gen.test
+++ b/tests/sigaction.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigaction -a31); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigaction -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
+run_strace_match_diff -a31 
diff --git a/tests/signalfd4.gen.test b/tests/signalfd4.gen.test
index e91a9fe..dee4274 100755
--- a/tests/signalfd4.gen.test
+++ b/tests/signalfd4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/sigpending.gen.test b/tests/sigpending.gen.test
index 0f4259a..c061868 100755
--- a/tests/sigpending.gen.test
+++ b/tests/sigpending.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigpending -a15); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigpending -a15 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
+run_strace_match_diff -a15 
diff --git a/tests/sigprocmask.gen.test b/tests/sigprocmask.gen.test
index 44a508c..065b74d 100755
--- a/tests/sigprocmask.gen.test
+++ b/tests/sigprocmask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigprocmask -a34); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigprocmask -a34 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+run_strace_match_diff -a34 
diff --git a/tests/sigreturn.gen.test b/tests/sigreturn.gen.test
index f317e89..3b67c9d 100755
--- a/tests/sigreturn.gen.test
+++ b/tests/sigreturn.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1'); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1' ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal='!USR1'
+run_strace_match_diff -esignal='!USR1' 
diff --git a/tests/socketcall.gen.test b/tests/socketcall.gen.test
index 95c45fd..d18b036 100755
--- a/tests/socketcall.gen.test
+++ b/tests/socketcall.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
+run_strace_match_diff -a20 
diff --git a/tests/sockname.c b/tests/sockname.c
index 5872671..bba9a89 100644
--- a/tests/sockname.c
+++ b/tests/sockname.c
@@ -2,7 +2,7 @@
  * Check decoding of sockname family syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,7 +42,9 @@
 # error TEST_SYSCALL_NAME must be defined
 #endif
 
-#define TEST_SYSCALL_STR STRINGIFY_VAL(TEST_SYSCALL_NAME)
+#ifndef TEST_SYSCALL_STR
+# define TEST_SYSCALL_STR STRINGIFY_VAL(TEST_SYSCALL_NAME)
+#endif
 #define TEST_SOCKET TEST_SYSCALL_STR ".socket"
 
 #ifdef TEST_SYSCALL_PREPARE
diff --git a/tests/sockopt-sol_netlink.c b/tests/sockopt-sol_netlink.c
new file mode 100644
index 0000000..066920c
--- /dev/null
+++ b/tests/sockopt-sol_netlink.c
@@ -0,0 +1,213 @@
+/*
+ * Check decoding of getsockopt and setsockopt for SOL_NETLINK level.
+ *
+ * Copyright (c) 2017 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 "netlink.h"
+#include <stdio.h>
+
+#ifndef SOL_NETLINK
+# define SOL_NETLINK 270
+#endif
+
+static int rc;
+static const char *errstr;
+
+static int
+get_sockopt(int fd, int name, void *val, socklen_t *len)
+{
+	rc = getsockopt(fd, SOL_NETLINK, name, val, len);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+static int
+set_sockopt(int fd, int name, void *val, socklen_t len)
+{
+	rc = setsockopt(fd, SOL_NETLINK, name, val, len);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	static const struct {
+		int val;
+		const char *str;
+	} names[] = {
+#ifdef NETLINK_ADD_MEMBERSHIP
+		{ ARG_STR(NETLINK_ADD_MEMBERSHIP) },
+#endif
+#ifdef NETLINK_DROP_MEMBERSHIP
+		{ ARG_STR(NETLINK_DROP_MEMBERSHIP) },
+#endif
+#ifdef NETLINK_PKTINFO
+		{ ARG_STR(NETLINK_PKTINFO) },
+#endif
+#ifdef NETLINK_BROADCAST_ERROR
+		{ ARG_STR(NETLINK_BROADCAST_ERROR) },
+#endif
+#ifdef NETLINK_NO_ENOBUFS
+		{ ARG_STR(NETLINK_NO_ENOBUFS) },
+#endif
+#ifdef NETLINK_RX_RING
+		{ ARG_STR(NETLINK_RX_RING) },
+#endif
+#ifdef NETLINK_TX_RING
+		{ ARG_STR(NETLINK_TX_RING) },
+#endif
+#ifdef NETLINK_LISTEN_ALL_NSID
+		{ ARG_STR(NETLINK_LISTEN_ALL_NSID) },
+#endif
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		{ ARG_STR(NETLINK_LIST_MEMBERSHIPS) },
+#endif
+#ifdef NETLINK_CAP_ACK
+		{ ARG_STR(NETLINK_CAP_ACK) },
+#endif
+#ifdef NETLINK_EXT_ACK
+		{ ARG_STR(NETLINK_EXT_ACK) },
+#endif
+	};
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val);
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	void *const efault = val + 1;
+        int fd = socket(AF_NETLINK, SOCK_RAW, 0);
+        if (fd < 0)
+                perror_msg_and_skip("socket AF_NETLINK SOCK_RAW");
+	unsigned int i;
+
+	for (i = 0; i < ARRAY_SIZE(names); ++i) {
+		/* getsockopt */
+
+		/* classic */
+		*len = sizeof(*val);
+		get_sockopt(fd, names[i].val, val, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, ", fd, names[i].str);
+		if (rc)
+			printf("%p", val);
+		else
+			printf("[%d]", *val);
+		printf(", [%d]) = %s\n", *len, errstr);
+
+		/* optlen larger than necessary - shortened */
+		*len = sizeof(*val) + 1;
+		get_sockopt(fd, names[i].val, val, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, ", fd, names[i].str);
+		if (rc)
+			printf("%p", val);
+		else
+			printf("[%d]", *val);
+		printf(", [%d", (int) sizeof(*val) + 1);
+		if ((int) sizeof(*val) + 1 != *len)
+			printf("->%d", *len);
+		printf("]) = %s\n", errstr);
+
+		/* zero optlen - print returned optlen */
+		*len = 0;
+		get_sockopt(fd, names[i].val, NULL, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, NULL, [0",
+		       fd, names[i].str);
+		if (*len)
+			printf("->%d", *len);
+		printf("]) = %s\n", errstr);
+
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		if (names[i].val != NETLINK_LIST_MEMBERSHIPS) {
+#endif
+			/* optlen shorter than necessary - print address */
+			*len = sizeof(*val) - 1;
+			get_sockopt(fd, names[i].val, val, len);
+			printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d",
+			       fd, names[i].str, val, (int) sizeof(*val) - 1);
+			if ((int) sizeof(*val) - 1 != *len)
+				printf("->%d", *len);
+			printf("]) = %s\n", errstr);
+#ifdef NETLINK_LIST_MEMBERSHIPS
+		} else {
+			/* optlen shorter than required for the first element */
+			*len = sizeof(*val) - 1;
+			get_sockopt(fd, names[i].val, efault, len);
+			printf("getsockopt(%d, SOL_NETLINK, %s, ",
+			       fd, names[i].str);
+			if (rc)
+				printf("%p", efault);
+			else
+				printf("[]");
+			printf(", [%d", (int) sizeof(*val) - 1);
+			if ((int) sizeof(*val) - 1 != *len)
+				printf("->%d", *len);
+			printf("]) = %s\n", errstr);
+		}
+#endif
+
+		/* optval EFAULT - print address */
+		*len = sizeof(*val);
+		get_sockopt(fd, names[i].val, efault, len);
+		printf("getsockopt(%d, SOL_NETLINK, %s, %p, [%d]) = %s\n",
+		       fd, names[i].str, efault, *len, errstr);
+
+		/* optlen EFAULT - print address */
+		get_sockopt(fd, names[i].val, val, len + 1);
+		printf("getsockopt(%d, SOL_NETLINK, %s, %p, %p) = %s\n",
+		       fd, names[i].str, val, len + 1, errstr);
+
+		/* setsockopt */
+
+		/* classic */
+		*val = 0xdefaced;
+		set_sockopt(fd, names[i].val, val, sizeof(*val));
+		printf("setsockopt(%d, SOL_NETLINK, %s, [%d], %d) = %s\n",
+		       fd, names[i].str, *val, (int) sizeof(*val), errstr);
+
+		/* optlen larger than necessary - shortened */
+		set_sockopt(fd, names[i].val, val, sizeof(*val) + 1);
+		printf("setsockopt(%d, SOL_NETLINK, %s, [%d], %d) = %s\n",
+		       fd, names[i].str, *val, (int) sizeof(*val) + 1, errstr);
+
+		/* optlen < 0 - print address */
+		set_sockopt(fd, names[i].val, val, -1U);
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, -1) = %s\n",
+		       fd, names[i].str, val, errstr);
+
+		/* optlen smaller than necessary - print address */
+		set_sockopt(fd, names[i].val, val, sizeof(*val) - 1);
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, %d) = %s\n",
+		       fd, names[i].str, val, (int) sizeof(*val) - 1, errstr);
+
+		/* optval EFAULT - print address */
+		set_sockopt(fd, names[i].val, efault, sizeof(*val));
+		printf("setsockopt(%d, SOL_NETLINK, %s, %p, %d) = %s\n",
+		       fd, names[i].str, efault, (int) sizeof(*val), errstr);
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/sockopt-sol_netlink.gen.test b/tests/sockopt-sol_netlink.gen.test
new file mode 100755
index 0000000..a2ba06d
--- /dev/null
+++ b/tests/sockopt-sol_netlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sockopt-sol_netlink -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests/splice.gen.test b/tests/splice.gen.test
index 83c8406..7566080 100755
--- a/tests/splice.gen.test
+++ b/tests/splice.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/stack-fcall-0.c b/tests/stack-fcall-0.c
index 12a260d..edd6d32 100644
--- a/tests/stack-fcall-0.c
+++ b/tests/stack-fcall-0.c
@@ -1,4 +1,4 @@
-int f1(int i);
+#include "stack-fcall.h"
 
 int f0(int i)
 {
diff --git a/tests/stack-fcall-1.c b/tests/stack-fcall-1.c
index 8716702..5d0bf0e 100644
--- a/tests/stack-fcall-1.c
+++ b/tests/stack-fcall-1.c
@@ -1,4 +1,4 @@
-int f2(int i);
+#include "stack-fcall.h"
 
 int f1(int i)
 {
diff --git a/tests/stack-fcall-2.c b/tests/stack-fcall-2.c
index 19f8cf8..e164320 100644
--- a/tests/stack-fcall-2.c
+++ b/tests/stack-fcall-2.c
@@ -1,4 +1,4 @@
-int f3(int i);
+#include "stack-fcall.h"
 
 int f2(int i)
 {
diff --git a/tests/stack-fcall-3.c b/tests/stack-fcall-3.c
index 3af1667..98726d8 100644
--- a/tests/stack-fcall-3.c
+++ b/tests/stack-fcall-3.c
@@ -1,4 +1,5 @@
 #include <unistd.h>
+#include "stack-fcall.h"
 
 int f3(int i)
 {
diff --git a/tests/stack-fcall-mangled-0.c b/tests/stack-fcall-mangled-0.c
new file mode 100644
index 0000000..4754940
--- /dev/null
+++ b/tests/stack-fcall-mangled-0.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-0.c"
diff --git a/tests/stack-fcall-mangled-1.c b/tests/stack-fcall-mangled-1.c
new file mode 100644
index 0000000..492c562
--- /dev/null
+++ b/tests/stack-fcall-mangled-1.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-1.c"
diff --git a/tests/stack-fcall-mangled-2.c b/tests/stack-fcall-mangled-2.c
new file mode 100644
index 0000000..eb7c362
--- /dev/null
+++ b/tests/stack-fcall-mangled-2.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-2.c"
diff --git a/tests/stack-fcall-mangled-3.c b/tests/stack-fcall-mangled-3.c
new file mode 100644
index 0000000..98f738b
--- /dev/null
+++ b/tests/stack-fcall-mangled-3.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall-3.c"
diff --git a/tests/stack-fcall-mangled.c b/tests/stack-fcall-mangled.c
new file mode 100644
index 0000000..6786205
--- /dev/null
+++ b/tests/stack-fcall-mangled.c
@@ -0,0 +1,2 @@
+#define MANGLE
+#include "stack-fcall.c"
diff --git a/tests/stack-fcall.c b/tests/stack-fcall.c
index fc9ee5f..e0ec3b1 100644
--- a/tests/stack-fcall.c
+++ b/tests/stack-fcall.c
@@ -1,4 +1,4 @@
-int f0(int i);
+#include "stack-fcall.h"
 
 int main(int argc, char **argv)
 {
diff --git a/tests/stack-fcall.h b/tests/stack-fcall.h
new file mode 100644
index 0000000..1a83bad
--- /dev/null
+++ b/tests/stack-fcall.h
@@ -0,0 +1,13 @@
+#ifdef MANGLE
+
+#define f0 _ZN2ns2f0Ei
+#define f1 _ZN2ns2f1Ei
+#define f2 _ZN2ns2f2Ei
+#define f3 _ZN2ns2f3Ei
+
+#endif
+
+int f0(int i);
+int f1(int i);
+int f2(int i);
+int f3(int i);
diff --git a/tests/statfs.gen.test b/tests/statfs.gen.test
index 19b26dd..32204a1 100755
--- a/tests/statfs.gen.test
+++ b/tests/statfs.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/statfs64.gen.test b/tests/statfs64.gen.test
index 66409f9..8f6f06f 100755
--- a/tests/statfs64.gen.test
+++ b/tests/statfs64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
+run_strace_match_diff -a23 
diff --git a/tests/strace-V.test b/tests/strace-V.test
index ec1ca05..eb05e86 100755
--- a/tests/strace-V.test
+++ b/tests/strace-V.test
@@ -39,8 +39,21 @@
 }
 
 option_unwind=$(getoption USE_LIBUNWIND " stack-unwind")
+option_demangle=$(getoption USE_DEMANGLE " stack-demangle")
 
-features="${option_unwind}"
+option_m32=
+option_mx32=
+case "$STRACE_NATIVE_ARCH" in
+x86_64)
+	option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+	option_mx32=$(getoption HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
+	;;
+aarch64|powerpc64|riscv|s390x|sparc64|tile|x32)
+	option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+	;;
+esac
+
+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
 [ -n "$features" ] || features=" (none)"
 
 cat > "$EXP" << __EOF__
diff --git a/tests/strace-k-demangle.test b/tests/strace-k-demangle.test
new file mode 100755
index 0000000..1616449
--- /dev/null
+++ b/tests/strace-k-demangle.test
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Check strace -k symbol names demangling.
+
+test_prog=../stack-fcall-mangled
+expected='getpid ns::f3(int) ns::f2(int) ns::f1(int) ns::f0(int) main '
+
+. "${srcdir=.}"/strace-k.test
diff --git a/tests/strace-k.test b/tests/strace-k.test
index e68951e..2a21a9d 100755
--- a/tests/strace-k.test
+++ b/tests/strace-k.test
@@ -38,11 +38,13 @@
 check_prog sed
 check_prog tr
 
-run_prog ../stack-fcall
+: ${test_prog=../stack-fcall}
+: ${expected='getpid f3 f2 f1 f0 main '}
+
+run_prog "$test_prog"
 run_strace -e getpid -k $args
 
-expected='getpid f3 f2 f1 f0 main '
-result=$(sed -r -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" || {
@@ -50,5 +52,3 @@
 	echo "result: \"$result\""
 	dump_log_and_fail_with "$STRACE $args output mismatch"
 }
-
-exit 0
diff --git a/tests/symlink.gen.test b/tests/symlink.gen.test
index f41668c..8cedfbf 100755
--- a/tests/symlink.gen.test
+++ b/tests/symlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+run_strace_match_diff -a34 
diff --git a/tests/symlinkat.gen.test b/tests/symlinkat.gen.test
index 39e624a..12455dd 100755
--- a/tests/symlinkat.gen.test
+++ b/tests/symlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/sync.gen.test b/tests/sync.gen.test
index 4aaf8c7..8436a1f 100755
--- a/tests/sync.gen.test
+++ b/tests/sync.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
+run_strace_match_diff -a7 
diff --git a/tests/sync_file_range.gen.test b/tests/sync_file_range.gen.test
index 0693c12..2f41c7d 100755
--- a/tests/sync_file_range.gen.test
+++ b/tests/sync_file_range.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/sync_file_range2.gen.test b/tests/sync_file_range2.gen.test
index 23046b6..d432647 100755
--- a/tests/sync_file_range2.gen.test
+++ b/tests/sync_file_range2.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/syntax.sh b/tests/syntax.sh
index 0a0d2a5..b1c8fdc 100644
--- a/tests/syntax.sh
+++ b/tests/syntax.sh
@@ -50,13 +50,11 @@
 			"strace $* failed to print expected diagnostics"
 }
 
-strace_exp="${STRACE##* }"
-
 check_e()
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
+$STRACE_EXE: $pattern
 __EOF__
 	check_exit_status_and_stderr "$@"
 }
@@ -65,7 +63,7 @@
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
+$STRACE_EXE: $pattern
 __EOF__
 	check_exit_status_and_stderr_using_grep "$@"
 }
@@ -74,8 +72,8 @@
 {
 	local pattern="$1"; shift
 	cat > "$EXP" << __EOF__
-$strace_exp: $pattern
-Try '$strace_exp -h' for more information.
+$STRACE_EXE: $pattern
+Try '$STRACE_EXE -h' for more information.
 __EOF__
 	check_exit_status_and_stderr "$@"
 }
diff --git a/tests/sysinfo.gen.test b/tests/sysinfo.gen.test
index e6469d5..fa46237 100755
--- a/tests/sysinfo.gen.test
+++ b/tests/sysinfo.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
+run_strace_match_diff -a14 
diff --git a/tests/syslog.gen.test b/tests/syslog.gen.test
index 5423d5b..5707a3e 100755
--- a/tests/syslog.gen.test
+++ b/tests/syslog.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
+run_strace_match_diff -a36 
diff --git a/tests/tee.gen.test b/tests/tee.gen.test
index 2a87fae..b5fbfc0 100755
--- a/tests/tee.gen.test
+++ b/tests/tee.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/test_printpath.c b/tests/test_printpath.c
index 5f482f2..c485a26 100644
--- a/tests/test_printpath.c
+++ b/tests/test_printpath.c
@@ -2,6 +2,7 @@
  * Test printpath/umovestr.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,10 +30,10 @@
 
 #include "tests.h"
 
+#include <limits.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 #include "test_ucopy.h"
 
diff --git a/tests/test_ucopy.c b/tests/test_ucopy.c
index 9ddffbc..09f809a 100644
--- a/tests/test_ucopy.c
+++ b/tests/test_ucopy.c
@@ -2,6 +2,7 @@
  * Test whether process_vm_readv and PTRACE_PEEKDATA work.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,10 +31,10 @@
 #include "tests.h"
 
 #include <errno.h>
+#include <sys/ptrace.h>
 #include <signal.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <sys/ptrace.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
 
diff --git a/tests/tests.h b/tests/tests.h
index d453e3e..1c66c26 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2017 The strace developers.
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -75,6 +75,15 @@
 void perror_msg_and_skip(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+#ifndef perror_msg_and_fail
+# define perror_msg_and_fail(fmt_, ...) \
+	perror_msg_and_fail("%s:%d: " fmt_, __FILE__, __LINE__, ##__VA_ARGS__)
+#endif
+#ifndef perror_msg_and_fail
+# define error_msg_and_fail(fmt_, ...) \
+	error_msg_and_fail("%s:%d: " fmt_, __FILE__, __LINE__, ##__VA_ARGS__)
+#endif
+
 /* Stat the specified file and skip the test if the stat call failed. */
 void skip_if_unavailable(const char *);
 
diff --git a/tests/time.gen.test b/tests/time.gen.test
index ed7ec69..3269b16 100755
--- a/tests/time.gen.test
+++ b/tests/time.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/timer_create.gen.test b/tests/timer_create.gen.test
index 6b4c543..bf65261 100755
--- a/tests/timer_create.gen.test
+++ b/tests/timer_create.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/times.gen.test b/tests/times.gen.test
index ca4ebbe..06b036f 100755
--- a/tests/times.gen.test
+++ b/tests/times.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests/truncate.gen.test b/tests/truncate.gen.test
index 0410e73..7a631ef 100755
--- a/tests/truncate.gen.test
+++ b/tests/truncate.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/truncate64.gen.test b/tests/truncate64.gen.test
index dae0fe6..2b368f4 100755
--- a/tests/truncate64.gen.test
+++ b/tests/truncate64.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64  ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff 
+run_strace_match_diff  
diff --git a/tests/ugetrlimit.gen.test b/tests/ugetrlimit.gen.test
index ff27134..a412fe6 100755
--- a/tests/ugetrlimit.gen.test
+++ b/tests/ugetrlimit.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/umask.gen.test b/tests/umask.gen.test
index 60af5e9..5d6c318 100755
--- a/tests/umask.gen.test
+++ b/tests/umask.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests/umovestr3.c b/tests/umovestr3.c
index cf2fa7d..74f0e93 100644
--- a/tests/umovestr3.c
+++ b/tests/umovestr3.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,9 +27,9 @@
  */
 
 #include "tests.h"
+#include <limits.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <sys/param.h>
 
 int
 main(void)
diff --git a/tests/unlink.gen.test b/tests/unlink.gen.test
index 7b8522b..63bc0c4 100755
--- a/tests/unlink.gen.test
+++ b/tests/unlink.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
+run_strace_match_diff -a24 
diff --git a/tests/unlinkat.gen.test b/tests/unlinkat.gen.test
index 5a77c6a..5de7908 100755
--- a/tests/unlinkat.gen.test
+++ b/tests/unlinkat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
+run_strace_match_diff -a35 
diff --git a/tests/unshare.gen.test b/tests/unshare.gen.test
index 077a458..782ce47 100755
--- a/tests/unshare.gen.test
+++ b/tests/unshare.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
+run_strace_match_diff -a11 
diff --git a/tests/userfaultfd.gen.test b/tests/userfaultfd.gen.test
index 4735146..61b6988 100755
--- a/tests/userfaultfd.gen.test
+++ b/tests/userfaultfd.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
+run_strace_match_diff -a38 
diff --git a/tests/ustat.gen.test b/tests/ustat.gen.test
index f64b28d..2b09f7e 100755
--- a/tests/ustat.gen.test
+++ b/tests/ustat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests/utime.gen.test b/tests/utime.gen.test
index 7270556..58ebc5a 100755
--- a/tests/utime.gen.test
+++ b/tests/utime.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
+run_strace_match_diff -a16 
diff --git a/tests/utimensat.gen.test b/tests/utimensat.gen.test
index a4d6656..07dffa3 100755
--- a/tests/utimensat.gen.test
+++ b/tests/utimensat.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
+run_strace_match_diff -a33 
diff --git a/tests/utimes.gen.test b/tests/utimes.gen.test
index 37ed29c..559243e 100755
--- a/tests/utimes.gen.test
+++ b/tests/utimes.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
+run_strace_match_diff -a17 
diff --git a/tests/vhangup.gen.test b/tests/vhangup.gen.test
index 7ac84e5..da19216 100755
--- a/tests/vhangup.gen.test
+++ b/tests/vhangup.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
+run_strace_match_diff -a10 
diff --git a/tests/vmsplice.gen.test b/tests/vmsplice.gen.test
index fe6a07d..0dc18b6 100755
--- a/tests/vmsplice.gen.test
+++ b/tests/vmsplice.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
+run_strace_match_diff -ewrite=1 
diff --git a/tests/wait4.gen.test b/tests/wait4.gen.test
index ae04915..22a982f 100755
--- a/tests/wait4.gen.test
+++ b/tests/wait4.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests/waitid.gen.test b/tests/waitid.gen.test
index 59f4022..22edd67 100755
--- a/tests/waitid.gen.test
+++ b/tests/waitid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
+run_strace_match_diff -esignal=none 
diff --git a/tests/waitpid.gen.test b/tests/waitpid.gen.test
index d91e298..a5678a1 100755
--- a/tests/waitpid.gen.test
+++ b/tests/waitpid.gen.test
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
+run_strace_match_diff -a28 
diff --git a/tests/xet_thread_area_x86.c b/tests/xet_thread_area_x86.c
new file mode 100644
index 0000000..68f495c
--- /dev/null
+++ b/tests/xet_thread_area_x86.c
@@ -0,0 +1,227 @@
+/*
+ * Check decoding of set_thread_area and get_thread_area syscalls on x86
+ * architecture.
+ *
+ * Copyright (c) 2018 The strace developers.
+ * 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_get_thread_area && defined __NR_set_thread_area \
+ && defined HAVE_STRUCT_USER_DESC
+
+# include <assert.h>
+# include <errno.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# include "print_user_desc.c"
+
+long errnum;
+
+static void
+printptr(kernel_ulong_t ptr, const char *ptr_str)
+{
+	if (ptr_str)
+		printf("%s", ptr_str);
+	else
+		printf("%#llx", zero_extend_signed_to_ull(ptr));
+}
+
+/**
+ * Perform set_thread_area call along with printing the expected output.
+ *
+ * @param ptr_val Pointer to thread area argument.
+ * @param ptr_str Explicit string representation of the argument.
+ * @param valid   Whether argument points to the valid memory and its contents
+ *                should be decoded.
+ * @param entry_number_str explicit decoding of the entry_number field.
+ */
+static long
+set_thread_area(kernel_ulong_t ptr_val, const char *ptr_str, bool valid,
+		const char *entry_number_str)
+{
+	struct user_desc *ptr = (struct user_desc *) (uintptr_t) ptr_val;
+	long rc = -1;
+	int saved_errno;
+
+	rc = syscall(__NR_set_thread_area, ptr_val);
+	saved_errno = errno;
+	printf("set_thread_area(");
+
+	if (valid)
+		print_user_desc(ptr, entry_number_str);
+	else
+		printptr(ptr_val, ptr_str);
+
+	errno = saved_errno;
+	printf(") = %s", sprintrc(rc));
+	if (!rc)
+		printf(" (entry_number=%u)", ptr->entry_number);
+
+	puts("");
+
+	return rc;
+}
+
+/**
+ * Perform get_thread_are call along with printing the expected output and
+ * checking the result against the argument of the previous set_thread_area
+ * call, if it had place.
+ *
+ * @param ptr_val  Pointer to thread area argument.
+ * @param ptr_str  Explicit string representation of the argument.
+ * @param valid    Whether argument points to the valid memory and its contents
+ *                 should be decoded.
+ * @param set_rc   Return code of the previous set_thread_area call.
+ * @param expected The value of the argument passed to the previous
+ *                 set_thread_area call.
+ */
+static void
+get_thread_area(kernel_ulong_t ptr_val, const char *ptr_str, bool valid,
+		long set_rc, kernel_ulong_t expected)
+{
+	struct user_desc *ptr = (struct user_desc *) (uintptr_t) ptr_val;
+	struct user_desc *expected_ptr =
+		(struct user_desc *) (uintptr_t) expected;
+	int saved_errno;
+	long rc;
+
+	rc = syscall(__NR_get_thread_area, ptr_val);
+	saved_errno = errno;
+
+	printf("get_thread_area(");
+
+	if (valid && !rc) {
+		if (!set_rc) {
+			assert(ptr->entry_number == expected_ptr->entry_number);
+			assert(ptr->base_addr    == expected_ptr->base_addr);
+			assert(ptr->limit        == expected_ptr->limit);
+			assert(ptr->seg_32bit    == expected_ptr->seg_32bit);
+			assert(ptr->contents     == expected_ptr->contents);
+			assert(ptr->read_exec_only ==
+			       expected_ptr->read_exec_only);
+			assert(ptr->limit_in_pages ==
+			       expected_ptr->limit_in_pages);
+			assert(ptr->seg_not_present ==
+			       expected_ptr->seg_not_present);
+			assert(ptr->useable      == expected_ptr->useable);
+			/*
+			 * We do not check lm as 32-bit processes ignore it, and
+			 * only 32-bit processes can successfully execute
+			 * get_thread_area.
+			 */
+		}
+
+		print_user_desc(ptr,
+				(int) ptr->entry_number == -1 ? "-1" : NULL);
+	} else {
+		printptr(ptr_val, ptr_str);
+	}
+
+	errno = saved_errno;
+	printf(") = %s\n", sprintrc(rc));
+}
+
+int main(void)
+{
+	struct user_desc *ta1 = tail_alloc(sizeof(*ta1));
+	struct user_desc *ta2 = tail_alloc(sizeof(*ta2));
+	unsigned *bogus_entry_number = tail_alloc(sizeof(*bogus_entry_number));
+
+	long set_rc = -1;
+
+	/*
+	 * Let's do some weird syscall, it will mark the beginning of our
+	 * expected output.
+	 */
+	syscall(__NR_reboot, 0, 0, 0, 0);
+
+	set_rc = set_thread_area((uintptr_t) ARG_STR(NULL), false, NULL);
+	get_thread_area((uintptr_t) ARG_STR(NULL), false, set_rc,
+			(uintptr_t) NULL);
+
+	set_rc = set_thread_area(-1, NULL, false, NULL);
+	get_thread_area(-1, NULL, false, set_rc, -1);
+
+	fill_memory(ta1, sizeof(*ta1));
+	fill_memory_ex(ta2, sizeof(*ta2), 0xA5, 0x5A);
+
+	set_thread_area((uintptr_t) (ta1 + 1), NULL, false, NULL);
+
+	set_thread_area((uintptr_t) bogus_entry_number, NULL, false, NULL);
+
+	set_thread_area((uintptr_t) ta1, NULL, true, NULL);
+
+	ta1->entry_number = -1;
+	ta1->base_addr = 0;
+	ta1->limit = 0;
+	ta1->contents = 1;
+	ta1->seg_32bit = 1;
+	ta1->seg_not_present = 0;
+
+	set_rc = set_thread_area((uintptr_t) ta1, NULL, true, "-1");
+
+	*bogus_entry_number = 2718281828U;
+	get_thread_area((uintptr_t) bogus_entry_number,
+			"{entry_number=2718281828, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	/* That one should return -EFAULT on i386 */
+	*bogus_entry_number = 12;
+	get_thread_area((uintptr_t) bogus_entry_number,
+			"{entry_number=12, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = 3141592653U;
+	get_thread_area((uintptr_t) ta2, "{entry_number=3141592653, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = -1;
+	get_thread_area((uintptr_t) ta2, "{entry_number=-1, ...}",
+			false, set_rc, (uintptr_t) ta1);
+
+	ta2->entry_number = ta1->entry_number;
+	assert(set_rc == 0 || (int) ta2->entry_number == -1);
+	get_thread_area((uintptr_t) ta2, "{entry_number=-1, ...}",
+			true, set_rc, (uintptr_t) ta1);
+
+	puts("+++ exited with 0 +++");
+
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_get_thread_area && __NR_set_thread_area"
+		    " && HAVE_STRUCT_USER_DESC");
+
+#endif
diff --git a/tests/xet_thread_area_x86.test b/tests/xet_thread_area_x86.test
new file mode 100755
index 0000000..863f7e2
--- /dev/null
+++ b/tests/xet_thread_area_x86.test
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Check decoding of set_thread_area and get_thread_area syscalls on x86.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog > /dev/null
+run_strace -a22 -e trace=reboot,/[gs]et_thread_area $args > "$EXP"
+sed '0,/^reboot/d' "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests/xselect.c b/tests/xselect.c
index a25ebcc..b1e3766 100644
--- a/tests/xselect.c
+++ b/tests/xselect.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of select/_newselect syscalls.
+ *
+ * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
@@ -30,127 +32,442 @@
  * Based on test by Dr. David Alan Gilbert <dave@treblig.org>
  */
 
-#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
-static fd_set set[0x1000000 / sizeof(fd_set)];
+static const char *errstr;
 
-int main(void)
+static long
+xselect(const kernel_ulong_t nfds,
+	const kernel_ulong_t rs,
+	const kernel_ulong_t ws,
+	const kernel_ulong_t es,
+	const kernel_ulong_t tv)
+#ifndef xselect
 {
-	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
-	struct timeval tv_in;
-	int fds[2];
-	long rc;
+	long rc = syscall(TEST_SYSCALL_NR,
+			  F8ILL_KULONG_MASK | nfds, rs, ws, es, tv);
+	errstr = sprintrc(rc);
+	return rc;
+}
+#else
+	;
+#endif
 
+#define XSELECT(expected_, ...)						\
+	do {								\
+		long rc = xselect(__VA_ARGS__);				\
+		if (rc != (expected_))					\
+			perror_msg_and_fail(TEST_SYSCALL_STR		\
+					    ": expected %d"		\
+					    ", returned %ld",		\
+					    (expected_), rc);		\
+	} while (0)							\
+/* End of XSELECT definition. */
+
+int
+main(void)
+{
+#ifdef PATH_TRACING_FD
+	skip_if_unavailable("/proc/self/fd/");
+#endif
+
+	for (int i = 3; i < FD_SETSIZE; ++i) {
+#ifdef PATH_TRACING_FD
+		if (i == PATH_TRACING_FD)
+			continue;
+#endif
+		(void) close(i);
+	}
+
+	int fds[2];
 	if (pipe(fds))
 		perror_msg_and_fail("pipe");
 
+	static const int smallset_size = sizeof(kernel_ulong_t) * 8;
+	const int nfds = fds[1] + 1;
+	if (nfds > smallset_size)
+		error_msg_and_fail("nfds[%d] > smallset_size[%d]\n",
+				   nfds, smallset_size);
+
+	struct timeval tv_in = { 0, 123 };
+	struct timeval *const tv = tail_memdup(&tv_in, sizeof(tv_in));
+	const uintptr_t a_tv = (uintptr_t) tv;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_rs);
+	fd_set *const rs = (void *) l_rs;
+	const uintptr_t a_rs = (uintptr_t) rs;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_ws);
+	fd_set *const ws = (void *) l_ws;
+	const uintptr_t a_ws = (uintptr_t) ws;
+
+	TAIL_ALLOC_OBJECT_VAR_PTR(kernel_ulong_t, l_es);
+	fd_set *const es = (void *) l_es;
+	const uintptr_t a_es = (uintptr_t) es;
+
+	long rc;
+
 	/*
-	 * Start with a nice simple select.
+	 * An equivalent of nanosleep.
 	 */
-	FD_ZERO(set);
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
-	if (rc < 0)
-		perror_msg_and_skip(TEST_SYSCALL_STR);
-	assert(rc == 1);
-	printf("%s(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
-	       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-	       fds[0], fds[1], fds[0], fds[1]);
+	if (xselect(0, 0, 0, 0, a_tv)) {
+		if (errno == ENOSYS)
+			perror_msg_and_skip(TEST_SYSCALL_STR);
+		else
+			perror_msg_and_fail(TEST_SYSCALL_STR);
+	}
+#ifndef PATH_TRACING_FD
+	printf("%s(0, NULL, NULL, NULL, {tv_sec=%lld, tv_usec=%llu})"
+	       " = 0 (Timeout)\n",
+	       TEST_SYSCALL_STR, (long long) tv_in.tv_sec,
+	       zero_extend_signed_to_ull(tv_in.tv_usec));
+#endif
+
+	/* EFAULT on tv argument */
+	XSELECT(-1, 0, 0, 0, 0, a_tv + 1);
+#ifndef PATH_TRACING_FD
+	printf("%s(0, NULL, NULL, NULL, %#lx) = %s\n",
+	       TEST_SYSCALL_STR, (unsigned long) a_tv + 1, errstr);
+#endif
+
+	/*
+	 * Start with a nice simple select with the same set.
+	 */
+	for (int i = nfds; i <= smallset_size; ++i) {
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		XSELECT(1, i, a_rs, a_rs, a_rs, 0);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d %d], [%d %d], [%d %d], NULL) = 1 ()\n",
+		       TEST_SYSCALL_STR, i, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1]);
+#else
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		XSELECT(i > PATH_TRACING_FD ? 3 : 1, i, a_rs, a_rs, a_rs, 0);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d %d], [%d %d %d], [%d %d %d]"
+			       ", NULL) = 3 ()\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       fds[0], fds[1], PATH_TRACING_FD);
+		}
+#endif
+	}
 
 	/*
 	 * Odd timeout.
 	 */
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = 0xdeadbeefU;
-	tv->tv_usec = 0xfacefeedU;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+	tv_in.tv_sec = 0xdeadbeefU;
+	tv_in.tv_usec = 0xfacefeedU;
+	memcpy(tv, &tv_in, sizeof(tv_in));
+	rc = xselect(nfds, a_rs, a_rs, a_rs, a_tv);
 	if (rc < 0) {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
-		       zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       errstr);
+#endif /* !PATH_TRACING_FD */
 	} else {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
 		       " (left {tv_sec=%lld, tv_usec=%llu})\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
 		       zero_extend_signed_to_ull(tv_in.tv_usec),
 		       rc, (long long) tv->tv_sec,
 		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* !PATH_TRACING_FD */
 	}
 
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-	tv->tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	/*
+	 * Very odd timeout.
+	 */
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+	tv_in.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv_in.tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
+	memcpy(tv, &tv_in, sizeof(tv_in));
+	rc = xselect(nfds, a_rs, a_rs, a_rs, a_tv);
 	if (rc < 0) {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
-		       zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       errstr);
+#endif /* PATH_TRACING_FD */
 	} else {
+#ifndef PATH_TRACING_FD
 		printf("%s(%d, [%d %d], [%d %d], [%d %d]"
 		       ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
 		       " (left {tv_sec=%lld, tv_usec=%llu})\n",
-		       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-		       fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+		       TEST_SYSCALL_STR, nfds, fds[0], fds[1],
+		       fds[0], fds[1], fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
 		       zero_extend_signed_to_ull(tv_in.tv_usec),
 		       rc, (long long) tv->tv_sec,
 		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
 	}
 
 	/*
 	 * Another simple one, with a timeout.
 	 */
-	FD_SET(1, set);
-	FD_SET(2, set);
-	FD_SET(fds[0], set);
-	FD_SET(fds[1], set);
-	tv->tv_sec = 0xc0de1;
-	tv->tv_usec = 0xc0de2;
-	memcpy(&tv_in, tv, sizeof(tv_in));
-	assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, tv) == 3);
-	printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%llu})"
-	       " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%llu})\n",
-	       TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
-	       (long long) tv_in.tv_sec,
-	       zero_extend_signed_to_ull(tv_in.tv_usec),
-	       fds[1],
-	       (long long) tv->tv_sec,
-	       zero_extend_signed_to_ull(tv->tv_usec));
+	for (int i = nfds; i <= smallset_size; ++i) {
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		*l_es = 0;
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3, i, a_rs, a_ws, a_es, a_tv);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d %d], [%d %d %d %d], []"
+		       ", {tv_sec=%lld, tv_usec=%llu}) = 3 (out [1 2 %d]"
+		       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i, fds[0], fds[1],
+		       1, 2, fds[0], fds[1],
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       fds[1],
+		       (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+#else
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3 + (i > PATH_TRACING_FD), i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d %d], [%d %d %d %d], []"
+			       ", {tv_sec=%lld, tv_usec=%llu})"
+			       " = 4 (in [%d], out [1 2 %d]"
+			       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1], PATH_TRACING_FD,
+			       1, 2, fds[0], fds[1],
+			       (long long) tv_in.tv_sec,
+			       zero_extend_signed_to_ull(tv_in.tv_usec),
+			       PATH_TRACING_FD, fds[1],
+			       (long long) tv->tv_sec,
+			       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]) |
+			(1UL << PATH_TRACING_FD);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3 + (i > PATH_TRACING_FD), i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+			printf("%s(%d, [%d %d], [%d %d %d %d %d], []"
+			       ", {tv_sec=%lld, tv_usec=%llu})"
+			       " = 4 (out [1 2 %d %d]"
+			       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+			       TEST_SYSCALL_STR, i,
+			       fds[0], fds[1],
+			       1, 2, fds[0], fds[1], PATH_TRACING_FD,
+			       (long long) tv_in.tv_sec,
+			       zero_extend_signed_to_ull(tv_in.tv_usec),
+			       fds[1], PATH_TRACING_FD,
+			       (long long) tv->tv_sec,
+			       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+		*l_rs = (1UL << fds[0]) | (1UL << fds[1]);
+		*l_ws = (1UL << 1) | (1UL << 2) |
+			(1UL << fds[0]) | (1UL << fds[1]);
+		*l_es = (1UL << PATH_TRACING_FD);
+		tv_in.tv_sec = 0xc0de1;
+		tv_in.tv_usec = 0xc0de2;
+		memcpy(tv, &tv_in, sizeof(tv_in));
+		XSELECT(3, i, a_rs, a_ws, a_es, a_tv);
+		if (i > PATH_TRACING_FD) {
+		printf("%s(%d, [%d %d], [%d %d %d %d], [%d]"
+		       ", {tv_sec=%lld, tv_usec=%llu}) = 3 (out [1 2 %d]"
+		       ", left {tv_sec=%lld, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i,
+		       fds[0], fds[1],
+		       1, 2, fds[0], fds[1], PATH_TRACING_FD,
+		       (long long) tv_in.tv_sec,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       fds[1],
+		       (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+		}
+
+#endif /* PATH_TRACING_FD */
+	}
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
 	 * but with a pointer to a large chunk of valid memory.
 	 */
-	FD_ZERO(set);
+	static fd_set set[0x1000000 / sizeof(fd_set)];
 	FD_SET(fds[1], set);
-	assert(syscall(TEST_SYSCALL_NR, -1, NULL, set, NULL, NULL) == -1);
-	printf("%s(-1, NULL, %p, NULL, NULL) = -1 EINVAL (%m)\n",
-	       TEST_SYSCALL_STR, set);
+	XSELECT(-1, -1U, 0, (uintptr_t) set, 0, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(-1, NULL, %p, NULL, NULL) = %s\n",
+	       TEST_SYSCALL_STR, set, errstr);
+#endif
 
 	/*
-	 * Another variant, with nfds exceeding FD_SETSIZE limit.
+	 * Big sets, nfds exceeds FD_SETSIZE limit.
 	 */
-	FD_ZERO(set);
+	const size_t big_size = sizeof(fd_set) + sizeof(long);
+	fd_set *const big_rs = tail_alloc(big_size);
+	const uintptr_t a_big_rs = (uintptr_t) big_rs;
+
+	fd_set *const big_ws = tail_alloc(big_size);
+	const uintptr_t a_big_ws = (uintptr_t) big_ws;
+
+	for (unsigned int i = FD_SETSIZE; i <= big_size * 8; ++i) {
+		memset(big_rs, 0, big_size);
+		memset(big_ws, 0, big_size);
+		FD_SET(fds[0], big_rs);
+		tv->tv_sec = 0;
+		tv->tv_usec = 10 + (i - FD_SETSIZE);
+		XSELECT(0, i, a_big_rs, a_big_ws, 0, a_tv);
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=%d})"
+		       " = 0 (Timeout)\n",
+		       TEST_SYSCALL_STR, i, fds[0], 10 + (i - FD_SETSIZE));
+#else
+		FD_SET(fds[0], big_rs);
+		FD_SET(PATH_TRACING_FD, big_rs);
+		tv->tv_sec = 0;
+		tv->tv_usec = 10 + (i - FD_SETSIZE);
+		XSELECT(1, i, a_big_rs, a_big_ws, 0, a_tv);
+		printf("%s(%d, [%d %d], [], NULL, {tv_sec=0, tv_usec=%d})"
+		       " = 1 (in [%d], left {tv_sec=0, tv_usec=%llu})\n",
+		       TEST_SYSCALL_STR, i, fds[0], PATH_TRACING_FD,
+		       10 + (i - FD_SETSIZE), PATH_TRACING_FD,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
+	}
+
+	/*
+	 * Huge sets, nfds equals to INT_MAX.
+	 */
 	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
 	tv->tv_sec = 0;
 	tv->tv_usec = 123;
-	assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, tv) == 0);
-	printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=123}) = 0 (Timeout)\n",
-	       TEST_SYSCALL_STR, FD_SETSIZE + 1, fds[0]);
+	XSELECT(0, INT_MAX, (uintptr_t) set, (uintptr_t) &set[1],
+		(uintptr_t) &set[2], a_tv);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, [%d %d], [], [], {tv_sec=0, tv_usec=123})"
+	       " = 0 (Timeout)\n",
+	       TEST_SYSCALL_STR, INT_MAX, fds[0], fds[1]);
+#else
+	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
+	FD_SET(PATH_TRACING_FD, set);
+	tv->tv_sec = 0;
+	tv->tv_usec = 123;
+	XSELECT(1, INT_MAX, (uintptr_t) set, (uintptr_t) &set[1],
+		(uintptr_t) &set[2], a_tv);
+	printf("%s(%d, [%d %d %d], [], [], {tv_sec=0, tv_usec=123})"
+	       " = 1 (in [%d], left {tv_sec=0, tv_usec=%llu})\n",
+	       TEST_SYSCALL_STR, INT_MAX, fds[0], fds[1], PATH_TRACING_FD,
+	       PATH_TRACING_FD, zero_extend_signed_to_ull(tv->tv_usec));
+#endif /* PATH_TRACING_FD */
+
+	/*
+	 * Small sets, nfds exceeds FD_SETSIZE limit.
+	 * The kernel seems to be fine with it but strace cannot follow.
+	 */
+	*l_rs = (1UL << fds[0]) | (1UL << fds[1])
+#ifdef PATH_TRACING_FD
+		| (1UL << PATH_TRACING_FD)
+#endif
+		;
+	*l_ws = (1UL << fds[0]);
+	*l_es = (1UL << fds[0]) | (1UL << fds[1])
+#ifdef PATH_TRACING_FD
+		| (1UL << PATH_TRACING_FD)
+#endif
+		;
+	tv->tv_sec = 0;
+	tv->tv_usec = 123;
+	rc = xselect(FD_SETSIZE + 1, a_rs, a_ws, a_es, a_tv);
+	if (rc < 0) {
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, %p, %p, %p, {tv_sec=0, tv_usec=123}) = %s\n",
+		       TEST_SYSCALL_STR, FD_SETSIZE + 1, rs, ws, es, errstr);
+#endif
+	} else {
+#ifndef PATH_TRACING_FD
+		printf("%s(%d, %p, %p, %p, {tv_sec=0, tv_usec=123})"
+		       " = 0 (Timeout)\n",
+		       TEST_SYSCALL_STR, FD_SETSIZE + 1, rs, ws, es);
+#endif
+	}
+
+	/*
+	 * Small sets, one of allocated descriptors exceeds smallset_size.
+	 */
+	if (dup2(fds[1], smallset_size) != smallset_size)
+		perror_msg_and_fail("dup2");
+#ifdef PATH_TRACING_FD
+	FD_SET(PATH_TRACING_FD, rs);
+	FD_SET(PATH_TRACING_FD, ws);
+	FD_SET(PATH_TRACING_FD, es);
+#endif
+	XSELECT(-1, smallset_size + 1, a_rs, a_ws, a_es, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, %p, %p, %p, NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1, rs, ws, es, errstr);
+#endif
+
+	/*
+	 * Small and big sets,
+	 * one of allocated descriptors exceeds smallset_size.
+	 */
+	memset(big_rs, 0, big_size);
+	FD_SET(fds[0], big_rs);
+	FD_SET(smallset_size, big_rs);
+	memset(big_ws, 0, big_size);
+	FD_SET(fds[1], big_ws);
+	FD_SET(smallset_size, big_ws);
+	XSELECT(-1, smallset_size + 1, a_big_rs, a_big_ws, a_es, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, [%d %d], [%d %d], %p, NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1,
+	       fds[0], smallset_size,
+	       fds[1], smallset_size,
+	       es, errstr);
+#endif /* !PATH_TRACING_FD */
+	XSELECT(-1, smallset_size + 1, a_es, a_big_ws, a_big_rs, 0);
+#ifndef PATH_TRACING_FD
+	printf("%s(%d, %p, [%d %d], [%d %d], NULL) = %s\n",
+	       TEST_SYSCALL_STR, smallset_size + 1,
+	       es,
+	       fds[1], smallset_size,
+	       fds[0], smallset_size,
+	       errstr);
+#endif /* !PATH_TRACING_FD */
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/trace_event.h b/trace_event.h
new file mode 100644
index 0000000..38883c8
--- /dev/null
+++ b/trace_event.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2017 The strace developers.
+ * 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_TRACE_EVENT_H
+#define STRACE_TRACE_EVENT_H
+
+/* Possible trace event loop states. Returned by next_event() and dispatched by
+ * dispatch_event(). */
+enum trace_event {
+	/* Break the main loop. */
+	TE_BREAK,
+
+	/* Call next_event() again. */
+	TE_NEXT,
+
+	/* Restart the tracee with signal 0 and call next_event() again. */
+	TE_RESTART,
+
+	/*
+	 * For all the events below, current_tcp is set to current tracee's
+	 * tcb.  All the suggested actions imply that you want to continue
+	 * tracing of the current tracee; alternatively, you can detach it.
+	 */
+
+	/*
+	 * Syscall entry or exit.
+	 * Restart the tracee with signal 0, or with an injected signal number.
+	 */
+	TE_SYSCALL_STOP,
+
+	/*
+	 * Tracee received signal with number WSTOPSIG(*pstatus); signal info
+	 * is written to *si.  Restart the tracee (with that signal number
+	 * if you want to deliver it).
+	 */
+	TE_SIGNAL_DELIVERY_STOP,
+
+	/*
+	 * Tracee was killed by a signal with number WTERMSIG(*pstatus).
+	 */
+	TE_SIGNALLED,
+
+	/*
+	 * Tracee was stopped by a signal with number WSTOPSIG(*pstatus).
+	 * Restart the tracee with that signal number.
+	 */
+	TE_GROUP_STOP,
+
+	/*
+	 * Tracee exited with status WEXITSTATUS(*pstatus).
+	 */
+	TE_EXITED,
+
+	/*
+	 * Tracee is going to perform execve().
+	 * Restart the tracee with signal 0.
+	 */
+	TE_STOP_BEFORE_EXECVE,
+
+	/*
+	 * Tracee is going to terminate.
+	 * Restart the tracee with signal 0.
+	 */
+	TE_STOP_BEFORE_EXIT,
+};
+
+#endif /* !STRACE_TRACE_EVENT_H */
diff --git a/ubi.c b/ubi.c
index 1c12a23..9f611ff 100644
--- a/ubi.c
+++ b/ubi.c
@@ -27,18 +27,13 @@
 
 #include "defs.h"
 
-#include <linux/ioctl.h>
+#ifdef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024
 
-/* The UBI api changes, so we have to keep a local copy */
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
-# include "ubi-user.h"
-#else
+# include <linux/ioctl.h>
 # include <mtd/ubi-user.h>
-#endif
 
-#include "xlat/ubi_volume_types.h"
-#include "xlat/ubi_volume_props.h"
+# include "xlat/ubi_volume_types.h"
+# include "xlat/ubi_volume_props.h"
 
 int
 ubi_ioctl(struct tcb *const tcp, const unsigned int code,
@@ -183,12 +178,12 @@
 		printnum_int(tcp, arg, "%d");
 		break;
 
-#ifdef UBI_IOCVOLCRBLK
+# ifdef UBI_IOCVOLCRBLK
 	case UBI_IOCVOLCRBLK:
-#endif
-#ifdef UBI_IOCVOLRMBLK
+# endif
+# ifdef UBI_IOCVOLRMBLK
 	case UBI_IOCVOLRMBLK:
-#endif
+# endif
 		/* no arguments */
 		break;
 
@@ -198,3 +193,5 @@
 
 	return RVAL_IOCTL_DECODED;
 }
+
+#endif /* HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024 */
diff --git a/ucopy.c b/ucopy.c
index c3be417..2d9ffb3 100644
--- a/ucopy.c
+++ b/ucopy.c
@@ -203,6 +203,7 @@
 {
 	unsigned int nread = 0;
 	unsigned int residue = addr & (sizeof(long) - 1);
+	void *const orig_addr = laddr;
 
 	while (len) {
 		addr &= -sizeof(long);		/* aligned address */
@@ -237,7 +238,7 @@
 		memcpy(laddr, &u.x[residue], m);
 		while (residue < sizeof(long))
 			if (u.x[residue++] == '\0')
-				return 1;
+				return (laddr - orig_addr) + residue;
 		residue = 0;
 		addr += sizeof(long);
 		laddr += m;
@@ -252,8 +253,7 @@
  * Like `umove' but make the additional effort of looking
  * for a terminating zero byte.
  *
- * Returns < 0 on error, > 0 if NUL was seen,
- * (TODO if useful: return count of bytes including NUL),
+ * Returns < 0 on error, strlen + 1  if NUL was seen,
  * else 0 if len bytes were read but no NUL byte seen.
  *
  * Note: there is no guarantee we won't overwrite some bytes
@@ -289,8 +289,10 @@
 
 		int r = vm_read_mem(pid, laddr, addr, chunk_len);
 		if (r > 0) {
-			if (memchr(laddr, '\0', r))
-				return 1;
+			char *nul_addr = memchr(laddr, '\0', r);
+
+			if (nul_addr)
+				return (nul_addr - laddr) + 1;
 			addr += r;
 			laddr += r;
 			nread += r;
diff --git a/uid.c b/uid.c
index 069cda6..418c737 100644
--- a/uid.c
+++ b/uid.c
@@ -4,7 +4,7 @@
  * Copyright (c) 1993-1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,7 +55,7 @@
 #include "defs.h"
 
 #ifdef STRACE_UID_SIZE
-# if !NEED_UID16_PARSERS
+# if !HAVE_ARCH_UID16_SYSCALLS
 #  undef STRACE_UID_SIZE
 # endif
 #else
diff --git a/unwind.c b/unwind.c
index 919b63c..ecda184 100644
--- a/unwind.c
+++ b/unwind.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013 Luca Clementi <luca.clementi@gmail.com>
- * Copyright (c) 2013-2017 The strace developers.
+ * Copyright (c) 2013-2018 The strace developers.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,6 +29,16 @@
 #include <limits.h>
 #include <libunwind-ptrace.h>
 
+#ifdef USE_DEMANGLE
+# if defined HAVE_DEMANGLE_H
+#  include <demangle.h>
+# elif defined HAVE_LIBIBERTY_DEMANGLE_H
+#  include <libiberty/demangle.h>
+# endif
+#endif
+
+#include "xstring.h"
+
 #ifdef _LARGEFILE64_SOURCE
 # ifdef HAVE_FOPEN64
 #  define fopen_for_input fopen64
@@ -39,12 +49,6 @@
 # define fopen_for_input fopen
 #endif
 
-#define DPRINTF(F, A, ...)						\
-	do {								\
-		if (debug_flag)						\
-			error_msg("[unwind(" A ")] " F, __VA_ARGS__);	\
-	} while (0)
-
 /*
  * Keep a sorted array of cache entries,
  * so that we can binary search through it.
@@ -96,6 +100,8 @@
 static unw_addr_space_t libunwind_as;
 static unsigned int mmap_cache_generation;
 
+static const char asprintf_error_str[] = "???";
+
 void
 unwind_init(void)
 {
@@ -143,23 +149,20 @@
 build_mmap_cache(struct tcb *tcp)
 {
 	FILE *fp;
-	struct mmap_cache_t *cache_head;
-	/* start with a small dynamically-allocated array and then expand it */
-	size_t cur_array_size = 10;
+	struct mmap_cache_t *cache_head = NULL;
+	size_t cur_array_size = 0;
 	char filename[sizeof("/proc/4294967296/maps")];
 	char buffer[PATH_MAX + 80];
 
 	unw_flush_cache(libunwind_as, 0, 0);
 
-	sprintf(filename, "/proc/%u/maps", tcp->pid);
+	xsprintf(filename, "/proc/%u/maps", tcp->pid);
 	fp = fopen_for_input(filename, "r");
 	if (!fp) {
 		perror_msg("fopen: %s", filename);
 		return;
 	}
 
-	cache_head = xcalloc(cur_array_size, sizeof(*cache_head));
-
 	while (fgets(buffer, sizeof(buffer), fp) != NULL) {
 		struct mmap_cache_t *entry;
 		unsigned long start_addr, end_addr, mmap_offset;
@@ -193,17 +196,19 @@
 			}
 			if (start_addr <= entry->start_addr ||
 			    start_addr < entry->end_addr) {
-				error_msg("%s: overlapping memory region",
-					  filename);
+				debug_msg("%s: overlapping memory region: "
+					  "\"%s\" [%08lx-%08lx] overlaps with "
+					  "\"%s\" [%08lx-%08lx]",
+					  filename, binary_path, start_addr,
+					  end_addr, entry->binary_filename,
+					  entry->start_addr, entry->end_addr);
 				continue;
 			}
 		}
 
-		if (tcp->mmap_cache_size >= cur_array_size) {
-			cur_array_size *= 2;
-			cache_head = xreallocarray(cache_head, cur_array_size,
-						   sizeof(*cache_head));
-		}
+		if (tcp->mmap_cache_size >= cur_array_size)
+			cache_head = xgrowarray(cache_head, &cur_array_size,
+						sizeof(*cache_head));
 
 		entry = &cache_head[tcp->mmap_cache_size];
 		entry->start_addr = start_addr;
@@ -216,11 +221,10 @@
 	tcp->mmap_cache = cache_head;
 	tcp->mmap_cache_generation = mmap_cache_generation;
 
-	DPRINTF("tgen=%u, ggen=%u, tcp=%p, cache=%p",
-		"cache-build",
-		tcp->mmap_cache_generation,
-		mmap_cache_generation,
-		tcp, tcp->mmap_cache);
+	debug_func_msg("tgen=%u, ggen=%u, tcp=%p, cache=%p",
+		       tcp->mmap_cache_generation,
+		       mmap_cache_generation,
+		       tcp, tcp->mmap_cache);
 }
 
 /* deleting the cache */
@@ -229,11 +233,10 @@
 {
 	unsigned int i;
 
-	DPRINTF("tgen=%u, ggen=%u, tcp=%p, cache=%p, caller=%s",
-		"cache-delete",
-		tcp->mmap_cache_generation,
-		mmap_cache_generation,
-		tcp, tcp->mmap_cache, caller);
+	debug_func_msg("tgen=%u, ggen=%u, tcp=%p, cache=%p, caller=%s",
+		       tcp->mmap_cache_generation,
+		       mmap_cache_generation,
+		       tcp, tcp->mmap_cache, caller);
 
 	for (i = 0; i < tcp->mmap_cache_size; i++) {
 		free(tcp->mmap_cache[i].binary_filename);
@@ -254,10 +257,7 @@
 	if (!tcp->mmap_cache)
 		build_mmap_cache(tcp);
 
-	if (!tcp->mmap_cache || !tcp->mmap_cache_size)
-		return false;
-	else
-		return true;
+	return tcp->mmap_cache && tcp->mmap_cache_size;
 }
 
 void
@@ -265,16 +265,15 @@
 {
 #if SUPPORTED_PERSONALITIES > 1
 	if (tcp->currpers != DEFAULT_PERSONALITY) {
-		/* disable strack trace */
+		/* disable stack trace */
 		return;
 	}
 #endif
 	mmap_cache_generation++;
-	DPRINTF("tgen=%u, ggen=%u, tcp=%p, cache=%p", "increment",
-		tcp->mmap_cache_generation,
-		mmap_cache_generation,
-		tcp,
-		tcp->mmap_cache);
+	debug_func_msg("tgen=%u, ggen=%u, tcp=%p, cache=%p",
+		       tcp->mmap_cache_generation,
+		       mmap_cache_generation,
+		       tcp, tcp->mmap_cache);
 }
 
 static void
@@ -290,8 +289,7 @@
 			*offset = 0;
 			break;
 		}
-		*name = xreallocarray(*name, 2, *size);
-		*size *= 2;
+		*name = xgrowarray(*name, size, 1);
 	}
 }
 
@@ -328,11 +326,25 @@
 					&function_offset);
 			true_offset = ip - cur_mmap_cache->start_addr +
 				cur_mmap_cache->mmap_offset;
+
+#ifdef USE_DEMANGLE
+			char *demangled_name =
+				cplus_demangle(*symbol_name,
+					       DMGL_AUTO | DMGL_PARAMS);
+#endif
+
 			call_action(data,
 				    cur_mmap_cache->binary_filename,
+#ifdef USE_DEMANGLE
+				    demangled_name ? demangled_name :
+#endif
 				    *symbol_name,
 				    function_offset,
 				    true_offset);
+#ifdef USE_DEMANGLE
+			free(demangled_name);
+#endif
+
 			return 0;
 		} else if (ip < cur_mmap_cache->start_addr)
 			upper = mid - 1;
@@ -466,8 +478,10 @@
 	else
 		n = asprintf(&output_line, STACK_ENTRY_BUG_FMT, __func__);
 
-	if (n < 0)
-		error_msg_and_die("error in asprintf");
+	if (n < 0) {
+		perror_func_msg("asprintf");
+		output_line = (char *) asprintf_error_str;
+	}
 
 	return output_line;
 }
@@ -540,7 +554,9 @@
 		tprints(tmp->output_line);
 		line_ended();
 
-		free(tmp->output_line);
+		if (tmp->output_line != asprintf_error_str)
+			free(tmp->output_line);
+
 		tmp->output_line = NULL;
 		tmp->next = NULL;
 		free(tmp);
@@ -555,15 +571,15 @@
 {
 #if SUPPORTED_PERSONALITIES > 1
 	if (tcp->currpers != DEFAULT_PERSONALITY) {
-		/* disable strack trace */
+		/* disable stack trace */
 		return;
 	}
 #endif
 	if (tcp->queue->head) {
-		DPRINTF("tcp=%p, queue=%p", "queueprint", tcp, tcp->queue->head);
+		debug_func_msg("head: tcp=%p, queue=%p", tcp, tcp->queue->head);
 		queue_print(tcp->queue);
 	} else if (rebuild_cache_if_invalid(tcp, __func__)) {
-		DPRINTF("tcp=%p, queue=%p", "stackprint", tcp, tcp->queue->head);
+		debug_func_msg("walk: tcp=%p, queue=%p", tcp, tcp->queue->head);
 		stacktrace_walk(tcp, print_call_cb, print_error_cb, NULL);
 	}
 }
@@ -576,7 +592,7 @@
 {
 #if SUPPORTED_PERSONALITIES > 1
 	if (tcp->currpers != DEFAULT_PERSONALITY) {
-		/* disable strack trace */
+		/* disable stack trace */
 		return;
 	}
 #endif
@@ -586,6 +602,6 @@
 	if (rebuild_cache_if_invalid(tcp, __func__)) {
 		stacktrace_walk(tcp, queue_put_call, queue_put_error,
 				tcp->queue);
-		DPRINTF("tcp=%p, queue=%p", "captured", tcp, tcp->queue->head);
+		debug_func_msg("tcp=%p, queue=%p", tcp, tcp->queue->head);
 	}
 }
diff --git a/upeek.c b/upeek.c
index 22ee82d..9fccecb 100644
--- a/upeek.c
+++ b/upeek.c
@@ -36,15 +36,16 @@
 #include "ptrace.h"
 
 int
-upeek(int pid, unsigned long off, kernel_ulong_t *res)
+upeek(struct tcb *tcp, unsigned long off, kernel_ulong_t *res)
 {
 	long val;
 
 	errno = 0;
-	val = ptrace(PTRACE_PEEKUSER, (pid_t) pid, (void *) off, 0);
+	val = ptrace(PTRACE_PEEKUSER, (pid_t) tcp->pid, (void *) off, 0);
 	if (val == -1 && errno) {
 		if (errno != ESRCH) {
-			perror_msg("upeek: PTRACE_PEEKUSER pid:%d @0x%lx)", pid, off);
+			perror_msg("upeek: PTRACE_PEEKUSER pid:%d @0x%lx)",
+				   tcp->pid, off);
 		}
 		return -1;
 	}
diff --git a/upoke.c b/upoke.c
index dda0b8d..6affb83 100644
--- a/upoke.c
+++ b/upoke.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,11 +30,12 @@
 #include "ptrace.h"
 
 int
-upoke(int pid, unsigned long off, kernel_ulong_t val)
+upoke(struct tcb *tcp, unsigned long off, kernel_ulong_t val)
 {
-	if (ptrace(PTRACE_POKEUSER, pid, off, val)) {
+	if (ptrace(PTRACE_POKEUSER, tcp->pid, off, val)) {
 		if (errno != ESRCH)
-			perror_msg("upoke: PTRACE_POKEUSER pid:%d @%#lx)", pid, off);
+			perror_msg("upoke: PTRACE_POKEUSER pid:%d @%#lx)",
+				   tcp->pid, off);
 		return -1;
 	}
 	return 0;
diff --git a/util.c b/util.c
index 05c9fb8..77cc5ac 100644
--- a/util.c
+++ b/util.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,13 +33,14 @@
  */
 
 #include "defs.h"
-#include <sys/param.h>
+#include <limits.h>
 #include <fcntl.h>
 #include <stdarg.h>
 #ifdef HAVE_SYS_XATTR_H
 # include <sys/xattr.h>
 #endif
 #include <sys/uio.h>
+#include "xstring.h"
 
 int
 tv_nz(const struct timeval *a)
@@ -344,15 +345,9 @@
 	if (!pos)
 		return NULL;
 
-	if (part_sec > 0) {
-		int ret = snprintf(buf + pos, sizeof(buf) - pos, ".%0*llu",
-				   width, part_sec);
-
-		if (ret < 0 || (size_t) ret >= sizeof(buf) - pos)
-			return NULL;
-
-		pos += ret;
-	}
+	if (part_sec > 0)
+		pos += xsnprintf(buf + pos, sizeof(buf) - pos, ".%0*llu",
+				 width, part_sec);
 
 	return strftime(buf + pos, sizeof(buf) - pos, "%z", tmp) ? buf : NULL;
 }
@@ -387,7 +382,7 @@
 	if (fd < 0)
 		return SOCK_PROTO_UNKNOWN;
 
-	sprintf(path, "/proc/%u/fd/%u", tcp->pid, fd);
+	xsprintf(path, "/proc/%u/fd/%u", tcp->pid, fd);
 	r = getxattr(path, "system.sockprotoname", buf, bufsize - 1);
 	if (r <= 0)
 		return SOCK_PROTO_UNKNOWN;
@@ -502,6 +497,8 @@
 		}
 	}
 
+	if (style & QUOTE_EMIT_COMMENT)
+		s = stpcpy(s, " /* ");
 	if (!(style & QUOTE_OMIT_LEADING_TRAILING_QUOTES))
 		*s++ = '\"';
 
@@ -581,6 +578,8 @@
 
 	if (!(style & QUOTE_OMIT_LEADING_TRAILING_QUOTES))
 		*s++ = '\"';
+	if (style & QUOTE_EMIT_COMMENT)
+		s = stpcpy(s, " */");
 	*s = '\0';
 
 	/* Return zero if we printed entire ASCIZ string (didn't truncate it) */
@@ -596,6 +595,8 @@
  asciz_ended:
 	if (!(style & QUOTE_OMIT_LEADING_TRAILING_QUOTES))
 		*s++ = '\"';
+	if (style & QUOTE_EMIT_COMMENT)
+		s = stpcpy(s, " */");
 	*s = '\0';
 	/* Return zero: we printed entire ASCIZ string (didn't truncate it) */
 	return 0;
@@ -637,7 +638,8 @@
 		tprints("???");
 		return -1;
 	}
-	alloc_size += 1 + (style & QUOTE_OMIT_LEADING_TRAILING_QUOTES ? 0 : 2);
+	alloc_size += 1 + (style & QUOTE_OMIT_LEADING_TRAILING_QUOTES ? 0 : 2) +
+		(style & QUOTE_EMIT_COMMENT ? 7 : 0);
 
 	if (use_alloca(alloc_size)) {
 		outstr = alloca(alloc_size);
@@ -679,8 +681,10 @@
 /*
  * Print path string specified by address `addr' and length `n'.
  * If path length exceeds `n', append `...' to the output.
+ *
+ * Returns the result of umovenstr.
  */
-void
+int
 printpathn(struct tcb *const tcp, const kernel_ulong_t addr, unsigned int n)
 {
 	char path[PATH_MAX];
@@ -688,7 +692,7 @@
 
 	if (!addr) {
 		tprints("NULL");
-		return;
+		return -1;
 	}
 
 	/* Cap path length to the path buffer size */
@@ -703,13 +707,15 @@
 		path[n++] = !nul_seen;
 		print_quoted_cstring(path, n);
 	}
+
+	return nul_seen;
 }
 
-void
+int
 printpath(struct tcb *const tcp, const kernel_ulong_t addr)
 {
 	/* Size must correspond to char path[] size in printpathn */
-	printpathn(tcp, addr, PATH_MAX - 1);
+	return printpathn(tcp, addr, PATH_MAX - 1);
 }
 
 /*
@@ -719,8 +725,11 @@
  * Pass `user_style' on to `string_quote'.
  * Append `...' to the output if either the string length exceeds `max_strlen',
  * or QUOTE_0_TERMINATED bit is set and the string length exceeds `len'.
+ *
+ * Returns the result of umovenstr if style has QUOTE_0_TERMINATED,
+ * or the result of umoven otherwise.
  */
-void
+int
 printstr_ex(struct tcb *const tcp, const kernel_ulong_t addr,
 	    const kernel_ulong_t len, const unsigned int user_style)
 {
@@ -734,7 +743,7 @@
 
 	if (!addr) {
 		tprints("NULL");
-		return;
+		return -1;
 	}
 	/* Allocate static buffers if they are not allocated yet. */
 	if (!str) {
@@ -761,7 +770,7 @@
 
 	if (rc < 0) {
 		printaddr(addr);
-		return;
+		return rc;
 	}
 
 	if (size > max_strlen)
@@ -780,6 +789,8 @@
 	tprints(outstr);
 	if (ellipsis)
 		tprints("...");
+
+	return rc;
 }
 
 void
@@ -1081,7 +1092,7 @@
 #endif
 
 int
-read_int_from_file(const char *const fname, int *const pvalue)
+read_int_from_file(struct tcb *tcp, const char *const fname, int *const pvalue)
 {
 	const int fd = open_file(fname, O_RDONLY);
 	if (fd < 0)
diff --git a/v4l2.c b/v4l2.c
index 097b13a..d8d5e77 100644
--- a/v4l2.c
+++ b/v4l2.c
@@ -2,7 +2,7 @@
  * Copyright (c) 2014 Philippe De Muyter <phdm@macqel.be>
  * Copyright (c) 2014 William Manley <will@williammanley.net>
  * Copyright (c) 2011 Peter Zotov <whitequark@whitequark.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,9 +30,16 @@
 
 #include "defs.h"
 
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 #include DEF_MPERS_TYPE(struct_v4l2_buffer)
 #include DEF_MPERS_TYPE(struct_v4l2_clip)
-#include DEF_MPERS_TYPE(struct_v4l2_create_buffers)
+#ifdef VIDIOC_CREATE_BUFS
+# include DEF_MPERS_TYPE(struct_v4l2_create_buffers)
+#endif
 #include DEF_MPERS_TYPE(struct_v4l2_ext_control)
 #include DEF_MPERS_TYPE(struct_v4l2_ext_controls)
 #include DEF_MPERS_TYPE(struct_v4l2_format)
@@ -40,14 +47,11 @@
 #include DEF_MPERS_TYPE(struct_v4l2_input)
 #include DEF_MPERS_TYPE(struct_v4l2_standard)
 
-#include <stdint.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
-
 typedef struct v4l2_buffer struct_v4l2_buffer;
 typedef struct v4l2_clip struct_v4l2_clip;
+#ifdef VIDIOC_CREATE_BUFS
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
+#endif
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
 typedef struct v4l2_format struct_v4l2_format;
@@ -58,6 +62,7 @@
 #include MPERS_DEFS
 
 #include "print_fields.h"
+#include "xstring.h"
 
 /* some historical constants */
 #ifndef V4L2_CID_HCENTER
@@ -975,7 +980,7 @@
 	if (syserror(tcp) || umove(tcp, arg, &b))
 		return RVAL_IOCTL_DECODED;
 
-	sprintf(outstr, fmt, b.index, b.count);
+	xsprintf(outstr, fmt, b.index, b.count);
 	tcp->auxstr = outstr;
 
 	return RVAL_IOCTL_DECODED | RVAL_STR;
diff --git a/wait.c b/wait.c
index 0f1aa00..c1d1dff 100644
--- a/wait.c
+++ b/wait.c
@@ -7,7 +7,7 @@
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2009-2013 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2017 The strace developers.
+ * Copyright (c) 2014-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,7 @@
  */
 
 #include "defs.h"
+#include "ptrace.h"
 
 #include <sys/wait.h>
 
@@ -58,7 +59,6 @@
 # define W_CONTINUED 0xffff
 #endif
 
-#include "ptrace.h"
 #include "xlat/ptrace_events.h"
 
 static int
diff --git a/xlat.c b/xlat.c
index ad49720..50025a6 100644
--- a/xlat.c
+++ b/xlat.c
@@ -3,7 +3,7 @@
  * 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) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,6 +30,7 @@
  */
 
 #include "defs.h"
+#include "xstring.h"
 #include <stdarg.h>
 
 const char *
@@ -93,6 +94,20 @@
 	return 0;
 }
 
+int
+sprintxval(char *const buf, const size_t size, const struct xlat *const x,
+	   const unsigned int val, const char *const dflt)
+{
+	const char *const str = xlookup(x, val);
+
+	if (str)
+		return xsnprintf(buf, size, "%s", str);
+	if (dflt)
+		return xsnprintf(buf, size, "%#x /* %s */", val, dflt);
+
+	return xsnprintf(buf, size, "%#x", val);
+}
+
 /**
  * Print entry in sorted struct xlat table, if it is there.
  *
@@ -145,7 +160,8 @@
 /*
  * Interpret `xlat' as an array of flags.
  * Print to static string the entries whose bits are on in `flags'
- * Return static string.
+ * Return static string.  If 0 is provided as flags, and there is no flag that
+ * has the value of 0 (it should be the first in xlat table), return NULL.
  */
 const char *
 sprintflags(const char *prefix, const struct xlat *xlat, uint64_t flags)
@@ -172,10 +188,14 @@
 				break;
 		}
 	}
+
 	if (flags) {
 		if (found)
 			*outptr++ = '|';
-		outptr += sprintf(outptr, "%#" PRIx64, flags);
+		outptr = xappendstr(outstr, outptr, "%#" PRIx64, flags);
+	} else {
+		if (!found)
+			return NULL;
 	}
 
 	return outstr;
diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am
index cfcc571..1a6fabe 100644
--- a/xlat/Makemodule.am
+++ b/xlat/Makemodule.am
@@ -1,5 +1,5 @@
-XLAT_INPUT_FILES = xlat/access_flags.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/at_statx_sync_types.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_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_flags.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_flags.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.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/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.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/f_owner_types.in xlat/f_seals.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/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.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/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.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/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipccalls.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/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_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/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_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/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in xlat/nf_ctnetlink_exp_msg_types.in xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.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/prctl_options.in xlat/priorities.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/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.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/setns_types.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_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/skf_ad.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_states.in xlat/sock_type_flags.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/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.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/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.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/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_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_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in 
-XLAT_HEADER_FILES = xlat/access_flags.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/at_statx_sync_types.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_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_flags.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_flags.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.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/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.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/f_owner_types.h xlat/f_seals.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/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.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/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.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/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipccalls.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/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_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/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_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/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.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/prctl_options.h xlat/priorities.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/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.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/setns_types.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_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/skf_ad.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_states.h xlat/sock_type_flags.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/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.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/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.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/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_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_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h 
+XLAT_INPUT_FILES = xlat/access_flags.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/at_statx_sync_types.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_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_flags.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_flags.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.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/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.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/f_owner_types.in xlat/f_seals.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/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.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/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.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/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipccalls.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/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_mem_flags.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_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/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_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/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in xlat/nf_ctnetlink_exp_msg_types.in xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.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/prctl_options.in xlat/priorities.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/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/s390_guarded_storage_commands.in xlat/s390_runtime_instr_commands.in xlat/s390_sthyi_function_codes.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.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/setns_types.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_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/skf_ad.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_states.in xlat/sock_type_flags.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/socknetlinkoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.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/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.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/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_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_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in 
+XLAT_HEADER_FILES = xlat/access_flags.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/at_statx_sync_types.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_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_flags.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_flags.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.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/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.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/f_owner_types.h xlat/f_seals.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/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.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/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.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/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipccalls.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/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/kvm_mem_flags.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_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/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_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/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.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/prctl_options.h xlat/priorities.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/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/s390_guarded_storage_commands.h xlat/s390_runtime_instr_commands.h xlat/s390_sthyi_function_codes.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.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/setns_types.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_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/skf_ad.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/socknetlinkoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.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/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.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/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_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_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.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/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
@@ -298,6 +298,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/keyctl_commands.h: $(top_srcdir)/xlat/keyctl_commands.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/kvm_mem_flags.h: $(top_srcdir)/xlat/kvm_mem_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/lockfcmds.h: $(top_srcdir)/xlat/lockfcmds.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/loop_cmds.h: $(top_srcdir)/xlat/loop_cmds.in $(top_srcdir)/xlat/gen.sh
@@ -522,6 +524,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/resources.h: $(top_srcdir)/xlat/resources.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/riscv_flush_icache_flags.h: $(top_srcdir)/xlat/riscv_flush_icache_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/route_nexthop_flags.h: $(top_srcdir)/xlat/route_nexthop_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/routing_flags.h: $(top_srcdir)/xlat/routing_flags.in $(top_srcdir)/xlat/gen.sh
@@ -590,6 +594,12 @@
 	$(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/s390_guarded_storage_commands.h: $(top_srcdir)/xlat/s390_guarded_storage_commands.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/s390_runtime_instr_commands.h: $(top_srcdir)/xlat/s390_runtime_instr_commands.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/s390_sthyi_function_codes.h: $(top_srcdir)/xlat/s390_sthyi_function_codes.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
@@ -690,6 +700,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sockipxoptions.h: $(top_srcdir)/xlat/sockipxoptions.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socknetlinkoptions.h: $(top_srcdir)/xlat/socknetlinkoptions.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sockoptions.h: $(top_srcdir)/xlat/sockoptions.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sockpacketoptions.h: $(top_srcdir)/xlat/sockpacketoptions.in $(top_srcdir)/xlat/gen.sh
diff --git a/xlat/audit_arch.h b/xlat/audit_arch.h
index 16d3947..7883fa8 100644
--- a/xlat/audit_arch.h
+++ b/xlat/audit_arch.h
@@ -18,7 +18,7 @@
 static
 # endif
 const struct xlat audit_arch[] = {
-/* linux used to have linux/elf-em.h out of sync with linux/audit.h */
+
 #if defined(AUDIT_ARCH_AARCH64) || (defined(HAVE_DECL_AUDIT_ARCH_AARCH64) && HAVE_DECL_AUDIT_ARCH_AARCH64)
   XLAT(AUDIT_ARCH_AARCH64),
 #endif
diff --git a/xlat/dm_flags.h b/xlat/dm_flags.h
index 921b7b0..5573856 100644
--- a/xlat/dm_flags.h
+++ b/xlat/dm_flags.h
@@ -64,7 +64,7 @@
 const struct xlat dm_flags[] = {
  XLAT(DM_READONLY_FLAG),
  XLAT(DM_SUSPEND_FLAG),
-/* Defined in lvm2/libdm/ioctl/libdm-iface.c */
+
  XLAT(DM_EXISTS_FLAG),
  XLAT(DM_PERSISTENT_DEV_FLAG),
  XLAT(DM_STATUS_TABLE_FLAG),
diff --git a/xlat/fcntl64cmds.h b/xlat/fcntl64cmds.h
index e01e533..5fef627 100644
--- a/xlat/fcntl64cmds.h
+++ b/xlat/fcntl64cmds.h
@@ -17,7 +17,7 @@
 
 static
 const struct xlat fcntl64cmds[] = {
-/* asm-generic/fcntl.h */
+
  XLAT(F_GETLK64),
  XLAT(F_SETLK64),
  XLAT(F_SETLKW64),
diff --git a/xlat/fcntlcmds.h b/xlat/fcntlcmds.h
index 33280f3..44434f3 100644
--- a/xlat/fcntlcmds.h
+++ b/xlat/fcntlcmds.h
@@ -89,7 +89,7 @@
 
 static
 const struct xlat fcntlcmds[] = {
-/* asm-generic/fcntl.h */
+
  XLAT(F_DUPFD),
  XLAT(F_GETFD),
  XLAT(F_SETFD),
@@ -109,7 +109,7 @@
  XLAT(F_OFD_SETLK),
  XLAT(F_OFD_SETLKW),
 
-/* linux/fcntl.h */
+
  XLAT(F_SETLEASE),
  XLAT(F_GETLEASE),
  XLAT(F_NOTIFY),
diff --git a/xlat/fsmagic.h b/xlat/fsmagic.h
index 7a57046..1009e5d 100644
--- a/xlat/fsmagic.h
+++ b/xlat/fsmagic.h
@@ -8,7 +8,7 @@
 
 static
 const struct xlat fsmagic[] = {
-/* sorted by value, suitable for bsearch(3) */
+
 { 0x0000002f,	"QNX4_SUPER_MAGIC"	},
 { 0x00000187,	"AUTOFS_SUPER_MAGIC"	},
 { 0x00001373,	"DEVFS_SUPER_MAGIC"	},
diff --git a/xlat/gen.sh b/xlat/gen.sh
index d5286d1..6db06c5 100755
--- a/xlat/gen.sh
+++ b/xlat/gen.sh
@@ -135,6 +135,9 @@
 	# 1st pass: output directives.
 	while read line; do
 		LC_COLLATE=C
+		line=$(printf "%s" "$line" | \
+			sed "s|[[:space:]]*/\*.*\*/[[:space:]]*||")
+
 		case $line in
 		'#stop')
 			exit 0
@@ -196,6 +199,9 @@
 	# 2nd pass: output everything.
 	while read line; do
 		LC_COLLATE=C
+		line=$(printf "%s" "$line" | \
+			sed "s|[[:space:]]*/\*.*\*/[[:space:]]*||")
+
 		case ${line} in
 		'#conditional')
 			unconditional=
diff --git a/xlat/kvm_mem_flags.h b/xlat/kvm_mem_flags.h
new file mode 100644
index 0000000..5a8ebee
--- /dev/null
+++ b/xlat/kvm_mem_flags.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/kvm_mem_flags.in; do not edit. */
+#if !(defined(KVM_MEM_LOG_DIRTY_PAGES) || (defined(HAVE_DECL_KVM_MEM_LOG_DIRTY_PAGES) && HAVE_DECL_KVM_MEM_LOG_DIRTY_PAGES))
+# define KVM_MEM_LOG_DIRTY_PAGES (1 << 0)
+#endif
+#if !(defined(KVM_MEM_READONLY) || (defined(HAVE_DECL_KVM_MEM_READONLY) && HAVE_DECL_KVM_MEM_READONLY))
+# define KVM_MEM_READONLY (1 << 1)
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat kvm_mem_flags in mpers mode
+
+#else
+
+static
+const struct xlat kvm_mem_flags[] = {
+ XLAT(KVM_MEM_LOG_DIRTY_PAGES),
+ XLAT(KVM_MEM_READONLY),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/kvm_mem_flags.in b/xlat/kvm_mem_flags.in
new file mode 100644
index 0000000..82b93ba
--- /dev/null
+++ b/xlat/kvm_mem_flags.in
@@ -0,0 +1,2 @@
+KVM_MEM_LOG_DIRTY_PAGES	(1 << 0)
+KVM_MEM_READONLY	(1 << 1)
diff --git a/xlat/loop_flags_options.h b/xlat/loop_flags_options.h
index 1e96f46..d69f53d 100644
--- a/xlat/loop_flags_options.h
+++ b/xlat/loop_flags_options.h
@@ -26,13 +26,13 @@
 # endif
 const struct xlat loop_flags_options[] = {
  XLAT(LO_FLAGS_READ_ONLY),
-/* Added in v2.6.11-732-gf3f28e4, Removed in v3.2-rc1~49^2~5^2~3 */
+
  XLAT(LO_FLAGS_USE_AOPS),
-/* Added in v2.6.25-rc1~758 */
+
  XLAT(LO_FLAGS_AUTOCLEAR),
-/* Added in v3.2-rc1~48^2~7 */
+
  XLAT(LO_FLAGS_PARTSCAN),
-/* Added in v4.4-rc1~133^2~22 */
+
  XLAT(LO_FLAGS_DIRECT_IO),
  XLAT_END
 };
diff --git a/xlat/membarrier_cmds.h b/xlat/membarrier_cmds.h
index 9f1c69e..25c3e32 100644
--- a/xlat/membarrier_cmds.h
+++ b/xlat/membarrier_cmds.h
@@ -2,14 +2,26 @@
 #if !(defined(MEMBARRIER_CMD_QUERY) || (defined(HAVE_DECL_MEMBARRIER_CMD_QUERY) && HAVE_DECL_MEMBARRIER_CMD_QUERY))
 # define MEMBARRIER_CMD_QUERY 0
 #endif
-#if !(defined(MEMBARRIER_CMD_SHARED) || (defined(HAVE_DECL_MEMBARRIER_CMD_SHARED) && HAVE_DECL_MEMBARRIER_CMD_SHARED))
-# define MEMBARRIER_CMD_SHARED 1
+#if !(defined(MEMBARRIER_CMD_GLOBAL) || (defined(HAVE_DECL_MEMBARRIER_CMD_GLOBAL) && HAVE_DECL_MEMBARRIER_CMD_GLOBAL))
+# define MEMBARRIER_CMD_GLOBAL 1 << 0
+#endif
+#if !(defined(MEMBARRIER_CMD_GLOBAL_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_GLOBAL_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_GLOBAL_EXPEDITED))
+# define MEMBARRIER_CMD_GLOBAL_EXPEDITED 1 << 1
+#endif
+#if !(defined(MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED))
+# define MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED 1 << 2
 #endif
 #if !(defined(MEMBARRIER_CMD_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED))
-# define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8
+# define MEMBARRIER_CMD_PRIVATE_EXPEDITED 1 << 3
 #endif
 #if !(defined(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED))
-# define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16
+# define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 1 << 4
+#endif
+#if !(defined(MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE) || (defined(HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE) && HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE))
+# define MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE 1 << 5
+#endif
+#if !(defined(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE) || (defined(HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE) && HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE))
+# define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE 1 << 6
 #endif
 
 #ifdef IN_MPERS
@@ -21,9 +33,13 @@
 static
 const struct xlat membarrier_cmds[] = {
  XLAT(MEMBARRIER_CMD_QUERY),
- XLAT(MEMBARRIER_CMD_SHARED),
+ XLAT(MEMBARRIER_CMD_GLOBAL),
+ XLAT(MEMBARRIER_CMD_GLOBAL_EXPEDITED),
+ XLAT(MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED),
  XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED),
  XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED),
+ XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE),
+ XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE),
  XLAT_END
 };
 
diff --git a/xlat/membarrier_cmds.in b/xlat/membarrier_cmds.in
index e4fe06a..284c7da 100644
--- a/xlat/membarrier_cmds.in
+++ b/xlat/membarrier_cmds.in
@@ -1,4 +1,8 @@
-MEMBARRIER_CMD_QUERY			0
-MEMBARRIER_CMD_SHARED			1
-MEMBARRIER_CMD_PRIVATE_EXPEDITED	8
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED	16
+MEMBARRIER_CMD_QUERY					0
+MEMBARRIER_CMD_GLOBAL					1 << 0
+MEMBARRIER_CMD_GLOBAL_EXPEDITED				1 << 1
+MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED		1 << 2
+MEMBARRIER_CMD_PRIVATE_EXPEDITED			1 << 3
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED		1 << 4
+MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE		1 << 5
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE	1 << 6
diff --git a/xlat/mmap_flags.h b/xlat/mmap_flags.h
index 9ccc87e..f3d2cae 100644
--- a/xlat/mmap_flags.h
+++ b/xlat/mmap_flags.h
@@ -18,6 +18,9 @@
 #if defined(MAP_PRIVATE) || (defined(HAVE_DECL_MAP_PRIVATE) && HAVE_DECL_MAP_PRIVATE)
   XLAT(MAP_PRIVATE),
 #endif
+#if defined(MAP_SHARED_VALIDATE) || (defined(HAVE_DECL_MAP_SHARED_VALIDATE) && HAVE_DECL_MAP_SHARED_VALIDATE)
+  XLAT(MAP_SHARED_VALIDATE),
+#endif
 #if defined(MAP_FIXED) || (defined(HAVE_DECL_MAP_FIXED) && HAVE_DECL_MAP_FIXED)
   XLAT(MAP_FIXED),
 #endif
@@ -87,7 +90,7 @@
 #if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
   XLAT(MAP_LOCKED),
 #endif
-/* FreeBSD ones */
+
 #if defined(MAP_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
 #if defined(MAP_ANON) || (defined(HAVE_DECL_MAP_ANON) && HAVE_DECL_MAP_ANON)
   XLAT(MAP_ANON),
@@ -102,6 +105,9 @@
 #if defined(MAP_HUGETLB) || (defined(HAVE_DECL_MAP_HUGETLB) && HAVE_DECL_MAP_HUGETLB)
   XLAT(MAP_HUGETLB),
 #endif
+#if defined(MAP_SYNC) || (defined(HAVE_DECL_MAP_SYNC) && HAVE_DECL_MAP_SYNC)
+  XLAT(MAP_SYNC),
+#endif
 #if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
 #if defined(MAP_UNINITIALIZED) || (defined(HAVE_DECL_MAP_UNINITIALIZED) && HAVE_DECL_MAP_UNINITIALIZED)
   XLAT(MAP_UNINITIALIZED),
diff --git a/xlat/mmap_flags.in b/xlat/mmap_flags.in
index e9fde44..60b74fc 100644
--- a/xlat/mmap_flags.in
+++ b/xlat/mmap_flags.in
@@ -1,5 +1,6 @@
 MAP_SHARED
 MAP_PRIVATE
+MAP_SHARED_VALIDATE
 MAP_FIXED
 MAP_ANONYMOUS
 MAP_32BIT
@@ -48,6 +49,7 @@
 MAP_HASSEMAPHORE
 MAP_STACK
 MAP_HUGETLB
+MAP_SYNC
 #if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
 MAP_UNINITIALIZED
 #endif
diff --git a/xlat/msg_flags.h b/xlat/msg_flags.h
index f4729ba..6518c9b 100644
--- a/xlat/msg_flags.h
+++ b/xlat/msg_flags.h
@@ -2,6 +2,9 @@
 #if !(defined(MSG_BATCH) || (defined(HAVE_DECL_MSG_BATCH) && HAVE_DECL_MSG_BATCH))
 # define MSG_BATCH 0x40000
 #endif
+#if !(defined(MSG_ZEROCOPY) || (defined(HAVE_DECL_MSG_ZEROCOPY) && HAVE_DECL_MSG_ZEROCOPY))
+# define MSG_ZEROCOPY 0x20000000
+#endif
 
 #ifndef IN_MPERS
 
@@ -58,6 +61,7 @@
   XLAT(MSG_WAITFORONE),
 #endif
  XLAT(MSG_BATCH),
+ XLAT(MSG_ZEROCOPY),
 #if defined(MSG_EOF) || (defined(HAVE_DECL_MSG_EOF) && HAVE_DECL_MSG_EOF)
   XLAT(MSG_EOF),
 #endif
diff --git a/xlat/msg_flags.in b/xlat/msg_flags.in
index cf6b83c..1fdd819 100644
--- a/xlat/msg_flags.in
+++ b/xlat/msg_flags.in
@@ -16,6 +16,7 @@
 MSG_MORE
 MSG_WAITFORONE
 MSG_BATCH	0x40000
+MSG_ZEROCOPY	0x20000000
 MSG_EOF
 MSG_FASTOPEN
 MSG_CMSG_CLOEXEC
diff --git a/xlat/nt_descriptor_types.h b/xlat/nt_descriptor_types.h
index 715c281..edab7af 100644
--- a/xlat/nt_descriptor_types.h
+++ b/xlat/nt_descriptor_types.h
@@ -1,4 +1,193 @@
 /* Generated by ./xlat/gen.sh from ./xlat/nt_descriptor_types.in; do not edit. */
+#if !(defined(NT_PRSTATUS) || (defined(HAVE_DECL_NT_PRSTATUS) && HAVE_DECL_NT_PRSTATUS))
+# define NT_PRSTATUS 1
+#endif
+#if !(defined(NT_FPREGSET) || (defined(HAVE_DECL_NT_FPREGSET) && HAVE_DECL_NT_FPREGSET))
+# define NT_FPREGSET 2
+#endif
+#if !(defined(NT_PRPSINFO) || (defined(HAVE_DECL_NT_PRPSINFO) && HAVE_DECL_NT_PRPSINFO))
+# define NT_PRPSINFO 3
+#endif
+#if !(defined(NT_PRXREG) || (defined(HAVE_DECL_NT_PRXREG) && HAVE_DECL_NT_PRXREG))
+# define NT_PRXREG 4
+#endif
+#if !(defined(NT_TASKSTRUCT) || (defined(HAVE_DECL_NT_TASKSTRUCT) && HAVE_DECL_NT_TASKSTRUCT))
+# define NT_TASKSTRUCT 4
+#endif
+#if !(defined(NT_PLATFORM) || (defined(HAVE_DECL_NT_PLATFORM) && HAVE_DECL_NT_PLATFORM))
+# define NT_PLATFORM 5
+#endif
+#if !(defined(NT_AUXV) || (defined(HAVE_DECL_NT_AUXV) && HAVE_DECL_NT_AUXV))
+# define NT_AUXV 6
+#endif
+#if !(defined(NT_GWINDOWS) || (defined(HAVE_DECL_NT_GWINDOWS) && HAVE_DECL_NT_GWINDOWS))
+# define NT_GWINDOWS 7
+#endif
+#if !(defined(NT_ASRS) || (defined(HAVE_DECL_NT_ASRS) && HAVE_DECL_NT_ASRS))
+# define NT_ASRS 8
+#endif
+#if !(defined(NT_PSTATUS) || (defined(HAVE_DECL_NT_PSTATUS) && HAVE_DECL_NT_PSTATUS))
+# define NT_PSTATUS 10
+#endif
+#if !(defined(NT_PSINFO) || (defined(HAVE_DECL_NT_PSINFO) && HAVE_DECL_NT_PSINFO))
+# define NT_PSINFO 13
+#endif
+#if !(defined(NT_PRCRED) || (defined(HAVE_DECL_NT_PRCRED) && HAVE_DECL_NT_PRCRED))
+# define NT_PRCRED 14
+#endif
+#if !(defined(NT_UTSNAME) || (defined(HAVE_DECL_NT_UTSNAME) && HAVE_DECL_NT_UTSNAME))
+# define NT_UTSNAME 15
+#endif
+#if !(defined(NT_LWPSTATUS) || (defined(HAVE_DECL_NT_LWPSTATUS) && HAVE_DECL_NT_LWPSTATUS))
+# define NT_LWPSTATUS 16
+#endif
+#if !(defined(NT_LWPSINFO) || (defined(HAVE_DECL_NT_LWPSINFO) && HAVE_DECL_NT_LWPSINFO))
+# define NT_LWPSINFO 17
+#endif
+#if !(defined(NT_PRFPXREG) || (defined(HAVE_DECL_NT_PRFPXREG) && HAVE_DECL_NT_PRFPXREG))
+# define NT_PRFPXREG 20
+#endif
+#if !(defined(NT_SIGINFO) || (defined(HAVE_DECL_NT_SIGINFO) && HAVE_DECL_NT_SIGINFO))
+# define NT_SIGINFO 0x53494749
+#endif
+#if !(defined(NT_FILE) || (defined(HAVE_DECL_NT_FILE) && HAVE_DECL_NT_FILE))
+# define NT_FILE 0x46494c45
+#endif
+#if !(defined(NT_PRXFPREG) || (defined(HAVE_DECL_NT_PRXFPREG) && HAVE_DECL_NT_PRXFPREG))
+# define NT_PRXFPREG 0x46e62b7f
+#endif
+#if !(defined(NT_PPC_VMX) || (defined(HAVE_DECL_NT_PPC_VMX) && HAVE_DECL_NT_PPC_VMX))
+# define NT_PPC_VMX 0x100
+#endif
+#if !(defined(NT_PPC_SPE) || (defined(HAVE_DECL_NT_PPC_SPE) && HAVE_DECL_NT_PPC_SPE))
+# define NT_PPC_SPE 0x101
+#endif
+#if !(defined(NT_PPC_VSX) || (defined(HAVE_DECL_NT_PPC_VSX) && HAVE_DECL_NT_PPC_VSX))
+# define NT_PPC_VSX 0x102
+#endif
+#if !(defined(NT_PPC_TAR) || (defined(HAVE_DECL_NT_PPC_TAR) && HAVE_DECL_NT_PPC_TAR))
+# define NT_PPC_TAR 0x103
+#endif
+#if !(defined(NT_PPC_PPR) || (defined(HAVE_DECL_NT_PPC_PPR) && HAVE_DECL_NT_PPC_PPR))
+# define NT_PPC_PPR 0x104
+#endif
+#if !(defined(NT_PPC_DSCR) || (defined(HAVE_DECL_NT_PPC_DSCR) && HAVE_DECL_NT_PPC_DSCR))
+# define NT_PPC_DSCR 0x105
+#endif
+#if !(defined(NT_PPC_EBB) || (defined(HAVE_DECL_NT_PPC_EBB) && HAVE_DECL_NT_PPC_EBB))
+# define NT_PPC_EBB 0x106
+#endif
+#if !(defined(NT_PPC_PMU) || (defined(HAVE_DECL_NT_PPC_PMU) && HAVE_DECL_NT_PPC_PMU))
+# define NT_PPC_PMU 0x107
+#endif
+#if !(defined(NT_PPC_TM_CGPR) || (defined(HAVE_DECL_NT_PPC_TM_CGPR) && HAVE_DECL_NT_PPC_TM_CGPR))
+# define NT_PPC_TM_CGPR 0x108
+#endif
+#if !(defined(NT_PPC_TM_CFPR) || (defined(HAVE_DECL_NT_PPC_TM_CFPR) && HAVE_DECL_NT_PPC_TM_CFPR))
+# define NT_PPC_TM_CFPR 0x109
+#endif
+#if !(defined(NT_PPC_TM_CVMX) || (defined(HAVE_DECL_NT_PPC_TM_CVMX) && HAVE_DECL_NT_PPC_TM_CVMX))
+# define NT_PPC_TM_CVMX 0x10a
+#endif
+#if !(defined(NT_PPC_TM_CVSX) || (defined(HAVE_DECL_NT_PPC_TM_CVSX) && HAVE_DECL_NT_PPC_TM_CVSX))
+# define NT_PPC_TM_CVSX 0x10b
+#endif
+#if !(defined(NT_PPC_TM_SPR) || (defined(HAVE_DECL_NT_PPC_TM_SPR) && HAVE_DECL_NT_PPC_TM_SPR))
+# define NT_PPC_TM_SPR 0x10c
+#endif
+#if !(defined(NT_PPC_TM_CTAR) || (defined(HAVE_DECL_NT_PPC_TM_CTAR) && HAVE_DECL_NT_PPC_TM_CTAR))
+# define NT_PPC_TM_CTAR 0x10d
+#endif
+#if !(defined(NT_PPC_TM_CPPR) || (defined(HAVE_DECL_NT_PPC_TM_CPPR) && HAVE_DECL_NT_PPC_TM_CPPR))
+# define NT_PPC_TM_CPPR 0x10e
+#endif
+#if !(defined(NT_PPC_TM_CDSCR) || (defined(HAVE_DECL_NT_PPC_TM_CDSCR) && HAVE_DECL_NT_PPC_TM_CDSCR))
+# define NT_PPC_TM_CDSCR 0x10f
+#endif
+#if !(defined(NT_PPC_PKEY) || (defined(HAVE_DECL_NT_PPC_PKEY) && HAVE_DECL_NT_PPC_PKEY))
+# define NT_PPC_PKEY 0x110
+#endif
+#if !(defined(NT_386_TLS) || (defined(HAVE_DECL_NT_386_TLS) && HAVE_DECL_NT_386_TLS))
+# define NT_386_TLS 0x200
+#endif
+#if !(defined(NT_386_IOPERM) || (defined(HAVE_DECL_NT_386_IOPERM) && HAVE_DECL_NT_386_IOPERM))
+# define NT_386_IOPERM 0x201
+#endif
+#if !(defined(NT_X86_XSTATE) || (defined(HAVE_DECL_NT_X86_XSTATE) && HAVE_DECL_NT_X86_XSTATE))
+# define NT_X86_XSTATE 0x202
+#endif
+#if !(defined(NT_S390_HIGH_GPRS) || (defined(HAVE_DECL_NT_S390_HIGH_GPRS) && HAVE_DECL_NT_S390_HIGH_GPRS))
+# define NT_S390_HIGH_GPRS 0x300
+#endif
+#if !(defined(NT_S390_TIMER) || (defined(HAVE_DECL_NT_S390_TIMER) && HAVE_DECL_NT_S390_TIMER))
+# define NT_S390_TIMER 0x301
+#endif
+#if !(defined(NT_S390_TODCMP) || (defined(HAVE_DECL_NT_S390_TODCMP) && HAVE_DECL_NT_S390_TODCMP))
+# define NT_S390_TODCMP 0x302
+#endif
+#if !(defined(NT_S390_TODPREG) || (defined(HAVE_DECL_NT_S390_TODPREG) && HAVE_DECL_NT_S390_TODPREG))
+# define NT_S390_TODPREG 0x303
+#endif
+#if !(defined(NT_S390_CTRS) || (defined(HAVE_DECL_NT_S390_CTRS) && HAVE_DECL_NT_S390_CTRS))
+# define NT_S390_CTRS 0x304
+#endif
+#if !(defined(NT_S390_PREFIX) || (defined(HAVE_DECL_NT_S390_PREFIX) && HAVE_DECL_NT_S390_PREFIX))
+# define NT_S390_PREFIX 0x305
+#endif
+#if !(defined(NT_S390_LAST_BREAK) || (defined(HAVE_DECL_NT_S390_LAST_BREAK) && HAVE_DECL_NT_S390_LAST_BREAK))
+# define NT_S390_LAST_BREAK 0x306
+#endif
+#if !(defined(NT_S390_SYSTEM_CALL) || (defined(HAVE_DECL_NT_S390_SYSTEM_CALL) && HAVE_DECL_NT_S390_SYSTEM_CALL))
+# define NT_S390_SYSTEM_CALL 0x307
+#endif
+#if !(defined(NT_S390_TDB) || (defined(HAVE_DECL_NT_S390_TDB) && HAVE_DECL_NT_S390_TDB))
+# define NT_S390_TDB 0x308
+#endif
+#if !(defined(NT_S390_VXRS_LOW) || (defined(HAVE_DECL_NT_S390_VXRS_LOW) && HAVE_DECL_NT_S390_VXRS_LOW))
+# define NT_S390_VXRS_LOW 0x309
+#endif
+#if !(defined(NT_S390_VXRS_HIGH) || (defined(HAVE_DECL_NT_S390_VXRS_HIGH) && HAVE_DECL_NT_S390_VXRS_HIGH))
+# define NT_S390_VXRS_HIGH 0x30a
+#endif
+#if !(defined(NT_S390_GS_CB) || (defined(HAVE_DECL_NT_S390_GS_CB) && HAVE_DECL_NT_S390_GS_CB))
+# define NT_S390_GS_CB 0x30b
+#endif
+#if !(defined(NT_S390_GS_BC) || (defined(HAVE_DECL_NT_S390_GS_BC) && HAVE_DECL_NT_S390_GS_BC))
+# define NT_S390_GS_BC 0x30c
+#endif
+#if !(defined(NT_S390_RI_CB) || (defined(HAVE_DECL_NT_S390_RI_CB) && HAVE_DECL_NT_S390_RI_CB))
+# define NT_S390_RI_CB 0x30d
+#endif
+#if !(defined(NT_ARM_VFP) || (defined(HAVE_DECL_NT_ARM_VFP) && HAVE_DECL_NT_ARM_VFP))
+# define NT_ARM_VFP 0x400
+#endif
+#if !(defined(NT_ARM_TLS) || (defined(HAVE_DECL_NT_ARM_TLS) && HAVE_DECL_NT_ARM_TLS))
+# define NT_ARM_TLS 0x401
+#endif
+#if !(defined(NT_ARM_HW_BREAK) || (defined(HAVE_DECL_NT_ARM_HW_BREAK) && HAVE_DECL_NT_ARM_HW_BREAK))
+# define NT_ARM_HW_BREAK 0x402
+#endif
+#if !(defined(NT_ARM_HW_WATCH) || (defined(HAVE_DECL_NT_ARM_HW_WATCH) && HAVE_DECL_NT_ARM_HW_WATCH))
+# define NT_ARM_HW_WATCH 0x403
+#endif
+#if !(defined(NT_ARM_SYSTEM_CALL) || (defined(HAVE_DECL_NT_ARM_SYSTEM_CALL) && HAVE_DECL_NT_ARM_SYSTEM_CALL))
+# define NT_ARM_SYSTEM_CALL 0x404
+#endif
+#if !(defined(NT_ARM_SVE) || (defined(HAVE_DECL_NT_ARM_SVE) && HAVE_DECL_NT_ARM_SVE))
+# define NT_ARM_SVE 0x405
+#endif
+#if !(defined(NT_METAG_CBUF) || (defined(HAVE_DECL_NT_METAG_CBUF) && HAVE_DECL_NT_METAG_CBUF))
+# define NT_METAG_CBUF 0x500
+#endif
+#if !(defined(NT_METAG_RPIPE) || (defined(HAVE_DECL_NT_METAG_RPIPE) && HAVE_DECL_NT_METAG_RPIPE))
+# define NT_METAG_RPIPE 0x501
+#endif
+#if !(defined(NT_METAG_TLS) || (defined(HAVE_DECL_NT_METAG_TLS) && HAVE_DECL_NT_METAG_TLS))
+# define NT_METAG_TLS 0x502
+#endif
+#if !(defined(NT_ARC_V2) || (defined(HAVE_DECL_NT_ARC_V2) && HAVE_DECL_NT_ARC_V2))
+# define NT_ARC_V2 0x600
+#endif
 
 #ifdef IN_MPERS
 
@@ -8,75 +197,69 @@
 
 static
 const struct xlat nt_descriptor_types[] = {
-#if defined(NT_PRSTATUS) || (defined(HAVE_DECL_NT_PRSTATUS) && HAVE_DECL_NT_PRSTATUS)
-  XLAT(NT_PRSTATUS),
-#endif
-#if defined(NT_FPREGSET) || (defined(HAVE_DECL_NT_FPREGSET) && HAVE_DECL_NT_FPREGSET)
-  XLAT(NT_FPREGSET),
-#endif
-#if defined(NT_PRPSINFO) || (defined(HAVE_DECL_NT_PRPSINFO) && HAVE_DECL_NT_PRPSINFO)
-  XLAT(NT_PRPSINFO),
-#endif
-#if defined(NT_PRXREG) || (defined(HAVE_DECL_NT_PRXREG) && HAVE_DECL_NT_PRXREG)
-  XLAT(NT_PRXREG),
-#endif
-#if defined(NT_TASKSTRUCT) || (defined(HAVE_DECL_NT_TASKSTRUCT) && HAVE_DECL_NT_TASKSTRUCT)
-  XLAT(NT_TASKSTRUCT),
-#endif
-#if defined(NT_PLATFORM) || (defined(HAVE_DECL_NT_PLATFORM) && HAVE_DECL_NT_PLATFORM)
-  XLAT(NT_PLATFORM),
-#endif
-#if defined(NT_AUXV) || (defined(HAVE_DECL_NT_AUXV) && HAVE_DECL_NT_AUXV)
-  XLAT(NT_AUXV),
-#endif
-#if defined(NT_GWINDOWS) || (defined(HAVE_DECL_NT_GWINDOWS) && HAVE_DECL_NT_GWINDOWS)
-  XLAT(NT_GWINDOWS),
-#endif
-#if defined(NT_ASRS) || (defined(HAVE_DECL_NT_ASRS) && HAVE_DECL_NT_ASRS)
-  XLAT(NT_ASRS),
-#endif
-#if defined(NT_PSTATUS) || (defined(HAVE_DECL_NT_PSTATUS) && HAVE_DECL_NT_PSTATUS)
-  XLAT(NT_PSTATUS),
-#endif
-#if defined(NT_PSINFO) || (defined(HAVE_DECL_NT_PSINFO) && HAVE_DECL_NT_PSINFO)
-  XLAT(NT_PSINFO),
-#endif
-#if defined(NT_PRCRED) || (defined(HAVE_DECL_NT_PRCRED) && HAVE_DECL_NT_PRCRED)
-  XLAT(NT_PRCRED),
-#endif
-#if defined(NT_UTSNAME) || (defined(HAVE_DECL_NT_UTSNAME) && HAVE_DECL_NT_UTSNAME)
-  XLAT(NT_UTSNAME),
-#endif
-#if defined(NT_LWPSTATUS) || (defined(HAVE_DECL_NT_LWPSTATUS) && HAVE_DECL_NT_LWPSTATUS)
-  XLAT(NT_LWPSTATUS),
-#endif
-#if defined(NT_LWPSINFO) || (defined(HAVE_DECL_NT_LWPSINFO) && HAVE_DECL_NT_LWPSINFO)
-  XLAT(NT_LWPSINFO),
-#endif
-#if defined(NT_PRFPXREG) || (defined(HAVE_DECL_NT_PRFPXREG) && HAVE_DECL_NT_PRFPXREG)
-  XLAT(NT_PRFPXREG),
-#endif
-#if defined(NT_PRXFPREG) || (defined(HAVE_DECL_NT_PRXFPREG) && HAVE_DECL_NT_PRXFPREG)
-  XLAT(NT_PRXFPREG),
-#endif
-#if defined(NT_PPC_VMX) || (defined(HAVE_DECL_NT_PPC_VMX) && HAVE_DECL_NT_PPC_VMX)
-  XLAT(NT_PPC_VMX),
-#endif
-#if defined(NT_PPC_SPE) || (defined(HAVE_DECL_NT_PPC_SPE) && HAVE_DECL_NT_PPC_SPE)
-  XLAT(NT_PPC_SPE),
-#endif
-#if defined(NT_PPC_VSX) || (defined(HAVE_DECL_NT_PPC_VSX) && HAVE_DECL_NT_PPC_VSX)
-  XLAT(NT_PPC_VSX),
-#endif
-#if defined(NT_386_TLS) || (defined(HAVE_DECL_NT_386_TLS) && HAVE_DECL_NT_386_TLS)
-  XLAT(NT_386_TLS),
-#endif
-#if defined(NT_386_IOPERM) || (defined(HAVE_DECL_NT_386_IOPERM) && HAVE_DECL_NT_386_IOPERM)
-  XLAT(NT_386_IOPERM),
-#endif
-#if defined(NT_X86_XSTATE) || (defined(HAVE_DECL_NT_X86_XSTATE) && HAVE_DECL_NT_X86_XSTATE)
-  XLAT(NT_X86_XSTATE),
-#endif
+ XLAT(NT_PRSTATUS),
+ XLAT(NT_FPREGSET),
+ XLAT(NT_PRPSINFO),
+ XLAT(NT_PRXREG),
+ XLAT(NT_TASKSTRUCT),
+ XLAT(NT_PLATFORM),
+ XLAT(NT_AUXV),
+ XLAT(NT_GWINDOWS),
+ XLAT(NT_ASRS),
+ XLAT(NT_PSTATUS),
+ XLAT(NT_PSINFO),
+ XLAT(NT_PRCRED),
+ XLAT(NT_UTSNAME),
+ XLAT(NT_LWPSTATUS),
+ XLAT(NT_LWPSINFO),
+ XLAT(NT_PRFPXREG),
+ XLAT(NT_SIGINFO),
+ XLAT(NT_FILE),
+ XLAT(NT_PRXFPREG),
+ XLAT(NT_PPC_VMX),
+ XLAT(NT_PPC_SPE),
+ XLAT(NT_PPC_VSX),
+ XLAT(NT_PPC_TAR),
+ XLAT(NT_PPC_PPR),
+ XLAT(NT_PPC_DSCR),
+ XLAT(NT_PPC_EBB),
+ XLAT(NT_PPC_PMU),
+ XLAT(NT_PPC_TM_CGPR),
+ XLAT(NT_PPC_TM_CFPR),
+ XLAT(NT_PPC_TM_CVMX),
+ XLAT(NT_PPC_TM_CVSX),
+ XLAT(NT_PPC_TM_SPR),
+ XLAT(NT_PPC_TM_CTAR),
+ XLAT(NT_PPC_TM_CPPR),
+ XLAT(NT_PPC_TM_CDSCR),
+ XLAT(NT_PPC_PKEY),
+ XLAT(NT_386_TLS),
+ XLAT(NT_386_IOPERM),
+ XLAT(NT_X86_XSTATE),
+ XLAT(NT_S390_HIGH_GPRS),
+ XLAT(NT_S390_TIMER),
+ XLAT(NT_S390_TODCMP),
+ XLAT(NT_S390_TODPREG),
+ XLAT(NT_S390_CTRS),
+ XLAT(NT_S390_PREFIX),
+ XLAT(NT_S390_LAST_BREAK),
+ XLAT(NT_S390_SYSTEM_CALL),
+ XLAT(NT_S390_TDB),
+ XLAT(NT_S390_VXRS_LOW),
+ XLAT(NT_S390_VXRS_HIGH),
+ XLAT(NT_S390_GS_CB),
+ XLAT(NT_S390_GS_BC),
+ XLAT(NT_S390_RI_CB),
+ XLAT(NT_ARM_VFP),
+ XLAT(NT_ARM_TLS),
+ XLAT(NT_ARM_HW_BREAK),
+ XLAT(NT_ARM_HW_WATCH),
+ XLAT(NT_ARM_SYSTEM_CALL),
+ XLAT(NT_ARM_SVE),
+ XLAT(NT_METAG_CBUF),
+ XLAT(NT_METAG_RPIPE),
+ XLAT(NT_METAG_TLS),
+ XLAT(NT_ARC_V2),
  XLAT_END
 };
 
diff --git a/xlat/nt_descriptor_types.in b/xlat/nt_descriptor_types.in
index 5e47d66..d90b870 100644
--- a/xlat/nt_descriptor_types.in
+++ b/xlat/nt_descriptor_types.in
@@ -1,23 +1,63 @@
-NT_PRSTATUS
-NT_FPREGSET
-NT_PRPSINFO
-NT_PRXREG
-NT_TASKSTRUCT
-NT_PLATFORM
-NT_AUXV
-NT_GWINDOWS
-NT_ASRS
-NT_PSTATUS
-NT_PSINFO
-NT_PRCRED
-NT_UTSNAME
-NT_LWPSTATUS
-NT_LWPSINFO
-NT_PRFPXREG
-NT_PRXFPREG
-NT_PPC_VMX
-NT_PPC_SPE
-NT_PPC_VSX
-NT_386_TLS
-NT_386_IOPERM
-NT_X86_XSTATE
+NT_PRSTATUS	1
+NT_FPREGSET	2
+NT_PRPSINFO	3
+NT_PRXREG	4
+NT_TASKSTRUCT	4
+NT_PLATFORM	5
+NT_AUXV		6
+NT_GWINDOWS	7
+NT_ASRS		8
+NT_PSTATUS	10
+NT_PSINFO	13
+NT_PRCRED	14
+NT_UTSNAME	15
+NT_LWPSTATUS	16
+NT_LWPSINFO	17
+NT_PRFPXREG	20
+NT_SIGINFO      0x53494749
+NT_FILE         0x46494c45
+NT_PRXFPREG     0x46e62b7f
+NT_PPC_VMX	0x100
+NT_PPC_SPE	0x101
+NT_PPC_VSX	0x102
+NT_PPC_TAR	0x103
+NT_PPC_PPR	0x104
+NT_PPC_DSCR	0x105
+NT_PPC_EBB	0x106
+NT_PPC_PMU	0x107
+NT_PPC_TM_CGPR	0x108
+NT_PPC_TM_CFPR	0x109
+NT_PPC_TM_CVMX	0x10a
+NT_PPC_TM_CVSX	0x10b
+NT_PPC_TM_SPR	0x10c
+NT_PPC_TM_CTAR	0x10d
+NT_PPC_TM_CPPR	0x10e
+NT_PPC_TM_CDSCR	0x10f
+NT_PPC_PKEY	0x110
+NT_386_TLS	0x200
+NT_386_IOPERM	0x201
+NT_X86_XSTATE	0x202
+NT_S390_HIGH_GPRS	0x300
+NT_S390_TIMER	0x301
+NT_S390_TODCMP	0x302
+NT_S390_TODPREG	0x303
+NT_S390_CTRS	0x304
+NT_S390_PREFIX	0x305
+NT_S390_LAST_BREAK	0x306
+NT_S390_SYSTEM_CALL	0x307
+NT_S390_TDB	0x308
+NT_S390_VXRS_LOW	0x309
+NT_S390_VXRS_HIGH	0x30a
+NT_S390_GS_CB	0x30b
+NT_S390_GS_BC	0x30c
+NT_S390_RI_CB	0x30d
+NT_ARM_VFP	0x400
+NT_ARM_TLS	0x401
+NT_ARM_HW_BREAK	0x402
+NT_ARM_HW_WATCH	0x403
+NT_ARM_SYSTEM_CALL	0x404
+NT_ARM_SVE	0x405
+NT_METAG_CBUF	0x500
+NT_METAG_RPIPE	0x501
+NT_METAG_TLS	0x502
+NT_ARC_V2	0x600
diff --git a/xlat/open_mode_flags.h b/xlat/open_mode_flags.h
index f81f16b..1dfb186 100644
--- a/xlat/open_mode_flags.h
+++ b/xlat/open_mode_flags.h
@@ -1,8 +1,6 @@
 /* Generated by ./xlat/gen.sh from ./xlat/open_mode_flags.in; do not edit. */
 #if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
 #endif
-#if defined(O_TMPFILE) && defined(O_DIRECTORY)
-#endif
 
 #ifndef IN_MPERS
 
@@ -25,9 +23,13 @@
 #if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
   XLAT(O_NONBLOCK),
 #endif
+
 #if defined(O_SYNC) || (defined(HAVE_DECL_O_SYNC) && HAVE_DECL_O_SYNC)
   XLAT(O_SYNC),
 #endif
+#if defined(__O_SYNC) || (defined(HAVE_DECL___O_SYNC) && HAVE_DECL___O_SYNC)
+  XLAT(__O_SYNC),
+#endif
 #if defined(O_ASYNC) || (defined(HAVE_DECL_O_ASYNC) && HAVE_DECL_O_ASYNC)
   XLAT(O_ASYNC),
 #endif
@@ -51,9 +53,6 @@
 #if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
   XLAT(O_LARGEFILE),
 #endif
-#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
-  XLAT(O_DIRECTORY),
-#endif
 #if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
   XLAT(O_NOFOLLOW),
 #endif
@@ -66,9 +65,15 @@
 #if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
   XLAT(O_PATH),
 #endif
-#if defined(O_TMPFILE) && defined(O_DIRECTORY)
-/* The kernel & C libraries often inline O_DIRECTORY */
-{ O_TMPFILE & ~O_DIRECTORY, "O_TMPFILE" },
+
+#if defined(O_TMPFILE) || (defined(HAVE_DECL_O_TMPFILE) && HAVE_DECL_O_TMPFILE)
+  XLAT(O_TMPFILE),
+#endif
+#if defined(__O_TMPFILE) || (defined(HAVE_DECL___O_TMPFILE) && HAVE_DECL___O_TMPFILE)
+  XLAT(__O_TMPFILE),
+#endif
+#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
+  XLAT(O_DIRECTORY),
 #endif
 #if defined(FNDELAY) || (defined(HAVE_DECL_FNDELAY) && HAVE_DECL_FNDELAY)
   XLAT(FNDELAY),
diff --git a/xlat/open_mode_flags.in b/xlat/open_mode_flags.in
index 30bed26..e237105 100644
--- a/xlat/open_mode_flags.in
+++ b/xlat/open_mode_flags.in
@@ -4,7 +4,9 @@
 O_TRUNC
 O_APPEND
 O_NONBLOCK
+/* O_SYNC should be listed before O_DSYNC and __O_SYNC */
 O_SYNC
+__O_SYNC
 O_ASYNC
 O_DSYNC
 O_RSYNC
@@ -14,15 +16,14 @@
 O_PRIV
 O_DIRECT
 O_LARGEFILE
-O_DIRECTORY
 O_NOFOLLOW
 O_NOATIME
 O_CLOEXEC
 O_PATH
-#if defined(O_TMPFILE) && defined(O_DIRECTORY)
-/* The kernel & C libraries often inline O_DIRECTORY */
-{ O_TMPFILE & ~O_DIRECTORY, "O_TMPFILE" },
-#endif
+/* O_TMPFILE should be listed before O_DIRECTORY and __O_TMPFILE */
+O_TMPFILE
+__O_TMPFILE
+O_DIRECTORY
 FNDELAY
 FAPPEND
 FMARK
diff --git a/xlat/perf_branch_sample_type.h b/xlat/perf_branch_sample_type.h
index 6d71093..7c6a5bf 100644
--- a/xlat/perf_branch_sample_type.h
+++ b/xlat/perf_branch_sample_type.h
@@ -47,6 +47,9 @@
 #if !(defined(PERF_SAMPLE_BRANCH_NO_CYCLES) || (defined(HAVE_DECL_PERF_SAMPLE_BRANCH_NO_CYCLES) && HAVE_DECL_PERF_SAMPLE_BRANCH_NO_CYCLES))
 # define PERF_SAMPLE_BRANCH_NO_CYCLES 1 << 15
 #endif
+#if !(defined(PERF_SAMPLE_BRANCH_TYPE_SAVE) || (defined(HAVE_DECL_PERF_SAMPLE_BRANCH_TYPE_SAVE) && HAVE_DECL_PERF_SAMPLE_BRANCH_TYPE_SAVE))
+# define PERF_SAMPLE_BRANCH_TYPE_SAVE 1 << 16
+#endif
 
 #ifdef IN_MPERS
 
@@ -72,6 +75,7 @@
  XLAT(PERF_SAMPLE_BRANCH_CALL),
  XLAT(PERF_SAMPLE_BRANCH_NO_FLAGS),
  XLAT(PERF_SAMPLE_BRANCH_NO_CYCLES),
+ XLAT(PERF_SAMPLE_BRANCH_TYPE_SAVE),
  XLAT_END
 };
 
diff --git a/xlat/perf_branch_sample_type.in b/xlat/perf_branch_sample_type.in
index 0e33d98..9370569 100644
--- a/xlat/perf_branch_sample_type.in
+++ b/xlat/perf_branch_sample_type.in
@@ -14,3 +14,4 @@
 PERF_SAMPLE_BRANCH_CALL       1 << 13
 PERF_SAMPLE_BRANCH_NO_FLAGS   1 << 14
 PERF_SAMPLE_BRANCH_NO_CYCLES  1 << 15
+PERF_SAMPLE_BRANCH_TYPE_SAVE  1 << 16
diff --git a/xlat/perf_event_sample_format.h b/xlat/perf_event_sample_format.h
index c4b0422..42094ba 100644
--- a/xlat/perf_event_sample_format.h
+++ b/xlat/perf_event_sample_format.h
@@ -56,6 +56,9 @@
 #if !(defined(PERF_SAMPLE_REGS_INTR) || (defined(HAVE_DECL_PERF_SAMPLE_REGS_INTR) && HAVE_DECL_PERF_SAMPLE_REGS_INTR))
 # define PERF_SAMPLE_REGS_INTR 1 << 18
 #endif
+#if !(defined(PERF_SAMPLE_PHYS_ADDR) || (defined(HAVE_DECL_PERF_SAMPLE_PHYS_ADDR) && HAVE_DECL_PERF_SAMPLE_PHYS_ADDR))
+# define PERF_SAMPLE_PHYS_ADDR 1 << 19
+#endif
 
 #ifdef IN_MPERS
 
@@ -84,6 +87,7 @@
  XLAT(PERF_SAMPLE_IDENTIFIER),
  XLAT(PERF_SAMPLE_TRANSACTION),
  XLAT(PERF_SAMPLE_REGS_INTR),
+ XLAT(PERF_SAMPLE_PHYS_ADDR),
  XLAT_END
 };
 
diff --git a/xlat/perf_event_sample_format.in b/xlat/perf_event_sample_format.in
index 6203e17..d310754 100644
--- a/xlat/perf_event_sample_format.in
+++ b/xlat/perf_event_sample_format.in
@@ -17,3 +17,4 @@
 PERF_SAMPLE_IDENTIFIER    1 << 16
 PERF_SAMPLE_TRANSACTION   1 << 17
 PERF_SAMPLE_REGS_INTR     1 << 18
+PERF_SAMPLE_PHYS_ADDR     1 << 19
diff --git a/xlat/personality_flags.h b/xlat/personality_flags.h
index 1941e14..6c32b73 100644
--- a/xlat/personality_flags.h
+++ b/xlat/personality_flags.h
@@ -1,4 +1,37 @@
 /* Generated by ./xlat/gen.sh from ./xlat/personality_flags.in; do not edit. */
+#if !(defined(UNAME26) || (defined(HAVE_DECL_UNAME26) && HAVE_DECL_UNAME26))
+# define UNAME26 0x0020000
+#endif
+#if !(defined(ADDR_NO_RANDOMIZE) || (defined(HAVE_DECL_ADDR_NO_RANDOMIZE) && HAVE_DECL_ADDR_NO_RANDOMIZE))
+# define ADDR_NO_RANDOMIZE 0x0040000
+#endif
+#if !(defined(FDPIC_FUNCPTRS) || (defined(HAVE_DECL_FDPIC_FUNCPTRS) && HAVE_DECL_FDPIC_FUNCPTRS))
+# define FDPIC_FUNCPTRS 0x0080000
+#endif
+#if !(defined(MMAP_PAGE_ZERO) || (defined(HAVE_DECL_MMAP_PAGE_ZERO) && HAVE_DECL_MMAP_PAGE_ZERO))
+# define MMAP_PAGE_ZERO 0x0100000
+#endif
+#if !(defined(ADDR_COMPAT_LAYOUT) || (defined(HAVE_DECL_ADDR_COMPAT_LAYOUT) && HAVE_DECL_ADDR_COMPAT_LAYOUT))
+# define ADDR_COMPAT_LAYOUT 0x0200000
+#endif
+#if !(defined(READ_IMPLIES_EXEC) || (defined(HAVE_DECL_READ_IMPLIES_EXEC) && HAVE_DECL_READ_IMPLIES_EXEC))
+# define READ_IMPLIES_EXEC 0x0400000
+#endif
+#if !(defined(ADDR_LIMIT_32BIT) || (defined(HAVE_DECL_ADDR_LIMIT_32BIT) && HAVE_DECL_ADDR_LIMIT_32BIT))
+# define ADDR_LIMIT_32BIT 0x0800000
+#endif
+#if !(defined(SHORT_INODE) || (defined(HAVE_DECL_SHORT_INODE) && HAVE_DECL_SHORT_INODE))
+# define SHORT_INODE 0x1000000
+#endif
+#if !(defined(WHOLE_SECONDS) || (defined(HAVE_DECL_WHOLE_SECONDS) && HAVE_DECL_WHOLE_SECONDS))
+# define WHOLE_SECONDS 0x2000000
+#endif
+#if !(defined(STICKY_TIMEOUTS) || (defined(HAVE_DECL_STICKY_TIMEOUTS) && HAVE_DECL_STICKY_TIMEOUTS))
+# define STICKY_TIMEOUTS 0x4000000
+#endif
+#if !(defined(ADDR_LIMIT_3GB) || (defined(HAVE_DECL_ADDR_LIMIT_3GB) && HAVE_DECL_ADDR_LIMIT_3GB))
+# define ADDR_LIMIT_3GB 0x8000000
+#endif
 
 #ifdef IN_MPERS
 
diff --git a/xlat/personality_flags.in b/xlat/personality_flags.in
index a8715e2..886b5b9 100644
--- a/xlat/personality_flags.in
+++ b/xlat/personality_flags.in
@@ -1,12 +1,11 @@
-#unconditional
-UNAME26
-ADDR_NO_RANDOMIZE
-FDPIC_FUNCPTRS
-MMAP_PAGE_ZERO
-ADDR_COMPAT_LAYOUT
-READ_IMPLIES_EXEC
-ADDR_LIMIT_32BIT
-SHORT_INODE
-WHOLE_SECONDS
-STICKY_TIMEOUTS
-ADDR_LIMIT_3GB
+UNAME26			0x0020000
+ADDR_NO_RANDOMIZE	0x0040000
+FDPIC_FUNCPTRS		0x0080000
+MMAP_PAGE_ZERO		0x0100000
+ADDR_COMPAT_LAYOUT	0x0200000
+READ_IMPLIES_EXEC	0x0400000
+ADDR_LIMIT_32BIT	0x0800000
+SHORT_INODE		0x1000000
+WHOLE_SECONDS		0x2000000
+STICKY_TIMEOUTS		0x4000000
+ADDR_LIMIT_3GB		0x8000000
diff --git a/xlat/personality_types.h b/xlat/personality_types.h
index 859ded3..8e1e1e2 100644
--- a/xlat/personality_types.h
+++ b/xlat/personality_types.h
@@ -1,4 +1,73 @@
 /* Generated by ./xlat/gen.sh from ./xlat/personality_types.in; do not edit. */
+#if !(defined(PER_LINUX) || (defined(HAVE_DECL_PER_LINUX) && HAVE_DECL_PER_LINUX))
+# define PER_LINUX 0
+#endif
+#if !(defined(PER_LINUX_32BIT) || (defined(HAVE_DECL_PER_LINUX_32BIT) && HAVE_DECL_PER_LINUX_32BIT))
+# define PER_LINUX_32BIT ADDR_LIMIT_32BIT
+#endif
+#if !(defined(PER_LINUX_FDPIC) || (defined(HAVE_DECL_PER_LINUX_FDPIC) && HAVE_DECL_PER_LINUX_FDPIC))
+# define PER_LINUX_FDPIC FDPIC_FUNCPTRS
+#endif
+#if !(defined(PER_SVR4) || (defined(HAVE_DECL_PER_SVR4) && HAVE_DECL_PER_SVR4))
+# define PER_SVR4 (0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+#endif
+#if !(defined(PER_SVR3) || (defined(HAVE_DECL_PER_SVR3) && HAVE_DECL_PER_SVR3))
+# define PER_SVR3 (0x0002 | STICKY_TIMEOUTS | SHORT_INODE)
+#endif
+#if !(defined(PER_SCOSVR3) || (defined(HAVE_DECL_PER_SCOSVR3) && HAVE_DECL_PER_SCOSVR3))
+# define PER_SCOSVR3 (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE)
+#endif
+#if !(defined(PER_OSR5) || (defined(HAVE_DECL_PER_OSR5) && HAVE_DECL_PER_OSR5))
+# define PER_OSR5 (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS)
+#endif
+#if !(defined(PER_WYSEV386) || (defined(HAVE_DECL_PER_WYSEV386) && HAVE_DECL_PER_WYSEV386))
+# define PER_WYSEV386 (0x0004 | STICKY_TIMEOUTS | SHORT_INODE)
+#endif
+#if !(defined(PER_ISCR4) || (defined(HAVE_DECL_PER_ISCR4) && HAVE_DECL_PER_ISCR4))
+# define PER_ISCR4 (0x0005 | STICKY_TIMEOUTS)
+#endif
+#if !(defined(PER_BSD) || (defined(HAVE_DECL_PER_BSD) && HAVE_DECL_PER_BSD))
+# define PER_BSD 0x0006
+#endif
+#if !(defined(PER_SUNOS) || (defined(HAVE_DECL_PER_SUNOS) && HAVE_DECL_PER_SUNOS))
+# define PER_SUNOS (0x0006 | STICKY_TIMEOUTS)
+#endif
+#if !(defined(PER_XENIX) || (defined(HAVE_DECL_PER_XENIX) && HAVE_DECL_PER_XENIX))
+# define PER_XENIX (0x0007 | STICKY_TIMEOUTS | SHORT_INODE)
+#endif
+#if !(defined(PER_LINUX32) || (defined(HAVE_DECL_PER_LINUX32) && HAVE_DECL_PER_LINUX32))
+# define PER_LINUX32 0x0008
+#endif
+#if !(defined(PER_LINUX32_3GB) || (defined(HAVE_DECL_PER_LINUX32_3GB) && HAVE_DECL_PER_LINUX32_3GB))
+# define PER_LINUX32_3GB (0x0008 | ADDR_LIMIT_3GB)
+#endif
+#if !(defined(PER_IRIX32) || (defined(HAVE_DECL_PER_IRIX32) && HAVE_DECL_PER_IRIX32))
+# define PER_IRIX32 (0x0009 | STICKY_TIMEOUTS)
+#endif
+#if !(defined(PER_IRIXN32) || (defined(HAVE_DECL_PER_IRIXN32) && HAVE_DECL_PER_IRIXN32))
+# define PER_IRIXN32 (0x000a | STICKY_TIMEOUTS)
+#endif
+#if !(defined(PER_IRIX64) || (defined(HAVE_DECL_PER_IRIX64) && HAVE_DECL_PER_IRIX64))
+# define PER_IRIX64 (0x000b | STICKY_TIMEOUTS)
+#endif
+#if !(defined(PER_RISCOS) || (defined(HAVE_DECL_PER_RISCOS) && HAVE_DECL_PER_RISCOS))
+# define PER_RISCOS 0x000c
+#endif
+#if !(defined(PER_SOLARIS) || (defined(HAVE_DECL_PER_SOLARIS) && HAVE_DECL_PER_SOLARIS))
+# define PER_SOLARIS (0x000d | STICKY_TIMEOUTS)
+#endif
+#if !(defined(PER_UW7) || (defined(HAVE_DECL_PER_UW7) && HAVE_DECL_PER_UW7))
+# define PER_UW7 (0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+#endif
+#if !(defined(PER_OSF4) || (defined(HAVE_DECL_PER_OSF4) && HAVE_DECL_PER_OSF4))
+# define PER_OSF4 0x000f
+#endif
+#if !(defined(PER_HPUX) || (defined(HAVE_DECL_PER_HPUX) && HAVE_DECL_PER_HPUX))
+# define PER_HPUX 0x0010
+#endif
+#if !(defined(PER_MASK) || (defined(HAVE_DECL_PER_MASK) && HAVE_DECL_PER_MASK))
+# define PER_MASK 0x00ff
+#endif
 
 #ifdef IN_MPERS
 
@@ -30,6 +99,7 @@
  XLAT(PER_UW7),
  XLAT(PER_OSF4),
  XLAT(PER_HPUX),
+ XLAT(PER_MASK),
  XLAT_END
 };
 
diff --git a/xlat/personality_types.in b/xlat/personality_types.in
index 6832c65..5b2f545 100644
--- a/xlat/personality_types.in
+++ b/xlat/personality_types.in
@@ -1,23 +1,23 @@
-#unconditional
-PER_LINUX
-PER_LINUX_32BIT
-PER_LINUX_FDPIC
-PER_SVR4
-PER_SVR3
-PER_SCOSVR3
-PER_OSR5
-PER_WYSEV386
-PER_ISCR4
-PER_BSD
-PER_SUNOS
-PER_XENIX
-PER_LINUX32
-PER_LINUX32_3GB
-PER_IRIX32
-PER_IRIXN32
-PER_IRIX64
-PER_RISCOS
-PER_SOLARIS
-PER_UW7
-PER_OSF4
-PER_HPUX
+PER_LINUX	0
+PER_LINUX_32BIT	ADDR_LIMIT_32BIT
+PER_LINUX_FDPIC	FDPIC_FUNCPTRS
+PER_SVR4	(0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+PER_SVR3	(0x0002 | STICKY_TIMEOUTS | SHORT_INODE)
+PER_SCOSVR3	(0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE)
+PER_OSR5	(0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS)
+PER_WYSEV386	(0x0004 | STICKY_TIMEOUTS | SHORT_INODE)
+PER_ISCR4	(0x0005 | STICKY_TIMEOUTS)
+PER_BSD		0x0006
+PER_SUNOS	(0x0006 | STICKY_TIMEOUTS)
+PER_XENIX	(0x0007 | STICKY_TIMEOUTS | SHORT_INODE)
+PER_LINUX32	0x0008
+PER_LINUX32_3GB	(0x0008 | ADDR_LIMIT_3GB)
+PER_IRIX32	(0x0009 | STICKY_TIMEOUTS)
+PER_IRIXN32	(0x000a | STICKY_TIMEOUTS)
+PER_IRIX64	(0x000b | STICKY_TIMEOUTS)
+PER_RISCOS	0x000c
+PER_SOLARIS	(0x000d | STICKY_TIMEOUTS)
+PER_UW7		(0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO)
+PER_OSF4	0x000f
+PER_HPUX	0x0010
+PER_MASK	0x00ff
diff --git a/xlat/pkey_access.h b/xlat/pkey_access.h
index 161c9e5..f9f31e0 100644
--- a/xlat/pkey_access.h
+++ b/xlat/pkey_access.h
@@ -5,6 +5,9 @@
 #if !(defined(PKEY_DISABLE_WRITE) || (defined(HAVE_DECL_PKEY_DISABLE_WRITE) && HAVE_DECL_PKEY_DISABLE_WRITE))
 # define PKEY_DISABLE_WRITE 0x2
 #endif
+#if !(defined(PKEY_DISABLE_EXECUTE) || (defined(HAVE_DECL_PKEY_DISABLE_EXECUTE) && HAVE_DECL_PKEY_DISABLE_EXECUTE))
+# define PKEY_DISABLE_EXECUTE 0x4
+#endif
 
 #ifdef IN_MPERS
 
@@ -16,6 +19,7 @@
 const struct xlat pkey_access[] = {
  XLAT(PKEY_DISABLE_ACCESS),
  XLAT(PKEY_DISABLE_WRITE),
+ XLAT(PKEY_DISABLE_EXECUTE),
  XLAT_END
 };
 
diff --git a/xlat/pkey_access.in b/xlat/pkey_access.in
index 37372a8..108eb3b 100644
--- a/xlat/pkey_access.in
+++ b/xlat/pkey_access.in
@@ -1,2 +1,3 @@
 PKEY_DISABLE_ACCESS    0x1
 PKEY_DISABLE_WRITE     0x2
+PKEY_DISABLE_EXECUTE   0x4
diff --git a/xlat/pr_dumpable.h b/xlat/pr_dumpable.h
index b101482..4e625bc 100644
--- a/xlat/pr_dumpable.h
+++ b/xlat/pr_dumpable.h
@@ -1,12 +1,12 @@
 /* Generated by ./xlat/gen.sh from ./xlat/pr_dumpable.in; do not edit. */
 #if !(defined(SUID_DUMP_DISABLE) || (defined(HAVE_DECL_SUID_DUMP_DISABLE) && HAVE_DECL_SUID_DUMP_DISABLE))
-# define SUID_DUMP_DISABLE 0	/* No setuid dumping */
+# define SUID_DUMP_DISABLE 0
 #endif
 #if !(defined(SUID_DUMP_USER) || (defined(HAVE_DECL_SUID_DUMP_USER) && HAVE_DECL_SUID_DUMP_USER))
-# define SUID_DUMP_USER 1	/* Dump as user of process */
+# define SUID_DUMP_USER 1
 #endif
 #if !(defined(SUID_DUMP_ROOT) || (defined(HAVE_DECL_SUID_DUMP_ROOT) && HAVE_DECL_SUID_DUMP_ROOT))
-# define SUID_DUMP_ROOT 2	/* Dump as root */
+# define SUID_DUMP_ROOT 2
 #endif
 
 #ifdef IN_MPERS
@@ -17,7 +17,7 @@
 
 static
 const struct xlat pr_dumpable[] = {
-/* Defined in include/linux/sched.h */
+
  XLAT(SUID_DUMP_DISABLE),
  XLAT(SUID_DUMP_USER),
  XLAT(SUID_DUMP_ROOT),
diff --git a/xlat/pr_fp_mode.h b/xlat/pr_fp_mode.h
index 9027502..4620c48 100644
--- a/xlat/pr_fp_mode.h
+++ b/xlat/pr_fp_mode.h
@@ -1,9 +1,9 @@
 /* Generated by ./xlat/gen.sh from ./xlat/pr_fp_mode.in; do not edit. */
 #if !(defined(PR_FP_MODE_FR) || (defined(HAVE_DECL_PR_FP_MODE_FR) && HAVE_DECL_PR_FP_MODE_FR))
-# define PR_FP_MODE_FR (1 << 0)	/* 64b FP registers */
+# define PR_FP_MODE_FR (1 << 0)
 #endif
 #if !(defined(PR_FP_MODE_FRE) || (defined(HAVE_DECL_PR_FP_MODE_FRE) && HAVE_DECL_PR_FP_MODE_FRE))
-# define PR_FP_MODE_FRE (1 << 1)	/* 32b compatibility */
+# define PR_FP_MODE_FRE (1 << 1)
 #endif
 
 #ifdef IN_MPERS
diff --git a/xlat/ptrace_cmds.h b/xlat/ptrace_cmds.h
index ee9ebe2..107cea4 100644
--- a/xlat/ptrace_cmds.h
+++ b/xlat/ptrace_cmds.h
@@ -113,7 +113,7 @@
 #if defined(PTRACE_SECCOMP_GET_FILTER) || (defined(HAVE_DECL_PTRACE_SECCOMP_GET_FILTER) && HAVE_DECL_PTRACE_SECCOMP_GET_FILTER)
   XLAT(PTRACE_SECCOMP_GET_FILTER),
 #endif
-/* arch-specific */
+
 #if defined(PTRACE_GET_THREAD_AREA) || (defined(HAVE_DECL_PTRACE_GET_THREAD_AREA) && HAVE_DECL_PTRACE_GET_THREAD_AREA)
   XLAT(PTRACE_GET_THREAD_AREA),
 #endif
@@ -129,7 +129,7 @@
 #if defined(PTRACE_SINGLEBLOCK) || (defined(HAVE_DECL_PTRACE_SINGLEBLOCK) && HAVE_DECL_PTRACE_SINGLEBLOCK)
   XLAT(PTRACE_SINGLEBLOCK),
 #endif
-/* arm */
+
 #if defined(PTRACE_GETWMMXREGS) || (defined(HAVE_DECL_PTRACE_GETWMMXREGS) && HAVE_DECL_PTRACE_GETWMMXREGS)
   XLAT(PTRACE_GETWMMXREGS),
 #endif
@@ -154,14 +154,14 @@
 #if defined(PTRACE_SETHBPREGS) || (defined(HAVE_DECL_PTRACE_SETHBPREGS) && HAVE_DECL_PTRACE_SETHBPREGS)
   XLAT(PTRACE_SETHBPREGS),
 #endif
-/* ia64 */
+
 #if defined(PTRACE_OLD_GETSIGINFO) || (defined(HAVE_DECL_PTRACE_OLD_GETSIGINFO) && HAVE_DECL_PTRACE_OLD_GETSIGINFO)
   XLAT(PTRACE_OLD_GETSIGINFO),
 #endif
 #if defined(PTRACE_OLD_SETSIGINFO) || (defined(HAVE_DECL_PTRACE_OLD_SETSIGINFO) && HAVE_DECL_PTRACE_OLD_SETSIGINFO)
   XLAT(PTRACE_OLD_SETSIGINFO),
 #endif
-/* mips */
+
 #if defined(PTRACE_PEEKTEXT_3264) || (defined(HAVE_DECL_PTRACE_PEEKTEXT_3264) && HAVE_DECL_PTRACE_PEEKTEXT_3264)
   XLAT(PTRACE_PEEKTEXT_3264),
 #endif
@@ -183,7 +183,7 @@
 #if defined(PTRACE_SET_WATCH_REGS) || (defined(HAVE_DECL_PTRACE_SET_WATCH_REGS) && HAVE_DECL_PTRACE_SET_WATCH_REGS)
   XLAT(PTRACE_SET_WATCH_REGS),
 #endif
-/* powerpc */
+
 #if defined(PTRACE_GETEVRREGS) || (defined(HAVE_DECL_PTRACE_GETEVRREGS) && HAVE_DECL_PTRACE_GETEVRREGS)
   XLAT(PTRACE_GETEVRREGS),
 #endif
@@ -211,7 +211,7 @@
 #if defined(PPC_PTRACE_DELHWDEBUG) || (defined(HAVE_DECL_PPC_PTRACE_DELHWDEBUG) && HAVE_DECL_PPC_PTRACE_DELHWDEBUG)
   XLAT(PPC_PTRACE_DELHWDEBUG),
 #endif
-/* s390 */
+
 #if defined(PTRACE_PEEKUSR_AREA) || (defined(HAVE_DECL_PTRACE_PEEKUSR_AREA) && HAVE_DECL_PTRACE_PEEKUSR_AREA)
   XLAT(PTRACE_PEEKUSR_AREA),
 #endif
@@ -248,14 +248,14 @@
 #if defined(PTRACE_TE_ABORT_RAND) || (defined(HAVE_DECL_PTRACE_TE_ABORT_RAND) && HAVE_DECL_PTRACE_TE_ABORT_RAND)
   XLAT(PTRACE_TE_ABORT_RAND),
 #endif
-/* sh */
+
 #if defined(PTRACE_GETDSPREGS) || (defined(HAVE_DECL_PTRACE_GETDSPREGS) && HAVE_DECL_PTRACE_GETDSPREGS)
   XLAT(PTRACE_GETDSPREGS),
 #endif
 #if defined(PTRACE_SETDSPREGS) || (defined(HAVE_DECL_PTRACE_SETDSPREGS) && HAVE_DECL_PTRACE_SETDSPREGS)
   XLAT(PTRACE_SETDSPREGS),
 #endif
-/* sparc */
+
 #if defined(PTRACE_SPARC_DETACH) || (defined(HAVE_DECL_PTRACE_SPARC_DETACH) && HAVE_DECL_PTRACE_SPARC_DETACH)
   XLAT(PTRACE_SPARC_DETACH),
 #endif
@@ -289,7 +289,7 @@
 #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),
 #endif
@@ -299,7 +299,7 @@
 #if defined(PTRACE_SYSEMU_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP) && HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP)
   XLAT(PTRACE_SYSEMU_SINGLESTEP),
 #endif
-/* xtensa */
+
 #if defined(PTRACE_GETXTREGS) || (defined(HAVE_DECL_PTRACE_GETXTREGS) && HAVE_DECL_PTRACE_GETXTREGS)
   XLAT(PTRACE_GETXTREGS),
 #endif
diff --git a/xlat/ptrace_events.h b/xlat/ptrace_events.h
index a466f10..a94c100 100644
--- a/xlat/ptrace_events.h
+++ b/xlat/ptrace_events.h
@@ -32,7 +32,7 @@
 #if defined(PTRACE_EVENT_STOP) || (defined(HAVE_DECL_PTRACE_EVENT_STOP) && HAVE_DECL_PTRACE_EVENT_STOP)
   XLAT(PTRACE_EVENT_STOP),
 #endif
-/* tile */
+
 #if defined(PTRACE_EVENT_MIGRATE) || (defined(HAVE_DECL_PTRACE_EVENT_MIGRATE) && HAVE_DECL_PTRACE_EVENT_MIGRATE)
   XLAT(PTRACE_EVENT_MIGRATE),
 #endif
diff --git a/xlat/ptrace_setoptions_flags.h b/xlat/ptrace_setoptions_flags.h
index 4eaca06..d9d14cb 100644
--- a/xlat/ptrace_setoptions_flags.h
+++ b/xlat/ptrace_setoptions_flags.h
@@ -38,7 +38,7 @@
 #if defined(PTRACE_O_SUSPEND_SECCOMP) || (defined(HAVE_DECL_PTRACE_O_SUSPEND_SECCOMP) && HAVE_DECL_PTRACE_O_SUSPEND_SECCOMP)
   XLAT(PTRACE_O_SUSPEND_SECCOMP),
 #endif
-/* tile */
+
 #if defined(PTRACE_O_TRACEMIGRATE) || (defined(HAVE_DECL_PTRACE_O_TRACEMIGRATE) && HAVE_DECL_PTRACE_O_TRACEMIGRATE)
   XLAT(PTRACE_O_TRACEMIGRATE),
 #endif
diff --git a/xlat/riscv_flush_icache_flags.h b/xlat/riscv_flush_icache_flags.h
new file mode 100644
index 0000000..b9a031c
--- /dev/null
+++ b/xlat/riscv_flush_icache_flags.h
@@ -0,0 +1,18 @@
+/* Generated by ./xlat/gen.sh from ./xlat/riscv_flush_icache_flags.in; do not edit. */
+#if !(defined(SYS_RISCV_FLUSH_ICACHE_LOCAL) || (defined(HAVE_DECL_SYS_RISCV_FLUSH_ICACHE_LOCAL) && HAVE_DECL_SYS_RISCV_FLUSH_ICACHE_LOCAL))
+# define SYS_RISCV_FLUSH_ICACHE_LOCAL 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat riscv_flush_icache_flags in mpers mode
+
+#else
+
+static
+const struct xlat riscv_flush_icache_flags[] = {
+ XLAT(SYS_RISCV_FLUSH_ICACHE_LOCAL),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/riscv_flush_icache_flags.in b/xlat/riscv_flush_icache_flags.in
new file mode 100644
index 0000000..173da07
--- /dev/null
+++ b/xlat/riscv_flush_icache_flags.in
@@ -0,0 +1 @@
+SYS_RISCV_FLUSH_ICACHE_LOCAL 1
diff --git a/xlat/s390_guarded_storage_commands.h b/xlat/s390_guarded_storage_commands.h
new file mode 100644
index 0000000..d2d0a36
--- /dev/null
+++ b/xlat/s390_guarded_storage_commands.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/s390_guarded_storage_commands.in; do not edit. */
+#if !(defined(GS_ENABLE) || (defined(HAVE_DECL_GS_ENABLE) && HAVE_DECL_GS_ENABLE))
+# define GS_ENABLE 0
+#endif
+#if !(defined(GS_DISABLE) || (defined(HAVE_DECL_GS_DISABLE) && HAVE_DECL_GS_DISABLE))
+# define GS_DISABLE 1
+#endif
+#if !(defined(GS_SET_BC_CB) || (defined(HAVE_DECL_GS_SET_BC_CB) && HAVE_DECL_GS_SET_BC_CB))
+# define GS_SET_BC_CB 2
+#endif
+#if !(defined(GS_CLEAR_BC_CB) || (defined(HAVE_DECL_GS_CLEAR_BC_CB) && HAVE_DECL_GS_CLEAR_BC_CB))
+# define GS_CLEAR_BC_CB 3
+#endif
+#if !(defined(GS_BROADCAST) || (defined(HAVE_DECL_GS_BROADCAST) && HAVE_DECL_GS_BROADCAST))
+# define GS_BROADCAST 4
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat s390_guarded_storage_commands in mpers mode
+
+#else
+
+static
+const struct xlat s390_guarded_storage_commands[] = {
+ XLAT(GS_ENABLE),
+ XLAT(GS_DISABLE),
+ XLAT(GS_SET_BC_CB),
+ XLAT(GS_CLEAR_BC_CB),
+ XLAT(GS_BROADCAST),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/s390_guarded_storage_commands.in b/xlat/s390_guarded_storage_commands.in
new file mode 100644
index 0000000..410e33e
--- /dev/null
+++ b/xlat/s390_guarded_storage_commands.in
@@ -0,0 +1,5 @@
+GS_ENABLE	0
+GS_DISABLE	1
+GS_SET_BC_CB	2
+GS_CLEAR_BC_CB	3
+GS_BROADCAST	4
diff --git a/xlat/s390_runtime_instr_commands.h b/xlat/s390_runtime_instr_commands.h
new file mode 100644
index 0000000..5d4aefd
--- /dev/null
+++ b/xlat/s390_runtime_instr_commands.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/s390_runtime_instr_commands.in; do not edit. */
+#if !(defined(S390_RUNTIME_INSTR_START) || (defined(HAVE_DECL_S390_RUNTIME_INSTR_START) && HAVE_DECL_S390_RUNTIME_INSTR_START))
+# define S390_RUNTIME_INSTR_START 0x1
+#endif
+#if !(defined(S390_RUNTIME_INSTR_STOP) || (defined(HAVE_DECL_S390_RUNTIME_INSTR_STOP) && HAVE_DECL_S390_RUNTIME_INSTR_STOP))
+# define S390_RUNTIME_INSTR_STOP 0x2
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat s390_runtime_instr_commands in mpers mode
+
+#else
+
+static
+const struct xlat s390_runtime_instr_commands[] = {
+ XLAT(S390_RUNTIME_INSTR_START),
+ XLAT(S390_RUNTIME_INSTR_STOP),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/s390_runtime_instr_commands.in b/xlat/s390_runtime_instr_commands.in
new file mode 100644
index 0000000..395afc4
--- /dev/null
+++ b/xlat/s390_runtime_instr_commands.in
@@ -0,0 +1,2 @@
+S390_RUNTIME_INSTR_START	0x1
+S390_RUNTIME_INSTR_STOP		0x2
diff --git a/xlat/s390_sthyi_function_codes.h b/xlat/s390_sthyi_function_codes.h
new file mode 100644
index 0000000..d82b93c
--- /dev/null
+++ b/xlat/s390_sthyi_function_codes.h
@@ -0,0 +1,18 @@
+/* Generated by ./xlat/gen.sh from ./xlat/s390_sthyi_function_codes.in; do not edit. */
+#if !(defined(STHYI_FC_CP_IFL_CAP) || (defined(HAVE_DECL_STHYI_FC_CP_IFL_CAP) && HAVE_DECL_STHYI_FC_CP_IFL_CAP))
+# define STHYI_FC_CP_IFL_CAP 0
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat s390_sthyi_function_codes in mpers mode
+
+#else
+
+static
+const struct xlat s390_sthyi_function_codes[] = {
+ XLAT(STHYI_FC_CP_IFL_CAP),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/s390_sthyi_function_codes.in b/xlat/s390_sthyi_function_codes.in
new file mode 100644
index 0000000..380cd7f
--- /dev/null
+++ b/xlat/s390_sthyi_function_codes.in
@@ -0,0 +1 @@
+STHYI_FC_CP_IFL_CAP 0
diff --git a/xlat/shm_flags.h b/xlat/shm_flags.h
index 79e5407..5919153 100644
--- a/xlat/shm_flags.h
+++ b/xlat/shm_flags.h
@@ -1,4 +1,7 @@
 /* Generated by ./xlat/gen.sh from ./xlat/shm_flags.in; do not edit. */
+#if !(defined(SHM_EXEC) || (defined(HAVE_DECL_SHM_EXEC) && HAVE_DECL_SHM_EXEC))
+# define SHM_EXEC 0100000
+#endif
 
 #ifdef IN_MPERS
 
@@ -8,15 +11,16 @@
 
 static
 const struct xlat shm_flags[] = {
-#if defined(SHM_REMAP) || (defined(HAVE_DECL_SHM_REMAP) && HAVE_DECL_SHM_REMAP)
-  XLAT(SHM_REMAP),
-#endif
 #if defined(SHM_RDONLY) || (defined(HAVE_DECL_SHM_RDONLY) && HAVE_DECL_SHM_RDONLY)
   XLAT(SHM_RDONLY),
 #endif
 #if defined(SHM_RND) || (defined(HAVE_DECL_SHM_RND) && HAVE_DECL_SHM_RND)
   XLAT(SHM_RND),
 #endif
+#if defined(SHM_REMAP) || (defined(HAVE_DECL_SHM_REMAP) && HAVE_DECL_SHM_REMAP)
+  XLAT(SHM_REMAP),
+#endif
+ XLAT(SHM_EXEC),
  XLAT_END
 };
 
diff --git a/xlat/shm_flags.in b/xlat/shm_flags.in
index a620634..ef39382 100644
--- a/xlat/shm_flags.in
+++ b/xlat/shm_flags.in
@@ -1,3 +1,4 @@
-SHM_REMAP
 SHM_RDONLY
 SHM_RND
+SHM_REMAP
+SHM_EXEC	0100000
diff --git a/xlat/shm_resource_flags.h b/xlat/shm_resource_flags.h
index b216b45..11caf5a 100644
--- a/xlat/shm_resource_flags.h
+++ b/xlat/shm_resource_flags.h
@@ -17,6 +17,9 @@
 #if defined(SHM_HUGETLB) || (defined(HAVE_DECL_SHM_HUGETLB) && HAVE_DECL_SHM_HUGETLB)
   XLAT(SHM_HUGETLB),
 #endif
+#if defined(SHM_NORESERVE) || (defined(HAVE_DECL_SHM_NORESERVE) && HAVE_DECL_SHM_NORESERVE)
+  XLAT(SHM_NORESERVE),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/shm_resource_flags.in b/xlat/shm_resource_flags.in
index f3fc0dc..1b07687 100644
--- a/xlat/shm_resource_flags.in
+++ b/xlat/shm_resource_flags.in
@@ -1,3 +1,4 @@
 IPC_CREAT
 IPC_EXCL
 SHM_HUGETLB
+SHM_NORESERVE
diff --git a/xlat/shmctl_flags.h b/xlat/shmctl_flags.h
index a5e9f1b..eac0c1d 100644
--- a/xlat/shmctl_flags.h
+++ b/xlat/shmctl_flags.h
@@ -1,10 +1,4 @@
 /* Generated by ./xlat/gen.sh from ./xlat/shmctl_flags.in; do not edit. */
-#if !(defined(SHM_STAT) || (defined(HAVE_DECL_SHM_STAT) && HAVE_DECL_SHM_STAT))
-# define SHM_STAT 13
-#endif
-#if !(defined(SHM_INFO) || (defined(HAVE_DECL_SHM_INFO) && HAVE_DECL_SHM_INFO))
-# define SHM_INFO 14
-#endif
 
 #ifdef IN_MPERS
 
@@ -28,14 +22,18 @@
 #if defined(IPC_INFO) || (defined(HAVE_DECL_IPC_INFO) && HAVE_DECL_IPC_INFO)
   XLAT(IPC_INFO),
 #endif
- XLAT(SHM_STAT),
- XLAT(SHM_INFO),
 #if defined(SHM_LOCK) || (defined(HAVE_DECL_SHM_LOCK) && HAVE_DECL_SHM_LOCK)
   XLAT(SHM_LOCK),
 #endif
 #if defined(SHM_UNLOCK) || (defined(HAVE_DECL_SHM_UNLOCK) && HAVE_DECL_SHM_UNLOCK)
   XLAT(SHM_UNLOCK),
 #endif
+#if defined(SHM_STAT) || (defined(HAVE_DECL_SHM_STAT) && HAVE_DECL_SHM_STAT)
+  XLAT(SHM_STAT),
+#endif
+#if defined(SHM_INFO) || (defined(HAVE_DECL_SHM_INFO) && HAVE_DECL_SHM_INFO)
+  XLAT(SHM_INFO),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/shmctl_flags.in b/xlat/shmctl_flags.in
index 08908bb..f22e793 100644
--- a/xlat/shmctl_flags.in
+++ b/xlat/shmctl_flags.in
@@ -2,7 +2,7 @@
 IPC_SET
 IPC_STAT
 IPC_INFO
-SHM_STAT 13
-SHM_INFO 14
 SHM_LOCK
 SHM_UNLOCK
+SHM_STAT
+SHM_INFO
diff --git a/xlat/sockipv6options.h b/xlat/sockipv6options.h
index f3fa4cc..4309089 100644
--- a/xlat/sockipv6options.h
+++ b/xlat/sockipv6options.h
@@ -191,6 +191,9 @@
 #if defined(IPV6_RECVFRAGSIZE) || (defined(HAVE_DECL_IPV6_RECVFRAGSIZE) && HAVE_DECL_IPV6_RECVFRAGSIZE)
   XLAT(IPV6_RECVFRAGSIZE),
 #endif
+#if defined(IPV6_FREEBIND) || (defined(HAVE_DECL_IPV6_FREEBIND) && HAVE_DECL_IPV6_FREEBIND)
+  XLAT(IPV6_FREEBIND),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/sockipv6options.in b/xlat/sockipv6options.in
index 76b5e8b..4f23d19 100644
--- a/xlat/sockipv6options.in
+++ b/xlat/sockipv6options.in
@@ -59,3 +59,4 @@
 IPV6_TRANSPARENT
 IPV6_UNICAST_IF
 IPV6_RECVFRAGSIZE
+IPV6_FREEBIND
diff --git a/xlat/socknetlinkoptions.h b/xlat/socknetlinkoptions.h
new file mode 100644
index 0000000..e101213
--- /dev/null
+++ b/xlat/socknetlinkoptions.h
@@ -0,0 +1,58 @@
+/* Generated by ./xlat/gen.sh from ./xlat/socknetlinkoptions.in; do not edit. */
+#if !(defined(NETLINK_ADD_MEMBERSHIP) || (defined(HAVE_DECL_NETLINK_ADD_MEMBERSHIP) && HAVE_DECL_NETLINK_ADD_MEMBERSHIP))
+# define NETLINK_ADD_MEMBERSHIP 1
+#endif
+#if !(defined(NETLINK_DROP_MEMBERSHIP) || (defined(HAVE_DECL_NETLINK_DROP_MEMBERSHIP) && HAVE_DECL_NETLINK_DROP_MEMBERSHIP))
+# define NETLINK_DROP_MEMBERSHIP 2
+#endif
+#if !(defined(NETLINK_PKTINFO) || (defined(HAVE_DECL_NETLINK_PKTINFO) && HAVE_DECL_NETLINK_PKTINFO))
+# define NETLINK_PKTINFO 3
+#endif
+#if !(defined(NETLINK_BROADCAST_ERROR) || (defined(HAVE_DECL_NETLINK_BROADCAST_ERROR) && HAVE_DECL_NETLINK_BROADCAST_ERROR))
+# define NETLINK_BROADCAST_ERROR 4
+#endif
+#if !(defined(NETLINK_NO_ENOBUFS) || (defined(HAVE_DECL_NETLINK_NO_ENOBUFS) && HAVE_DECL_NETLINK_NO_ENOBUFS))
+# define NETLINK_NO_ENOBUFS 5
+#endif
+#if !(defined(NETLINK_RX_RING) || (defined(HAVE_DECL_NETLINK_RX_RING) && HAVE_DECL_NETLINK_RX_RING))
+# define NETLINK_RX_RING 6
+#endif
+#if !(defined(NETLINK_TX_RING) || (defined(HAVE_DECL_NETLINK_TX_RING) && HAVE_DECL_NETLINK_TX_RING))
+# define NETLINK_TX_RING 7
+#endif
+#if !(defined(NETLINK_LISTEN_ALL_NSID) || (defined(HAVE_DECL_NETLINK_LISTEN_ALL_NSID) && HAVE_DECL_NETLINK_LISTEN_ALL_NSID))
+# define NETLINK_LISTEN_ALL_NSID 8
+#endif
+#if !(defined(NETLINK_LIST_MEMBERSHIPS) || (defined(HAVE_DECL_NETLINK_LIST_MEMBERSHIPS) && HAVE_DECL_NETLINK_LIST_MEMBERSHIPS))
+# define NETLINK_LIST_MEMBERSHIPS 9
+#endif
+#if !(defined(NETLINK_CAP_ACK) || (defined(HAVE_DECL_NETLINK_CAP_ACK) && HAVE_DECL_NETLINK_CAP_ACK))
+# define NETLINK_CAP_ACK 10
+#endif
+#if !(defined(NETLINK_EXT_ACK) || (defined(HAVE_DECL_NETLINK_EXT_ACK) && HAVE_DECL_NETLINK_EXT_ACK))
+# define NETLINK_EXT_ACK 11
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat socknetlinkoptions in mpers mode
+
+#else
+
+static
+const struct xlat socknetlinkoptions[] = {
+ XLAT(NETLINK_ADD_MEMBERSHIP),
+ XLAT(NETLINK_DROP_MEMBERSHIP),
+ XLAT(NETLINK_PKTINFO),
+ XLAT(NETLINK_BROADCAST_ERROR),
+ XLAT(NETLINK_NO_ENOBUFS),
+ XLAT(NETLINK_RX_RING),
+ XLAT(NETLINK_TX_RING),
+ XLAT(NETLINK_LISTEN_ALL_NSID),
+ XLAT(NETLINK_LIST_MEMBERSHIPS),
+ XLAT(NETLINK_CAP_ACK),
+ XLAT(NETLINK_EXT_ACK),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/socknetlinkoptions.in b/xlat/socknetlinkoptions.in
new file mode 100644
index 0000000..033ffd4
--- /dev/null
+++ b/xlat/socknetlinkoptions.in
@@ -0,0 +1,11 @@
+NETLINK_ADD_MEMBERSHIP		1
+NETLINK_DROP_MEMBERSHIP		2
+NETLINK_PKTINFO			3
+NETLINK_BROADCAST_ERROR		4
+NETLINK_NO_ENOBUFS		5
+NETLINK_RX_RING			6
+NETLINK_TX_RING			7
+NETLINK_LISTEN_ALL_NSID		8
+NETLINK_LIST_MEMBERSHIPS	9
+NETLINK_CAP_ACK			10
+NETLINK_EXT_ACK			11
diff --git a/xlat/socksctpoptions.h b/xlat/socksctpoptions.h
index 886d53d..984718d 100644
--- a/xlat/socksctpoptions.h
+++ b/xlat/socksctpoptions.h
@@ -113,7 +113,7 @@
 #if defined(SCTP_DEFAULT_SNDINFO) || (defined(HAVE_DECL_SCTP_DEFAULT_SNDINFO) && HAVE_DECL_SCTP_DEFAULT_SNDINFO)
   XLAT(SCTP_DEFAULT_SNDINFO),
 #endif
-/* linux specific things */
+
 #if defined(SCTP_SOCKOPT_BINDX_ADD) || (defined(HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD) && HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD)
   XLAT(SCTP_SOCKOPT_BINDX_ADD),
 #endif
diff --git a/xlat/socktcpoptions.h b/xlat/socktcpoptions.h
index 836f3e2..55d6fd0 100644
--- a/xlat/socktcpoptions.h
+++ b/xlat/socktcpoptions.h
@@ -104,6 +104,12 @@
 #if defined(TCP_MD5SIG_EXT) || (defined(HAVE_DECL_TCP_MD5SIG_EXT) && HAVE_DECL_TCP_MD5SIG_EXT)
   XLAT(TCP_MD5SIG_EXT),
 #endif
+#if defined(TCP_FASTOPEN_KEY) || (defined(HAVE_DECL_TCP_FASTOPEN_KEY) && HAVE_DECL_TCP_FASTOPEN_KEY)
+  XLAT(TCP_FASTOPEN_KEY),
+#endif
+#if defined(TCP_FASTOPEN_NO_COOKIE) || (defined(HAVE_DECL_TCP_FASTOPEN_NO_COOKIE) && HAVE_DECL_TCP_FASTOPEN_NO_COOKIE)
+  XLAT(TCP_FASTOPEN_NO_COOKIE),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/socktcpoptions.in b/xlat/socktcpoptions.in
index 747b184..44f1a2a 100644
--- a/xlat/socktcpoptions.in
+++ b/xlat/socktcpoptions.in
@@ -30,3 +30,5 @@
 TCP_FASTOPEN_CONNECT
 TCP_ULP
 TCP_MD5SIG_EXT
+TCP_FASTOPEN_KEY
+TCP_FASTOPEN_NO_COOKIE
diff --git a/xlat/tcp_state_flags.h b/xlat/tcp_state_flags.h
index 2062655..34c8140 100644
--- a/xlat/tcp_state_flags.h
+++ b/xlat/tcp_state_flags.h
@@ -3,7 +3,7 @@
 #ifndef IN_MPERS
 
 const struct xlat tcp_state_flags[] = {
-/* this file should be included after xlat/tcp_states.h */
+
 #if defined(TCP_ESTABLISHED) || (defined(HAVE_DECL_TCP_ESTABLISHED) && HAVE_DECL_TCP_ESTABLISHED)
   XLAT_PAIR(1ULL<<TCP_ESTABLISHED, "1<<TCP_ESTABLISHED"),
 #endif
diff --git a/xlat/timerfdflags.h b/xlat/timerfdflags.h
index 2483df8..571f7ec 100644
--- a/xlat/timerfdflags.h
+++ b/xlat/timerfdflags.h
@@ -22,7 +22,7 @@
 
 static
 const struct xlat timerfdflags[] = {
-/* The Linux userspace headers didn't export these for a long time. */
+
 
  XLAT(TFD_TIMER_ABSTIME),
  XLAT(TFD_TIMER_CANCEL_ON_SET),
diff --git a/xlat/v4l2_control_ids.h b/xlat/v4l2_control_ids.h
index 2f740db..ae371f8 100644
--- a/xlat/v4l2_control_ids.h
+++ b/xlat/v4l2_control_ids.h
@@ -140,7 +140,7 @@
 #if defined(V4L2_CID_ALPHA_COMPONENT) || (defined(HAVE_DECL_V4L2_CID_ALPHA_COMPONENT) && HAVE_DECL_V4L2_CID_ALPHA_COMPONENT)
   XLAT(V4L2_CID_ALPHA_COMPONENT),
 #endif
-/*  Camera class control IDs */
+
 #if defined(V4L2_CID_EXPOSURE_AUTO) || (defined(HAVE_DECL_V4L2_CID_EXPOSURE_AUTO) && HAVE_DECL_V4L2_CID_EXPOSURE_AUTO)
   XLAT(V4L2_CID_EXPOSURE_AUTO),
 #endif
diff --git a/xmalloc.c b/xmalloc.c
index 8ec475a..4a318b6 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -89,6 +89,28 @@
 	return p;
 }
 
+void *
+xgrowarray(void *const ptr, size_t *const nmemb, const size_t memb_size)
+{
+	/* this is the same value as glibc DEFAULT_MXFAST */
+	enum { DEFAULT_ALLOC_SIZE = 64 * SIZEOF_LONG / 4 };
+
+	size_t grow_memb;
+
+	if (ptr == NULL)
+		grow_memb = *nmemb ? 0 :
+			(DEFAULT_ALLOC_SIZE + memb_size - 1) / memb_size;
+	else
+		grow_memb = (*nmemb >> 1) + 1;
+
+	if ((*nmemb + grow_memb) < *nmemb)
+		die_out_of_memory();
+
+	*nmemb += grow_memb;
+
+	return xreallocarray(ptr, *nmemb, memb_size);
+}
+
 char *
 xstrdup(const char *str)
 {
diff --git a/xmalloc.h b/xmalloc.h
index d1feeb9..43caa30 100644
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -36,12 +36,32 @@
 #include <stddef.h>
 #include "gcc_compat.h"
 
+#define xcalloc strace_calloc
+#define xmalloc strace_malloc
+
 void *xcalloc(size_t nmemb, size_t size)
 	ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((1, 2));
 void *xmalloc(size_t size) ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((1));
 void *xreallocarray(void *ptr, size_t nmemb, size_t size)
 	ATTRIBUTE_ALLOC_SIZE((2, 3));
 
+/**
+ * Utility function for the simplification of managing various dynamic arrays.
+ * Knows better how to resize arrays. Dies if there's no enough memory.
+ *
+ * @param[in]      ptr       Pointer to the array to be resized. If ptr is NULL,
+ *                           new array is allocated.
+ * @param[in, out] nmemb     Pointer to the current member count. If ptr is
+ *                           NULL, it specifies number of members in the newly
+ *                           created array. If ptr is NULL and nmemb is 0,
+ *                           number of members in the new array is decided by
+ *                           the function. Member count is updated by the
+ *                           function to the new value.
+ * @param[in]      memb_size Size of array member in bytes.
+ * @return                   Pointer to the (re)allocated array.
+ */
+void *xgrowarray(void *ptr, size_t *nmemb, size_t memb_size);
+
 /*
  * Note that the following two functions return NULL when NULL is specified
  * and not when allocation is failed, since, as the "x" prefix implies,
diff --git a/xstring.h b/xstring.h
new file mode 100644
index 0000000..16f9b17
--- /dev/null
+++ b/xstring.h
@@ -0,0 +1,106 @@
+#ifndef STRACE_XSTRING_H
+#define STRACE_XSTRING_H
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include "error_prints.h"
+#include "gcc_compat.h"
+
+/**
+ * Print to static buffer and die on (really unexpected) errors and overflows.
+ * Shouldn't be used directly; please refer to helper macros xsnprintf and
+ * xsprint instead.
+ *
+ * @param str    String buffer to print into.
+ * @param size   Size of the string buffer in bytes.
+ * @param func   Function name from which this function is called.
+ * @param argstr Stringified arguments (including format argument).
+ * @param format Format string.
+ * @param ...    Format arguments.
+ * @return       Number of characters printed, excluding terminating null byte
+ *               (the same as s(n)printf).
+ */
+static inline int ATTRIBUTE_FORMAT((printf, 5, 6))
+xsnprintf_(char *str, size_t size, const char *func, const char *argstr,
+	   const char *format, ...)
+{
+	int ret;
+	va_list ap;
+
+	va_start(ap, format);
+	ret = vsnprintf(str, size, format, ap);
+	va_end(ap);
+
+	if (ret < 0 || (unsigned int) ret >= size)
+		error_msg_and_die("%s: got unexpected return value %d for "
+				  "snprintf(buf, %zu, %s)",
+				  func, ret, size, argstr);
+
+	return ret;
+}
+
+/**
+ * snprintf that dies on (really unexpected) errors and overflows.
+ *
+ * @param str_  String buffer to print into.
+ * @param size_ Size of the string buffer in bytes.
+ * @param fmt_  Format string.
+ * @param ...   Format arguments.
+ */
+#define xsnprintf(str_, size_, fmt_, ...) \
+	xsnprintf_((str_), (size_), __func__, #fmt_ ", " #__VA_ARGS__, \
+		   (fmt_), __VA_ARGS__)
+
+/**
+ * Print to a character array buffer and die on (really unexpected) errors and
+ * overflows.  Buffer size is obtained with sizeof().
+ *
+ * @param str_  Character array buffer to print into.
+ * @param fmt_  Format string.
+ * @param ...   Format arguments.
+ */
+#define xsprintf(str_, fmt_, ...) \
+	xsnprintf((str_), sizeof(str_) + MUST_BE_ARRAY(str_), (fmt_), \
+		  __VA_ARGS__)
+
+static inline size_t
+get_pos_diff_(char *str, size_t size, char *pos, const char *func,
+	   const char *call)
+{
+	if ((str + size) < str)
+		error_msg_and_die("%s: string size overflow (%p+%zu) in %s",
+				  func, str, size, call);
+
+	if (pos > (str + size))
+		error_msg_and_die("%s: got position (%p) beyond string "
+				  "(%p+%zu) in %s",
+				  func, pos, str, size, call);
+
+	if (pos < str)
+		error_msg_and_die("%s: got position %p before string %p in %s",
+				  func, pos, str, call);
+
+	return pos - str;
+}
+
+/**
+ * Helper function for constructing string in a character array by appending
+ * new formatted parts.  Returns new position.  Fails on error or buffer
+ * overflow, in line with the rest of x* functions.  Obtains buffer size via
+ * sizeof(str_).
+ *
+ * @param str_  Character array buffer to print into.
+ * @param pos_  Current position.
+ * @param fmt_  Format string.
+ * @param ...   Format arguments.
+ * @return      New position.
+ */
+#define xappendstr(str_, pos_, fmt_, ...) \
+	(xsnprintf((pos_), sizeof(str_) + MUST_BE_ARRAY(str_) - \
+		   get_pos_diff_((str_), sizeof(str_), (pos_), __func__, \
+				 "xappendstr(" #str_ ", " #pos_ ", " #fmt_ ", " \
+				 #__VA_ARGS__ ")"), \
+		   (fmt_), ##__VA_ARGS__) + (pos_))
+
+#endif /* !STRACE_XSTRING_H */
